Forum: Mikrocontroller und Digitale Elektronik DS3231 alle paar Sekunden Zeit neu einstellen schädlich?


von T.M .. (max)


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?

von Dinosaurier (Gast)


Lesenswert?

Ist RAM, schreib so oft du willst.

von Metatroll (Gast)


Lesenswert?

Koennen, resp Duerfen ist eine Sache und das Ganze soll ? Erscheint mir 
nun eher etwas sinnlos.

von Horst (Gast)


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?

von T.M .. (max)


Lesenswert?

Dachte das wäre die einfachste Lösung, da wenn die Internetdaten 
ausbleiben, dann einfach die RTC so weiter läuft

von Metatroll (Gast)


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.

von Horst (Gast)


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.

von oszi40 (Gast)


Lesenswert?

Horst schrieb:
> je weniger Du daran was änderst, desto besser ist sie.

Es ist jetzt 55:22:61 Uhr. Nicht alles was aus dem Internet kommt muß 
gut sein. Eine kleine Plausibilitätsprüfung ist nie schädlich. :-)

von T.M .. (max)


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..)

von Wolfgang (Gast)


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.

von T.M .. (max)


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

von Horst (Gast)


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

von Jacko (Gast)


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.

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Horst schrieb:
> Du kannst die
> auf den 31.2. 38:78:99 setzen.

Geht nicht!
Dann hast du das Register an Adresse 02 falsch interpretiert.

: Bearbeitet durch User
von T.M .. (max)


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?

von H.Joachim S. (crazyhorse)


Lesenswert?

Du vergleichst deine Internet-Zeit mit der DS1131-Zeit.
Wenn mehrfach hintereinander eine grössere als akzeptable (die musst du 
festlegen) Differenz festgestellt wird kannst du die Uhr nachstellen. 
Für den Normalgebrauch stellen <10s kein Problem dar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.