Pregunta:
I2C RTC regresando malos tiempos - a veces
David
2014-08-31 23:54:42 UTC
view on stackexchange narkive permalink

Tengo un reloj TinyRTC I2C en uno de mis proyectos de Arduino y funciona la mayor parte del tiempo. Pero ocasionalmente, informará la hora como 165 horas, 85 minutos y 25 segundos (165: 85: 25) durante un par de segundos, luego volverá a la hora correcta.

Creo que esto tiene algo que ver con un bus I2C bastante complicado que estoy ejecutando: tiene 12 dispositivos conectados (el reloj, una pantalla LCD y 10 luces programables LED BlinkM).

Esto es lo que intenté depurar, sin éxito:

  • Reemplazó el RTC y la batería
  • Reemplazó las resistencias pullup I2C
  • Rehice el cableado I2C
  • Verifiqué el consumo de corriente de mi proyecto (.2A) y me aseguré de que la fuente de alimentación pueda manejar eso (puede)
  • Usé 3 fuentes de alimentación diferentes en caso de haciendo ruido

Creo que esto es algo que tiene que ver con el bus I2C ... el reloj funciona bien cuando no pasa nada más en el bus, pero tan pronto como hay mucha actividad ( Se envían mensajes LED, o quizás otras cosas) comienza a informar la hora como 165: 85: 25).

Alguna idea de cómo podría (a) aislar la causa de este problema; (b) ¿acertar en la implementación de una solución?

http://arduino.cc/en/Reference/WireEndTransmission ¿Probó el parámetro de detención y / o verificó las condiciones de error que se devuelven? Es difícil saber qué está mal sin circuito o código.
¿Qué código / biblioteca usaste? ¿Cuál fue el tiempo esperado para 165: 85: 25?
¿Qué tan grandes son tus dominadas en el autobús?
Podría ser un código de error para I2C o podría ser un informe de estado del TINY RTC. Entonces, ¿cómo estás seguro de que está respondiendo con la hora actual?
@jippie - Su enlace fue útil ... voy a intentar ralentizar el bus I2C en caso de que haya un problema al comunicarse con tantos dispositivos.
@Gerben - www.pjrc.com/teensy/td_libs_DS1307RTC.html
@Lean - resistencias pullup de 4.7k
@Treesrule14 - El reloj funciona bien durante horas a la vez ... luego informa estos tiempos extraños, lo que sucede cuando hay otra actividad en el autobús
¿Verificó que no tiene dispositivos con direcciones en conflicto en el autobús?
Asegúrese de tener solo un juego de resistencias pull-up.
One responder:
Frank Lu
2015-02-04 06:32:05 UTC
view on stackexchange narkive permalink

Este problema intermitente me parece un problema de integridad de la señal de hardware, específicamente alrededor del chip RTC del bus I2C. ¿Experimentó algún problema con cualquier otro dispositivo en el mismo bus I2C (por ejemplo, cuando todos los LED están encendidos)? Si no es así, compruebe el nivel de ruido en la potencia del chip RTC y GND. Además, la especificación I2C tiene un límite en la carga de capacitancia del bus de hasta 400 pF. Cuando hay demasiadas cargas de dispositivos I2C en el mismo bus, el bus puede volverse vulnerable al ruido del sistema.

Sugerencia de depuración: para reducir si se trata de un problema de carga I2C, agregue un chip controlador de bus I2C entre la placa principal Arduino y su periférico. Por ejemplo, P82B96 de TI. Vea la especificación aquí. http://www.ti.com/lit/ds/symlink/p82b96.pdf



Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...