TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Arimai en 28 de Julio de 2006, 08:09:21

Título: Es posible el uso de 2 buses I2C?
Publicado por: Arimai en 28 de Julio de 2006, 08:09:21
Hola,

Me gustaria saber si es posible manejar dos buses I2C con el CCS. Mi intencion es pasar informacion de un bus a otro, pero no tiene porque ser simultaneamente. El caso es que lo he estado probando y al comunicarme con uno de los buses (p.e. BUS_1) no hay ningun problema. Utilizo la directiva
#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL,FAST)
El problema surge cuando intento acceder al otro bus (p.e. BUS_2) despues de haber cortado la comunicacion con el BUS_1 poniendo la directiva:
#use i2c(master, sda=PIN_C4, scl=PIN_C3, FORCE_HW)
El programa se queda colgado.

Si habeis tenido algun problema parecido, agradeceria vuestra ayuda. Un saludo.
Título: Re: Es posible el uso de 2 buses I2C?
Publicado por: micro_pepe en 28 de Julio de 2006, 18:02:46
Para el I2C es necesario que el terminal de datos SDA se una salida en colector abierto, y creo que los pic solo disponen de una salida de este tipo, quizas sea este el problema.

Saludos
Título: Re: Es posible el uso de 2 buses I2C?
Publicado por: BrunoF en 29 de Julio de 2006, 03:59:49
Si bien es cierto que el I2C necesita pines de tipo "open drain" para no generar colisiones de datos(electricas digamos aqui), voy a dar un modelo de PIC(por decir uno de los tantos) que refutará tu tesis micro_pepe. :D :D
Sí creo que seria posible implementar 2 buses I2C por soft(uno por hard y otro por soft, o bien ambos por soft) por ejemplo en un 16F876A, ya que estos tienen 2 pines de tipo open drain, tanto RA4 como el dedicado al modulo I2C del PIC(RC3 o RC4, no recuerdo bien... :?)
Probablemente haya modelos con aun mayor cantidad de pines de tipo open drain, como tal vez tambien sea posible implementarlos aun sin necesitar un pin de tipo open drain.
O tal vez este diciendo puras pavadas.
Saludos.
Título: Re: Es posible el uso de 2 buses I2C?
Publicado por: Arimai en 31 de Julio de 2006, 04:19:32
Hola y gracias por vuestras respuestas.

El caso es que si puedo implementar ambos buses I2C. Pues uno de los buses esta implementado en los pines dedicados para ello PIN_C3, PIN_C4 y el otro en los pines B2 y B3. Cuando intento comunicarme solo con uno de esos buses no hay ningun problema, la comunicacion es perfecta.

El problema me surge cuando me comunico a traves de un bus y luego quiero comunicarme con el otro bus. Creo que el problema es con las directivas, pero no consigo solucionarlo para poder realizar la comunicacion cuando intento acceder al segundo bus ya que con el primero no tengo problemas.
Título: Re: Es posible el uso de 2 buses I2C?
Publicado por: jfh900 en 01 de Agosto de 2006, 09:22:26
Si se puede implementar 2 buses i2c pero no directamente con CCS, ya que el compilador solo soporta uno. Tendras que implementar las rutina en ensamblador y utilizar otro nombre de funciones para diferenciarlas del primer bus. Por cierto el implementado por software tendra que ser maestro, ya que los esclavos solo se pueden realizar por harware.

Un saludo