Beeinträchtigt die zu häufige Abfrage eines DS1307 die Genauigkeit?

Ich habe etwas recherchiert und im Internet widersprüchliche Antworten gefunden. Ich frage einen DS1307 in einer Schleife mit einem Arduino ab, dessen Ausführung etwa 20 ms dauert, also frage ich die I2C-Schnittstelle im Grunde 50 Mal in einer Sekunde ab. Beeinträchtigt dies die Zeitgenauigkeit des IC?

ZUSÄTZLICH Ich habe viele Tests durchgeführt und I2C verursachte keine Uhrdrift. Meine schlechte Genauigkeit hatte eine andere Ursache, siehe diese Frage .

Das ist eine interessante Frage, und es klingt so, als hätten Sie bereits das perfekte Setup, um einige Experimente durchführen zu können, z. B. den Vergleich der Abweichung der Uhr nach 24 Stunden Betrieb mit 50-Hz-Polling und ohne Polling.
@Kaz Ist eigentlich das Experiment, das ich mache, aber Sie wissen, dass 24 Stunden lang sind :) Irgendwann werde ich mir selbst mit den Ergebnissen antworten.
Hast du deine I2C Leitung auf 100kHz? Das ist das Maximum, aber Sie könnten normalerweise eine höhere Frequenz verwenden. Also nur zur Kontrolle ;)
24 Stunden sind zu lang für Sie, um auf das Ergebnis zu warten. Hmm. Ich weiß, nimm einen kooperativen Studenten!

Antworten (2)

Es sollte nicht. Die i2c-Timings des DS1307 werden in Mikro- und Nanosekunden gemessen. 20ms Intervalle sind dagegen nichts. Solange Sie mindestens 4,7 µs zwischen I2C-Stopp- und Startsignalen geben, sollte es Ihnen gut gehen.

Zusätzlich:

Beim Lesen oder Schreiben der Zeit- und Datumsregister werden sekundäre (Benutzer-)Puffer verwendet, um Fehler zu vermeiden, wenn die internen Register aktualisiert werden. Beim Lesen der Zeit- und Datumsregister werden die Benutzerpuffer bei jedem I2C-START mit den internen Registern synchronisiert. Aus diesen sekundären Registern werden die Zeitinformationen gelesen, während die Uhr weiterläuft. Dadurch entfällt die Notwendigkeit, die Register erneut zu lesen, falls die internen Register während eines Lesevorgangs aktualisiert werden. Die Teilerkette wird zurückgesetzt, wenn das Sekundenregister geschrieben wird. Schreibübertragungen treten bei der I2C-Bestätigung vom DS1307 auf. Sobald die Teilerkette zurückgesetzt ist, müssen die verbleibenden Zeit- und Datumsregister innerhalb einer Sekunde geschrieben werden, um Rollover-Probleme zu vermeiden.

In Anbetracht der Tatsache, dass Dallas/Maxim unten keine Mindestumfragezeit auflistet, würde dies darauf hindeuten, dass es Ihnen gut geht.

Aber eine Frage, warum es so oft abfragen?

Dies sollte nicht der Fall sein, vorausgesetzt, dass Rauschen vom I2C oder einer schlecht entkoppelten Stromversorgung den internen Oszillator oder Zähler nicht beeinflusst.