Ahora mismo me he dado cuenta de que el I 2 Las líneas de datos y de reloj C (SDA y SCL) deben tener resistencias pullup.
Bueno, he construido un par de relojes utilizando el DS1307 RTC (ver hoja de datos ) según el esquema siguiente. Observa que he omitido las dos resistencias pullup.
Los dos relojes funcionan bien, uno de ellos funciona desde hace más de 3 meses. ¿Cómo es posible? En cualquier caso, quería saber:
-
¿Qué sucede cuando el I 2 ¿Se omiten los tirones de C?
-
¿Es probable que la falta de pullups dañe alguno de esos dos CI en mi placa?
Busco respuestas que aborden mi caso específico de conectar el ATmega328P a un RTC DS1307 como en los esquemas que proporcioné, pero si la pregunta no se hace demasiado amplia, sería útil saber qué sucede cuando se omiten los pullups en general, es decir, en otros escenarios de I 2 Operación C.
PS. He buscado en la red para encontrar la respuesta, pero sólo he podido encontrar artículos sobre el dimensionamiento de los pullups.
Actualización: Estoy usando Arduino IDE 1.03 y mi firmware maneja el RTC usando el DS1307RTC Arduino lib (a través de sus funciones RTC.read()
y RTC.write()
). Esta librería utiliza a su vez Wire.h
para hablar con el RTC.
Actualización 2: A continuación hay una serie de fotos de alcance que tomé para ayudar a explicar cómo el I 2 C funciona sin los pullups externos.
Actualización 3 (después de que 2 C añadidos): Abajo hay otra serie de fotos de alcance que tomé después de añadir las resistencias pullup adecuadas (4K7) a la I 2 Líneas C (en la misma placa). Los tiempos de subida bajaron de unos 5 µs a 290 ns. I 2 C es mucho más feliz ahora.