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?
Koennen, resp Duerfen ist eine Sache und das Ganze soll ? Erscheint mir nun eher etwas sinnlos.
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?
Dachte das wäre die einfachste Lösung, da wenn die Internetdaten ausbleiben, dann einfach die RTC so weiter läuft
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.
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.
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. :-)
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..)
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.
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
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
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.