Foros Electrónica - Comunidad sobre electrónica en España

foros electrónica .es

Comunidad sobre electrónica en españa

 

Uso de varios pines

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 ...


Regresar   Foros Electrónica - Comunidad sobre electrónica en España > Diseño Digital con Microcontroladores > Espardino micro2148

Registrarse FAQ / Ayuda Lista de usuarios Calendario Buscar Posts de hoy Marcar como leído

Publicidad para usuarios no registrados:
Responder

 

LinkBack Herramientas Estilo
  #1 (permalink)  
Antiguo 17-Mar-2010, 19:29
Junior Member
 
Registrado: March-2009
Posts: 26
JavierGP Lleva buen camino
Exclamation Uso de varios pines

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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #2 (permalink)  
Antiguo 20-Mar-2010, 12:23
Avatar de javi9231
Senior Member
 
Registrado: January-2009
Lugar: Murcia
Posts: 334
javi9231 Lleva buen camino
Predeterminado Re: Uso de varios pines

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
Esto a modo de ejemplo, activa las salidas P0.16 y P0.21. Esto dentro de un while o un for haría que la salida P0.16 estubiese activada/desactivada cada 0.5 seg.


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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #3 (permalink)  
Antiguo 29-Mar-2010, 19:47
Junior Member
 
Registrado: March-2009
Posts: 26
JavierGP Lleva buen camino
Predeterminado Re: Uso de varios pines

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:

  • En el ejemplo del manual viene la siguiente instrucción:
Code:
IO0PIN = (IO0PIN && 0xFFFF00FF) || 0x0000A500
No entiendo porque ha vuelto a poner otro IO0PIN dentro de la igualdad, y porque da dos opciones para IO0PIN.
  • ¿Si empleo dicha instrucción tengo que definir primero si son entradas o salidas?
  • ¿Hay algo parecido en las intrucciones de Espardino?
Un saludo y gracias por vuestra atención.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #4 (permalink)  
Antiguo 31-Mar-2010, 22:13
Avatar de javi9231
Senior Member
 
Registrado: January-2009
Lugar: Murcia
Posts: 334
javi9231 Lleva buen camino
Predeterminado Re: Uso de varios pines

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:
Originalmente publicado por JavierGP Ver post
  • En el ejemplo del manual viene la siguiente instrucción:
Code:
IO0PIN = (IO0PIN && 0xFFFF00FF) || 0x0000A500
No entiendo porque ha vuelto a poner otro IO0PIN dentro de la igualdad, y porque da dos opciones para IO0PIN.
[list]
Lo que hace con esta sentencia, creo que es lo siguiente:
(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:
Originalmente publicado por JavierGP Ver post
  • ¿Si empleo dicha instrucción tengo que definir primero si son entradas o salidas?
Por defecto los pins son GPIO, para cambiar la función del pin tienes que usar otro registro...
PINSEL0 ó PINSEL1

Cita:
Originalmente publicado por JavierGP Ver post
  • ¿Hay algo parecido en las intrucciones de Espardino?
Un saludo y gracias por vuestra atención.
Claro el ejemplo que te he puesto en el post anterior, ademas ahí un enlace a lib:io [Espardino]

SaLu2
__________________
"Los que aseguran que es imposible no deberían interrumpir a los que estamos intentándolo"
Thomas Alva Edison
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #5 (permalink)  
Antiguo 01-Apr-2010, 18:01
Avatar de ajo
ajo ajo está desconectado
Junior
 
Registrado: April-2007
Posts: 1,146
ajo Lleva buen camino
Predeterminado Re: Uso de varios pines

El ejemplo sería (mas bien):

Code:
IO0PIN = (IO0PIN & 0xFFFF00FF) | 0x0000A500
(Solo una barra, y solo un ampersand)

Como bien explicaba javi, lo que hace es asignar a IOPIN0, lo que ya tenía en la salida pero limpia los bits 8 a 15 (ese 00), y luego hace un OR lógico (activando los bits del A5 que también estánen el mismo trozo). El resultado lo escribe en la salida de los pines. Es decir, en los pines P0.8 - P0.15

Si estuvieras configurando (al principio de tu main) el modo de IO en fast
IO_init(FAST_IO)[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif] deberás utilizar FIOPIN0 en vez de IOPIN0.


[/font]
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #6 (permalink)  
Antiguo 04-Apr-2010, 21:38
Junior Member
 
Registrado: March-2009
Posts: 26
JavierGP Lleva buen camino
Predeterminado Re: Uso de varios pines

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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #7 (permalink)  
Antiguo 05-Apr-2010, 00:52
Avatar de ajo
ajo ajo está desconectado
Junior
 
Registrado: April-2007
Posts: 1,146
ajo Lleva buen camino
Predeterminado Re: Uso de varios pines

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:
Originalmente publicado por JavierGP Ver post
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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
  #8 (permalink)  
Antiguo 05-Apr-2010, 20:17
Junior Member
 
Registrado: March-2009
Posts: 26
JavierGP Lleva buen camino
Red face Re: Uso de varios pines

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 pin
PORT0 [29]; //Numero de pines en puerto 0

for(PIN=0; PIN<=PORT0; PIN++)
{
PORT0 [PIN]=IO_input(P0_PIN);
}
Para 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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Citar y responder
Responder

Herramientas
Estilo

 
Reglas del foro
No puedes publicar nuevos hilos
No puedes publicar respuestas
No puedes publicar archivos adjuntos
Tu no puedes editar tus posts

El código vB está activado
Emotíconos está activado
El código [IMG] está activado
El código HTML está desactivado
Trackbacks are activado
Pingbacks are activado
Refbacks are activado


Discusiones similares

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


Todas las horas son GMT +2. La hora es 21:21.


Powered by vBulletin® Latest version
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.
(c) 2007-2008 Foros electrónica