Bei meinem letzten DCF Projekt, DCF77 Mutteruhr, hab ich eine andere Strategie verfolgt.
In dieser Uhr läuft die Anzeige mit dem internen Controller Takt.
Die von der DCF Zeit gelieferte Information wird in Variablen abgespeichert, wenn das paritäts Bit stimmt.
Ein Counter berechnet die Uhrzeit, die in der aktuellen Zeitinformation übertragen werden müsste.
Nach der vollen Minute wird die erwartete Zeitinformation mit der gelieferten verglichen.
Bei jedem erfolgreichen Vergleich wird ein Counter hochgezählt bis er den Wert 6 erreicht hat.
Sind beide Werte gleich und der Counter ist >5 wird die interne Uhr ebenfalls verglichen und die Uhrzeit übernommen.
Tritt ein Fehler auf, aber die paritäts Bits stimmen wird der Counter auf 0 gesetzt und der Vergleichszähler mit der neuen Uhrzeit geladen.
Das passiert z.B. bei der Umstellung von Sommer auf Winterzeit.
Wird danach wieder 6 mal ein gültiges Signal empfangen wird diese Uhrzeit wieder in die interne Uhr übernommen.
Einen Schönheitsfehler hat dieses System. Die angezeigt Uhrzeit kann um max. ~ +/- 1 Minute nicht stimmen.
Das könnte man verhindern, wenn man beim 30en DCF Empfangsimpuls den Sekundenzähler der internen Uhr auf 30 stellt. - Das hab ich aber bei mir nicht implementiert.
Das mit dem RTC Chip ist sicher auch ne gute Strategie, erfordert aber zusätzliche Bauteile und man muss sich was überlegen um die Umstellung von Sommer auf Winterzeit einigermassen zeitgerecht hin zu kriegen. Es gibt sehr gute RTC's die maximal 3 Sekunden pro Jahr abweichen.
Die DCF Library hab ich mir aus dem I-Net gezogen und für meine Bedürfnisse angepasst.
Sie besteht hauptsächlich aus einer Empfangsroutine die eine 1 oder eine 0 detektiert und einer Switch - Case Anweisung die die einzelnen Bits wieder zusammenfügt.
Lesezeichen