DS3231 alle paar Sekunden Zeit neu einstellen schädlich?

OP #5217117
Lesenswert?

Hallo,

ich habe einen Atmega328, der über UART alle 5 sekunden Daten aus dem 
Internet erhält. Enthalten in den Daten ist auch die aktuelle Uhrzeit. 
Der atmega hat einen angeschlossenen DS3231 RTC. Kann ich einfach immer 
wenn Daten aus dem Internet kommen die RTC aktualisieren, oder hat diese 
auch begrenzte Schreibzugriffe wie ein EEPROM?
Gast #5217142
Lesenswert?

Der DS3231 schreibt die Zeit selbst alle Sekunde neu ins Ram und das 
jahrelang, das klappt schon.
Aber wo ist der Sinn? Dein Zeitversatz beim Schreiben ist um 
Größenordnungen höher als die Abweichung des DS3231 über Wochen. Warum 
willst Du die Uhr ungenauer machen als sie ist?
Gast #5217163
Lesenswert?

Nur dass man die Uhr schon intern mitlaufen lassen kann. Du hast eh 
einen Timer Tick, zB 1 oder 10ms. Da fuehrt man eine Uhr mit. Denn das 
I2S oder SPI Interface zum Uhrenchip ist zu langsam, zu muehsam. Und 
diese interne Uhr wird beim Booten von der Uhr gelesen. Allenfalls 
periodisch, gelesen. Aber sicher nicht dauernd dran rumgestellt. Denn 
sonst kannst du ihr nicht mehr trauen.
Gast #5217182
Lesenswert?

T.M .. schrieb:
> da wenn die Internetdaten
> ausbleiben, dann einfach die RTC so weiter läuft

Wenn die ausbleiben bekommst Du als letzten Packet vermutlich Schrott, 
den Du dann in den DS schreibst und die Zeit ist kaputt.
Geh davon aus, daß die Zeit im DS stimmt, je weniger Du daran was 
änderst, desto besser ist sie.
Mehr als einmal pro Tag ein Abgleich mit dem Internet ist mehr als 
ausreichend.
OP #5217202
Lesenswert?

Das wäre mal interessant einen Artikel zu haben über solche allgemeinen 
und vermutlich oft auftauchenden Fragestellungen. Finde ich jedenfalls 
hoch interessant. Wenn der Atmega intern nochmal die Uhr halten soll, 
müsste der ja auch einen speziellen Quarz haben?
Für meinen Fall ist es gar nicht so kritisch auf eine, zwe Sekunden 
genau zu sein. Ist für eine Zeitschaltuhr, um eine Beleuchtung zu 
steuern.
Ja, eine Plausibilitätsprüfung ist schon eingebaut. Momentan läuft der 
Testaufbau rein aus der Internetzeit...bis jetzt sehr zuverlässig, aber 
die Verbindung kann eben mal weg sein und eine eigene RTC ist da sehr 
sinnvoll und auch vorgesehen (da ich noch nicht dazu kam, lief es bisher 
so..)
Gast #5217209
Lesenswert?

T.M .. schrieb:
> Kann ich einfach immer
> wenn Daten aus dem Internet kommen die RTC aktualisieren, oder hat diese
> auch begrenzte Schreibzugriffe wie ein EEPROM?

Warum hast du überhaupt eine RTC drin, wenn du ihr sowieso nicht traust?
Sinn einer Uhr ist, möglichst gleichmäßig und ungestört zu laufen. Stand 
und Gang kann man beim Ablesen berücksichtigen. Jedes GPS macht das so 
und stellt die (Atom)-Uhr auch nicht wegen jeder Schaltsekunde in der 
UTC.
OP #5217216
Lesenswert?

Wie gesagt ich habe von dem Konzept wie das üblicherweise gehandhabt 
wird überhaupt keine Ahnung, Deshalb frage ich hier.
Auch weiß ich nicht wie genau diese DS3231 Module aus China tatsächlich 
sind. Für den fall ist es aber eh nicht so kritisch, aber wäre schön zu 
wissen, wie man es in der Regel löst
Gast #5217221
Lesenswert?

T.M .. schrieb:
> Wenn der Atmega intern nochmal die Uhr halten soll,
> müsste der ja auch einen speziellen Quarz haben?

Nein. Normale Quarze sind in der Regel genau genug, um die Zeit bis zum 
nächsten Abgleich mit der RTC zu halten, grad bei Schaltuhren.
Wenn die Abweichung doch mal umschön ist, z.B. bei mehreren Uhren in 
sichtweite, dann reicht es den Abgleich einmal die Stunde statt einmal 
am Tag zu machen.

Und mach nicht den Fehler Dich bei der Plausibilität auf die RTC zu 
verlassen, die prüft nur, was sie selbst ins Ram schreibt. Du kannst die 
auf den 31.2. 38:78:99 setzen.
Sah blöd aus bei meiner ersten Uhr
Gast #5218104
Lesenswert?

T.M .x (max) schrieb:
> über UART alle 5 sekunden Daten aus dem Internet erhält.
> Enthalten in den Daten ist auch die aktuelle Uhrzeit.

Und wie groß ist dein Zeitversatz über Internet und UART?
Du machst ja bestimmt keinen Abgleich nach NTP-Protokoll.
- Dürften also schon etliche ms sein. Also mehr, als der
  DS3231 von allein daneben liegt: +/- 12,6 ms/h.

Erster Vorschlag:
Bau dir eine Zeitvergleichsroutine - und wenn die
über Minuten und Stunden wiederholt den gleichen (!) Fehlgang
der RTC feststellt: Dann ist wohl mal eine Korrektur der
RTC angesagt.

Mit dieser Zeitvergleichsroutine und mit etwas Buchführung
(über Wochen...Monate) könnte man es dann auch RICHTIG GUT
machen und die Aging Offset-Register des DS3231 nachstellen...

Zweiter Vorschlag: Billig-Zeitschaltuhr, die auf der
Netzfrequenz basiert: meist +/-1 s/d, aber auch +/-1 s/y.
OP #5218142
Lesenswert?

Ja die Zeit und andere Steuerdaten werden momentan einfach über ein php 
file übergeben. Ein paar ms sind für diesen Zweck vernachlässigbar. Ein 
angeschlossenes Display zeigt zwar auch eine Uhr an, aber nur Stunden 
und Minuten. Viel wichtiger ist es, dass nach einem halben Jahr immer 
noch um die gleiche Zeit geschaltet wird und es keine Abweichung um eine 
halbe Stunde/Stunde gibt bzw wenn Zeitumstellung, umgestellt wird.


Bau dir eine Zeitvergleichsroutine - und wenn die
über Minuten und Stunden wiederholt den gleichen (!) Fehlgang
der RTC feststellt

Wie ist das denn gemeint, bräuchte ich da nicht auch eine gleichlaufende 
Referenz um das vergleichen zu können?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren