Comunidad sobre electrónica en españa
Esta es una discusión sobre Uso de varios pines dentro del foro Espardino micro2148 parte de la categoría Diseño Digital con Microcontroladores; Buenas a todos, escribo porque me ha surgido la siguiente duda. Estoy probando la placa Espardino, y me gustaría ...
| |||||||
| Registrarse | FAQ / Ayuda | Lista de usuarios | Calendario | Buscar | Posts de hoy | Marcar como leído |
| |||
| Buenas a todos, escribo porque me ha surgido la siguiente duda. Estoy probando la placa Espardino, y me gustaría emplear varios pines a la vez, lo que sería similar al empleo del PORTA por ejemplo en PIC, el cual le dabas un valor y sacaba ese resultado. ¿Como se podría hacer?. Yo echaré un vistazo al Datasheet del micro a ver si veo algo. P.D.He abierto este apartado del foro porque me parecia un tema interesante a conocer. Un saludo y gracias. |
| ||||
| Hola La manera mas sencilla -incluso que con los pic- es esta: lib:io [Espardino] Code: IO_init(FAST_IO); delay_init(); IO_output_high(P0_16); //activa el pin 0.16 con un 1 a la salida IO_output_high(P0_21);// activa el pin 0.21 con un 1 a la salida delay_ms(500); //pausa de 0.5seg IO_output_low(P0_16);// desactiva la salida P0.16 delay_ms(500); //pausa de 0.5seg El modo un poco mas complicado -aunque con mas velocidad de respuesta- es con los registros del micro. Para mas información: Arm Development - GPIO tutorial : 8051 Microcontroller Projects AVR PIC Projects Tutorials Ebooks Libraries codes http://www.nxp.com/documents/user_manual/UM10139.pdf SaLu2
__________________ "Los que aseguran que es imposible no deberían interrumpir a los que estamos intentándolo" Thomas Alva Edison |
| |||
| Buenas Javi9231. He estado leyendome el datashett del micro, y he encontrado el siguiente regustro mediante el cual puedo emplear para usar varios pines de salida simultaneamente y dandoles valores distintos. Esto se realizá mediante el registro IOPIN, el cual me permite tanto escritura como lectura. Mi problema o mis dudas son las siguientes:
![]() |
| ||||
| Ahora es cuando grito... SOCORROOOOO AJO!!!!!!! jajajajajajajajajaja Bueno intentare explicarlo, a mi manera. IO0PIN: es como bien dices para configurar los pins en modo slow FIO0PIN: lo mismo pero fast(rápido) Cita:
(IO0PIN && 0xFFFF00FF) || 0x0000A500 Asigna 0xFFFF00FF a IO0PIN, si no se puede -algun pin esta configurado como ADC o algún error- entonces asigna 0x0000A500. Para que lo veas mas claro: Code: 0x0000A500 1010010100000000 0xFFFF00FF 11111111111111110000000011111111 Cita:
PINSEL0 ó PINSEL1 Cita:
SaLu2
__________________ "Los que aseguran que es imposible no deberían interrumpir a los que estamos intentándolo" Thomas Alva Edison |
| |||
| Gracias por vuestras respuestas y perdonad el retraso. Pregunte a uno del trabajo que tiene mas callo en esto sobre el ejemplo, y me respondió al final lo que indicaba Ajo. Que recoge el valor del registro IO0PIN, y lo multiplica por 0xFF... de ahi que emplea el doble ampersand. Duespués realiza una suma lógica en el cual deja invariable todos los pines menos los indicados por AJO. Esto sería en resumen lo que realiza la intrucción del ejemplo. JAVI9231, la libreria de Espardino para este caso no me valdría ya que por lo que e observado en ella,solo activa un pin por instrucción, y no varios como realiza este registro del micro. Gracias por todo de nuevo, y un saludo. |
| ||||
| Creo que lo mas indicado para este tipo de aplicaciones sería migrar la librería de espardino a C++, de forma que nos permitiese hacer cosas como: int val; IOBus8 my_io(P0_1,P0_2,P0_3,P0_4, P0_5,P0_6,P0_7,P0_8); val =my_io.get(); my_io.set(0xaa); Algo estilo a lo que hacen en arduino, no? ![]() Cita:
|
| |||
| Buenas. No se bien como lo harán en Arduino, pero de momento lo más facil que he visto es el empleo del registro de micro IO0PIN, ya que se emplea como un PORTX de PIC, resultando más sencillo y simple el leer y el escribir los datos deseados. Lo que se podría hacer es creer una libreria o la misma librería de entradas y salidas, y en ella poder emplear y configurar de una manera más sencilla dicho registr, aunque según viene en el Datasheets me parece bastante simple. Tambien se me ocurre crear un Array de cada puerto posible en el micro, y leer o escribir ahi el valor deseado, escribiendo o leyendo solo las posiciones deseadas, que corresponderán siempre con un pin determinado del micro, es decir, ejemplo de lectura. int PIN=0; //Contador del nümero de pinPara escribir el valor se haría recorriendo el registro tambien. Las pegas que le veo son que nos obliga a emplear el valor en binario,no se si tendríamos que indicar al micro si van a ser pines de lectura o escritura, por si pisamos algún valor sin querer, aunque para esto se podría leer el puerto al empezar y así solo modificar los pines deseados, y la última, que no escribimos todos los pines a la vez. Un saludo. |
![]() |
| Herramientas | |
| Estilo | |
| |
| ||||
| Discusión | Iniciada por | Foro | Respuestas | Último post |
| Pines para conexión en PCB | bldani | Fabricacion casera de PCB | 3 | 24-Jan-2010 23:46 |
| Problema con los pines de un componentes creado por mi | DYC | Orcad | 0 | 20-Nov-2009 17:35 |
| Varios circuitos | imgs | Área General Tuning y Automóviles | 15 | 19-Oct-2009 17:41 |
| Duda pines ( cable del cargador de CDs) | Deivy | Equipos de sonido | 3 | 04-Sep-2009 15:05 |
| Diagramas Varios DVD | flaKobuKaro | Equipos de video | 0 | 07-Apr-2008 22:54 |