Autor Tema: [SOLUCIONADO]Dudas para conectar un expansor de puertos por i2c  (Leído 2524 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
[SOLUCIONADO]Dudas para conectar un expansor de puertos por i2c
« en: 24 de Marzo de 2014, 16:39:11 »
Hola a todos, estoy intentando hacer un teclado i2c con un expansor de puertos PCA9538, el driver al parecer funciona bien ya que monto todo el sistema (pic16f876a + pca9538) en proteus y este funciona.
cuando no me funciona es cuando paso ese esquema a una protoboard el teclado no actúa.
las duda que tengo son:
¿los pines del teclado se pueden conectar directamente a los pines del expansor o hay que ponerles una resistencia entre el pin de pca y el pin del pic?
otra duda que tengo es con la patilla 3 (RESET) del pca no sé si hay que ponerla directamente a masa para que funcione o a +5v
« Última modificación: 01 de Abril de 2014, 16:28:40 por Thulsa Doom »
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7865
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #1 en: 24 de Marzo de 2014, 18:30:02 »
Creo que si pones aquí el código y simulación a Proteus, recibirás mas ayuda...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #2 en: 24 de Marzo de 2014, 19:08:41 »

Pon el esquema y el código fuente.
Considera que deberias de tener un array de resistencias de pull-up o pull-down en las entradas (el PCA9554  las lleva internas), para que en ausencia de pulsaciones, las entradas no se queden en flotación, con un estado indeterminado que puede provocar un comportamiento anómalo del programa.


Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #3 en: 27 de Marzo de 2014, 07:20:35 »
 Hola a todos, he solucionado varias cosas que tenía mal en el código, ahora el expansor si que recibe las ordenes por el protocolo i2c pero tiene comportamientos erráticos.

Cuando le envío las ordenes de activar o desactivar pines, ósea como si estuviéramos encendiendo y apagando leds este se comporta como tiene que ser, pero cuando lo configuro para que detecte las teclas de un teclado y que se active la interrupción ahí es cuando hace cosas raras.

Se supone que el pin int tiene que estar en estado alto y cuando se detecte un cambio de estado en alguno de los pines del puerto, el pin int tiene que pasar a estado bajo, pues este aveces está en estado alto otras veces en estado bajo todo el rato y otras veces está oscilando y no para.

Los pines los configuro de la siguiente manera, el nible bajo de P0 a P3 lo pongo cono salida y el nible alto de P4 a P7 lo configuro como entrada, cómo el teclado que uso es 4x3 lo que le hago al último pin lo conecto a través de una resistencia de pull-up por si se colaran algún tipo de interferencias.

Pues en el puerto también observo comportamientos erráticos , aveces los pines del nibble bajo están a 1 otras no, e incluso el P0 está a 0 y el P1, P2 y P3 están a 1.

A veces el código funciona detectándome alguna tecla pulsada y otras veces no.

Cuando simulo el código en proteus, este funciona correctamente la única diferencia es que en proteus el componente no es el PCA9538 si no el PCA9554, lo único que hago es cambiar la dirección del esclavo y listo, por lo demás debería de funcionar ya que el funcionamiento es el mismo.

Voy a colgar el código completo ya echo en proyecto MPLAB + CCS a ver que consejos me podéis dar

https://mega.co.nz/#!IdcTxZ6Q!DdrwZ4KCV0QvgNJEaOL1dbik9hfSWqhW4cRrj9tBzPo

Lo típico, está subido a mega, lo descomprimen y todo el proyecto está dentro
« Última modificación: 01 de Abril de 2014, 16:28:22 por Thulsa Doom »
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #4 en: 29 de Marzo de 2014, 14:48:35 »
¿nadie me puede echar una mano?, si este asunto no va en esta sección, ruego que lo muevan.
gracias
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3173
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #5 en: 29 de Marzo de 2014, 19:50:32 »
Por lo que veo el PCA9538 ¿es el que usas fisicamente? tiene un terminal de reset que el otro no lo tiene, quizas lo has dejado al aire y te hace cosas raras, lo tendras que poner a masa o a vcc, segun sea su configuración, quizas sea ese el problema.

Saludos!
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #6 en: 29 de Marzo de 2014, 19:57:24 »
Has puesto el pull-up en el pin INT que te indica el datasheet? Tambien como dice pepe, debes poner el pin reset a VCC

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #7 en: 30 de Marzo de 2014, 07:56:26 »
Si, las resistencias de pull-up están puestas, tanto en el pin INT como en el pin SDA, SCL y el pin RESET, la verdad que no he probado colocándolo a masa porque creí leer que va a Vcc pero todo es probar.
pruebo y digo algo
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #8 en: 31 de Marzo de 2014, 14:45:00 »
Hola a todos de nuevo, he probado el pin REST a masa y no va así, si lo pongo a masa la configuración se borra.
He estado haciendo pruebas y mirando las señales en el osciloscopio y es como si se le colaran ruidos en los pines del teclado. Lo que observo es que el pin INT está en modo alto y bajo como si de una señal PWM se tratara, cuando pulso una tecla el pin INT se va a 0 y aveces se marca la tecla pulsada en el display, suelto la tecla y el pin INT vuelve a +5 pero no constante si no como antes con altos y bajos, de vez en cuando al pulsar una tecla se va a 0 y se tira muuucho tiempo en ese estado.
Compruebo con el osciloscopio los pines del teclado y están cambiando el estado de modo errático.
Muevo el flexible que le he puesto entre el teclado y los pines del PCA y veo que cambian los estados de los pines, con tan solo mover el flex con la mano, el flex está hecho con cable IDE de los disco duros de un PC

Pienso.... esto es ruido que se le está metiendo por los pines del PCA, entonces le pongo unas resistencias de pull-up de 10k en los 3 pines de mayor peso ya que en la configuración del PCA están puestos a 1, pero no funciona no hace nada al pulsar las teclas. Le he puesto condensadores de 1uf entre los pines y masa por si fuera una alta frecuencia la que estuviera fastidiando pero nada.

¿Algún consejo al respecto?
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #9 en: 31 de Marzo de 2014, 15:21:58 »
eso se llama efecto rebote, al pulsar un pulsador se producen oscilaciones hasta que se estabiliza, lo normal es poner un delay y verificar el estado del puerto, pero desconozco como podrias hacerlo con ese expansor. Prueba a poner un condensador en la entrada del puerto de 100nF por ejemplo a ver si desaparece esas oscilaciones.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7865
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #10 en: 31 de Marzo de 2014, 15:47:16 »
No tienes resistencias de pullup en los pines de entrada del expansor??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 741
    • https://electronicaaficion.wordpress.com/
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #11 en: 31 de Marzo de 2014, 16:31:30 »
Perdona al igual estoy equivocado pero creo que no es cosa del efecto rebote ya que el PCA solo envía el dato cuando se pulsa un botón físico para que el pin de interrupción se active y entre el programa de reconocimiento de tecla ya que lo tengo en la interrupción de RB0.
Sin pulsar nada desde el principio que se empieza a ejecutar el programa, el pin INT siempre se está yendo a 0 y a 1 todo el rato.
Observo que cuando pulso el botón el INT si se va a 0 (no siempre otras veces se queda en 0 y de ahí no sale) pero cuando lo suelto siempre está 1...0...1...0 todo el rato y en las patillas del teclado con el PCA también están como activándose solas, no sé es raro se comporta muy errático no hace lo mismo siempre incluso la activación del pin int no es uniforme, la frecuencia con que se activa cambia y si toco los cables del teclado con los dedos y los muevo también cambia la frecuencia según mueva los cables de un lado para el otro

No tienes resistencias de pullup en los pines de entrada del expansor??

les puse unas pero no tiraba no hacía nada, al igual no las puse bien, puede que las pusiera en los pines de entrada, puede que tenga que ser en los de salida que están a 1
« Última modificación: 31 de Marzo de 2014, 16:34:04 por Thulsa Doom »
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #12 en: 31 de Marzo de 2014, 17:14:24 »


En el aplicativo del datasheet, lo tienes bien claro, resistencias de pull-up en los puertos que configures como entradas, en las lineas I2C, INT y Reset.
Tu problema radica desde un principio, en que no has puesto resistencias de pull-up en las entradas, por eso toman valores indeterminados cuando están en flotación (teclas sin pulsar en un teclado), lo que a su vez dispara aleatoriamente el pin de interrupción INT.

Además, tal como indica el datasheet, las entradas no utilizadas deben de conectarse con resistencias de pull-up de 100K, supongo que para evitar que se dispare al azar la patilla INT.




« Última modificación: 31 de Marzo de 2014, 17:49:10 por planeta9999 »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7865
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #13 en: 31 de Marzo de 2014, 17:31:47 »
Por eso puse mi comentario, en los post anteriores Thulsa lo comento, pero me confundi cuando dijo que tenia las pullup en las lineas I2C, creyendo (no se porque) que estaban en los pines del expansor.
Nunca use exactamente este modelo, pero use el de Microchip y me costo sacarle esas mañas.

Me faltaron dos de esas resistencias (en realidad mal soldadas) y como tambien interrumpia, lo hacia a veces a mas frecuencia de lo que entraban datos.
En mi caso no use antirrebotes, precisamente porque necesitaba contar flancos.

Son dispositivos espectaculares una vez que le agarras la mano, mientras tanto te llevara tiempo conocerlos y mucho de leer hojas de datos y ejemplos.
Ni osciloscopio tenia en ese momento, asi que imaginense lo que renegue !! :D :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7865
Re: Dudas para conectar un expansor de puertos por i2c
« Respuesta #14 en: 31 de Marzo de 2014, 17:36:58 »
Podrías poner al menos la imagen del esquema en proteus?
Aquí no tengo ese software, así que no puedo ver la imagen o probarlo tampoco.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.