Erst eimal zur Einstimmung: Ich will eine RTC nutzen. Beim Test scheint sie auf den ersten Blick zu funktionieren, auf den zweiten nicht.
Jetzt im Detail:
- Arduino UNO und AdaLogger Shield
- Shield mit RTC PCF8523, Zelle CR1220 als Uhrenbatterie und Steckplatz für SD-Speicherkarte
- Stromversorgung über USB am Arduino
- Shield mit vollem Satz Header und 6-pliger SPI-Verbindung aufgesetzt
- Bibliothek RTClib by Adafruit (ist empfohlen)
Test erfolgt mit dem mitgelieferten Beispiel pcf8523
(Nach Test auf Zustand der RTC und eventuellem Setzen von Datum und Zeit werden aller 3 Sekunden der aktuelle Wert und daraus berechnete Werte auf das serielle Terminal ausgegeben.)
Formal funktioniert das. Allerdings sind Datum und Zeit immer gleich der gesetzten. Hier dazu die Daten:
Das Beispiel ist im Arduino geladen, in der IDE der serielle Monitor gestartet und ich stecke USB am Arduiono an. Folgende Ausgabe an das serielle Terminal:
RTC is NOT initialized, let's set the time!
2022/12/11 (Sunday) 22:45:58
since midnight 1/1/1970 = 1670798758s = 19337d
now + 7d + 12h + 30m + 6s: 2022/12/19 11:16:4
2022/12/11 (Sunday) 22:45:58
since midnight 1/1/1970 = 1670798758s = 19337d
now + 7d + 12h + 30m + 6s: 2022/12/19 11:16:4
usw.
Es sieht so als, als ob die Uhr nicht tickt. Im Beispiel im Teil setup steht nach
rtc.adjust(DateTime(F(DATE), F(TIME)));
noch der Befehl
"rtc.start();".
Spätestens da sollte doch die Uhr loslaufen, eigentlich aber schon nach rtc.adjust(...).
Ziehe ich USB ab und stecke neu (serielles Terminal läuft) bekomme ich wieder genau die gleiche Ausgabe.
Fazit: die RTC scheint durch die Knopfzelle nicht versorgt zu werden.
"Spaßeshalber" habe ich das Beispielprogramm noch etwas modifiziert. Gleich nach
Serial.begin(19200); (habe Baudrate anders eingestellt)
steht nun
if (! rtc.initialized()) {
Serial.println("RTC nicht initialisiert");
}
if (rtc.lostPower()) {
** Serial.println("RTC lost Power");
}
Außerdem steht das Gleiche im Bereich loop ganz am Ende der zyklischen Ausgabe. Hier das Ergebnis:
RTC nicht initialisiert
RTC lost Power
RTC is NOT initialized, let's set the time!
2022/12/11 (Sunday) 23:16:52
since midnight 1/1/1970 = 1670800612s = 19337d
now + 7d + 12h + 30m + 6s: 2022/12/19 11:46:58
RTC lost Power
2022/12/11 (Sunday) 23:16:52
since midnight 1/1/1970 = 1670800612s = 19337d
now + 7d + 12h + 30m + 6s: 2022/12/19 11:46:58
RTC lost Power
usw.
Wegen der neuen Übersetzung des Programms wird die Uhr auf eine andere Zeit gestellt.
In einem weiteren Test habe ich das Setzen der Uhr auskommentiert. Nach upload sowie power down und up des Arduino kommt wieder die Ausgabe wie oben, jedoch mit anderen Werten von Datum und Zeit
2003/15/11 (Wednesday) 1:6:33
Die RTC scheint mit der Batterie nicht zu laufen.
(Die Batterie hatte ich gemessen, ca. 3,2 Volt, neu gekauft.)
Sehe ich das mit der Batterie richtig? Hat noch jemand eine Idee dazu?