Eigentlich gibt es beim DS1307 keinen "Startbefehl". Allerdings ist der Inhalt aller int. Register beim allerersten Start nicht festgelegt, sondern kann beliebige Werte haben.
Wenn dann zufällig im Register 0x00 (=Sekunden-Register) das CH-Bit (Bit 7) high ist, dann ist der Oszillator deaktiviert und die Uhr läuft nicht an. Auf S. 8 des Datenblattes wird darauf hingewiesen.
Das CH-Bit wird durch den "Set RTC once"-Teil der Demo gelöscht (dieser Teil ist standardmäßig auskommentiert) , d.h. nach Durchlaufen dieses Teils ist der int. Oszillator an (und bleibt dann auch immer an!).
Was man machen kann, um die Uhr bei der Erstinbetriebnahme bzw. bei leerer Batterie SICHER zu starten:
1. Einmal die Funktion DS1307_init() aufrufen. Dadurch werden alle Register auf 0 gesetzt (also auch das CH-Bit in Reg. 0x00) ODER ...
2. ... den "Set RTC once"-Teil einmalig ausführen und dann wieder auskommentieren.
Lesezeichen