¿El sondeo de un DS1307 con demasiada frecuencia afecta la precisión?

Investigué un poco y encontré una respuesta contradictoria en la web. Estoy sondeando un DS1307 en un bucle, con un Arduino, que tarda unos 20 ms en ejecutarse, así que básicamente estoy sondeando la interfaz I2C 50 veces en un segundo. ¿Esto está afectando la precisión de tiempo del IC?

ADICIÓN Hice muchas pruebas e I2C no estaba causando ninguna desviación del reloj, mi poca precisión tenía otra causa, vea esta pregunta .

Esa es una pregunta interesante, y parece que ya tiene la configuración perfecta para poder realizar algunos experimentos, como comparar la desviación del reloj después de 24 horas de funcionamiento con sondeo de 50 Hz y sin sondeo.
@Kaz Es en realidad el experimento que estoy haciendo, pero sabes que faltan 24 horas :) Eventualmente, me responderé con los resultados.
¿Tienes tu línea I2C en 100kHz? Ese es el máximo, pero normalmente puede usar una frecuencia más alta. Así que solo para comprobar;)
24 horas es demasiado tiempo para que te quedes sentado esperando el resultado. Mmm. Lo sé, ¡consigue un estudiante cooperativo!

Respuestas (2)

no debería Los tiempos i2c del DS1307 se miden en Micro y Nano Segundos. Los intervalos de 20 ms no son nada comparados con eso. Siempre que proporcione al menos 4,7 µs entre las señales I2C Stop y Start, debería estar bien.

Además:

Al leer o escribir los registros de hora y fecha, se utilizan búferes secundarios (de usuario) para evitar errores cuando se actualizan los registros internos. Al leer los registros de fecha y hora, los búferes de usuario se sincronizan con los registros internos en cualquier INICIO I2C. La información de tiempo se lee de estos registros secundarios mientras el reloj sigue funcionando. Esto elimina la necesidad de volver a leer los registros en caso de que los registros internos se actualicen durante una lectura. La cadena divisoria se restablece cada vez que se escribe el registro de segundos. Las transferencias de escritura ocurren en el reconocimiento I2C del DS1307. Una vez que se restablece la cadena divisoria, para evitar problemas de reinversión, los registros de hora y fecha restantes deben escribirse en un segundo.

Teniendo en cuenta que Dallas/Maxim no enumera un tiempo de encuesta mínimo a continuación, eso sugeriría que está bien.

Pero una pregunta, ¿por qué sondearlo tan a menudo?

No debería, siempre que el ruido del I2C o una fuente de alimentación mal desacoplada no afecte al oscilador o contador interno.