Autor Tema: Es posible el uso de 2 buses I2C?  (Leído 1665 veces)

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

Desconectado Arimai

  • PIC10
  • *
  • Mensajes: 6
Es posible el uso de 2 buses I2C?
« 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.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Es posible el uso de 2 buses I2C?
« Respuesta #1 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
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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Es posible el uso de 2 buses I2C?
« Respuesta #2 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Arimai

  • PIC10
  • *
  • Mensajes: 6
Re: Es posible el uso de 2 buses I2C?
« Respuesta #3 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.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Es posible el uso de 2 buses I2C?
« Respuesta #4 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús