Der DS1307 verfügt über zwei Stromquellen: die Haupt-VCC-Quelle und die Backup-Batterie. Letzteres versorgt den DS1307 mit Strom, wenn der Hauptstrom ausfällt, damit die Uhr weiter ticken kann.
Ich habe ein Problem mit der RTC DS1307, wenn die Hauptstromversorgung plötzlich ausfällt und dann die Zeit auf dem LCD-Display einfach einfriert. Manchmal, wenn das passiert (Ausschalten), läuft die RTC weiter (es scheint, dass der DS beim Ausschalten der Hauptstromversorgung hängen bleibt).
Dies ist die genaue Schaltung, die ich verwendet habe, und die Batterie liefert 3,0 V:
Der Code, den ich verwendet habe, steht genau im Blog-Beitrag: DS1307 Real Time Clock Working .
Was könnte das Problem sein?
Schema ist gut. Führen Sie diese Checkliste durch:
Überprüfen Sie Ihre Stromversorgung auf saubere Wellen, insbesondere zu Verbindungs- und Trennungszeiten. Wenn es für mehr als 1 V ansteigt, fügen Sie einen 4,7-uF-Kondensator hinzu. Wenn das Problem dadurch nicht behoben wird, wechseln Sie die Stromversorgung und erneuern Sie DS1307.
Überprüfen Sie die 3-V-Batteriestromfähigkeit, nur keine Spannung, DS1307 benötigt mindestens 200 uA.
Überprüfen Sie, ob die 3-V-Fledermaus einen unerwünschten Pfad hat, der sie entlädt. Besonders wenn Sie Protoboard verwenden.
Überprüfen Sie die I2C-Befehle/Software.
Normalerweise tritt diese Art von Problem auf aufgrund von:
Stellen Sie sicher, dass Sie den I2C-Bus beim Start ordnungsgemäß zurücksetzen. Wenn Sie es nicht sind, werden Sie sehen, dass die Datenleitung die ganze Zeit niedrig ist, wenn Ihr Programm gesperrt ist. Sie können dieses Problem beheben, indem Sie vom Master Taktimpulse senden, bis alle Geräte die Datenleitung freigegeben haben.
Haben Sie darauf geachtet, wie im Datenblatt empfohlen vorzugehen:
UHR UND KALENDER
Bit 7 von Register 0 ist das Takthaltebit (CH). Wenn dieses Bit auf 1 gesetzt ist, ist der Oszillator deaktiviert. Wenn er auf 0 gelöscht wird, ist der Oszillator aktiviert. Bitte beachten Sie, dass der anfängliche Einschaltzustand aller Register nicht definiert ist. Daher ist es wichtig, den Oszillator (CH-Bit = 0) während der Erstkonfiguration zu aktivieren.
Mit anderen Worten, wenn Sie bei Ihrer Softwareinitialisierung vergessen haben, das CH-Bit zurückzusetzen, würde der Oszillator nicht funktionieren (und der Bitwert ist beim Einschalten zufällig).
Adam Lawrence
allein