ich sitze gerade vor dem Problem wie ich die DS1307 einmalig im Sourcecode stellen kann.
Wenn ich Funktionen wie z.B. setTime() im Code einbinde, werden sie ja immer nach erneuten einschalten der Spannungsversorgung (Arduino Board) ausgeführt. Dadurch verstellt sich die Zeit in der RTC DS1307.
Wie kann man die Zeit einmalig in der DS1307 stellen (ohne serial Port)?
Die DS1307 hat 56 Byte RAM. Du kannst im RAM speichern ob die Uhr gestellt wurde, indem du einfach ein bestimmtes Bitmuster in eine Speicherzelle schreibst. Alternativ das EEPROM des Prozessors verwenden.
Einmal stellen, auskommentieren und neu hochladen ist aber einfacher
Du kannst auch abfragen, ob die Uhr überhaupt läuft.
Das tut sie nicht, wenn du mal die Batterie und Vcc abgeklemmt hattest und die Uhrzeit komplett weg ist.
Aber eine DS1307 sollte man schon ab und zu mal stellen. (z.B. so alle halbe Jahr um ca 1 Stunde vor und zurück)
So genau ist keine DS1307, dass sich eine automatische Sommer-WinterZeit Anpassung lohnen würde.
Hallo,
"So genau ist keine DS1307" Genau! Kaufe Dir eine "ChronoDot" Die ist so etwas von geil. Und sie läuft ohne Lib und wirklich sehr genau.
Gruß und Spaß
Andreas
Die Chronodot ist ein DS3231 Breakout Board.
Weit billiger als eine Rolex, aber auch rund !
Natürlich laufen alle RTC auch ohne Lib oder anderen Code. Nur das Auslesen, mit oder ohne Sommer/Winter-Anpassung, kriegst du ohne Code nicht hin.
Bei der DS1307 ist es in der Regel die Frage, welcher Quarz ( und wie ) montiert ist, und wofür man die RTC braucht, ob es ok ist.
Meine Heizungsüberwachung läuft mit einem Loggershield mit DS1307 super.
Die Uhr der Heizung selbst ist ähnlich ungenau.
Ein Billig-Breakout Modul mit DS1307 ist deutlich schlechter. Noch nicht mal die Abweichung ist konstant.
@Michael_x
Ich hatte in meiner Heizungssteuerung auch erst das Modul DS1307, läuft schon ungenau.
Jetzt ein Modul DS3231, und maximal 1 Sekunde Abweichung im Monat, wenn überhaupt.
gruß