DCF77 Dekodierung mittels AVR

OP #4545835
Lesenswert?

Hey,
aktuelle beschäftige ich mich damit das DCF77-Signal zu empfangen, zu 
dekodieren und bei "Plausibilität" die Zeit an eine RTC zu übertragen.

Soweit klappt das alles schon ganz gut.. aber natürlich hätte ich da 
auch noch Fragen ;).

1. Wie kann man am geschicktesten überprüfen, ob die empfangenen und 
dekodierten Daten auch wirklich korrekt sind?
Die Parität-Bits werden natürlich überprüft. Sollte ich ansonsten 
einfach nur schauen, dass die neu empfangenen Daten zu denen passen die 
bereits vorliegen?

2. Dienen die Bits 17 und 18, die sich auf die MEZ/MESZ beziehen, nur 
der Information?
- ist die übertragene Uhrzeit bereits korrekt (in Deutschland geltende 
Zeit) oder muss ggf. eine Art Offset hinzugezogen werden?


Mit freundlichen Grüßen
Daniel
Moderator Persönliche Seite #4545848
Lesenswert?

Daniel H. schrieb:
> Sollte ich ansonsten
> einfach nur schauen, dass die neu empfangenen Daten zu denen passen die
> bereits vorliegen?

Ja, einfach gegen die letzte empfangene Minute gegenchecken.

> 2. Dienen die Bits 17 und 18, die sich auf die MEZ/MESZ beziehen, nur
> der Information?

Ja.

> - ist die übertragene Uhrzeit bereits korrekt (in Deutschland geltende
> Zeit) oder muss ggf. eine Art Offset hinzugezogen werden?

Ist bereits korrekt - müsstest Du eigentlich schon selbst bemerkt haben 
;-)

Also ist kein Offset hinzuzurechnen.
Gast #4545851
Lesenswert?

> Wie kann man am geschicktesten überprüfen, ob die
> empfangenen und dekodierten Daten auch wirklich korrekt sind?

Zum einen sind da natürlich die Prüfbits. Zum Anderen solltest du die 
empfangene Zeit mit einer bekannten Zeit vergleichen. Ist die Abweichung 
mur wenige Sekunden, dann hast du warscheinlich korrekt empfangen. Ist 
die Abweichung >1 Minute, dann gehe einen Schritt weiter:

Empfange zwei aufeinanderfolgende Telegramme, und vergleiche, um wie 
viele Minuten sie sich unterscheiden. Das müsste exakt eine Minute sein. 
Wenn das der Fall ist, kannst du diesen Wert zur Anzeige bringen.

Oder (für ganz paranoide) machst du das halt dreimal oder fünf mal. 
jedes telegramm muss genau eine Minute weiter sein, als das von davor.

Es gibt auch geschicktere Methoden, die bei heftigen 
Übertragungsstörungen schneller zum Erfolg führen. Doch in der Praxis 
bin ich sicher, dass das so ausreicht.

> Dienen die Bits 17 und 18, die sich auf die MEZ/MESZ beziehen,
> nur der Information?

Ja. Alle Bits dienen nur der Information - genau genommen.

> ist die übertragene Uhrzeit bereits korrekt

Ja, die übermittelten Zahlen entspechen dem, was man auf der 7-Segemtn 
Anzeige sehen will. Das Sommer/Winterzeit Flag zeigen Uhren 
normalerweise nicht an. Du wirst es aber brauchen, wenn du die 
empfangenen Daten durch Vergleich mit der aktuellen uhrzeit validieren 
willst. Denn nach der Umstellung ist die Zeitabweichung ja nicht kleiner 
als 1 Minute, sondern größer als 1 Stunde.
OP #4545870
Lesenswert?

Stefan U. schrieb:
> Empfange zwei aufeinanderfolgende Telegramme, und vergleiche, um wie
> viele Minuten sie sich unterscheiden. Das müsste exakt eine Minute sein.
> Wenn das der Fall ist, kannst du diesen Wert zur Anzeige bringen.

Dann werde ich das mal implementieren.

Stefan U. schrieb:
> Ja. Alle Bits dienen nur der Information - genau genommen.

Da stimmt natürlich - verzeih mir bitte die sprachliche Ungenauigkeit ;)

Stefan U. schrieb:
> Du wirst es aber brauchen, wenn du die
> empfangenen Daten durch Vergleich mit der aktuellen uhrzeit validieren
> willst.

Gut, so hatte ich mir das auch gedacht.

Peter D. schrieb:
> Man legt also Fehlerbereiche fest, in denen die
> Zeiten liegen müssen.

Ich habe es momentan so gelöst, dass ich die folgenden Bereiche 
akzeptiere:
  40 -  130ms
 140 -  230ms
1500 - 2500ms

Wenn nach der Synchronisations ein kürzerer oder längerer Puls liegt 
oder die Pulszahl zwischen 2 Synchronisationen nicht genau 59 beträgt, 
wird der empfangene Teil verworfen.
#4546000
Lesenswert?

Daniel H. schrieb:
> die Pulszahl zwischen 2 Synchronisationen nicht genau 59 beträgt

Achtung: In manchen Fällen können es auch 60 sein und zwar immer dann, 
wenn es eine Schaltsekunde eingefügt werden muss.

> Bei einer Minute ohne Schaltsekunde wird zur 59. Sekunde keine Sekundenmarke 
gesendet. Bei einer Minute mit Schaltsekunde wird zur 59. Sekunde eine „0“ und zur 
60. Sekunde keine Sekundenmarke gesendet.
https://de.wikipedia.org/wiki/DCF77
Gast #4546001
Lesenswert?

> Zum einen sind da natürlich die Prüfbits. Zum Anderen solltest du die
> empfangene Zeit mit einer bekannten Zeit vergleichen.

Wozu das. Macht nur Probleme beim Start und bei der Zeitumstellung. Ich 
prüfe die 100/200ms Signale auf Plausiblität, die ausfallende 59. 
Sekunde, die obligatorischen Einsen und die Paritätsbits. Wenn das alles 
stimmt, stimmt's auch. Ich habe noch nie eine falsche Uhrzeit auf meiner 
Uhr gesehen (seit 2-3 Jahren)
Gast #4546103
Lesenswert?

> Wozu das?

Wenn der Empfang auf diese Weise schon nach einer Minute erfolgreich 
ist, kann man danach den Funkempfänger aus schalten und spart 
Batteriestrom.

Ist natürlich nur bei Batteriebetrieb von Bedeutung.
#4546131
Lesenswert?

Daniel H. schrieb:
> 1. Wie kann man am geschicktesten überprüfen, ob die empfangenen und
> dekodierten Daten auch wirklich korrekt sind?

mit Verstand?

gibt es 27:66 Uhr?
gibt es den 30.2.Jahr?(beliebig)
gibt es einen Wochentag8?

das ist ja neben den Paritätsbits leicht zu prüfen.

Ich hatte durch Störungen und falschen low high Grenzen solche Werte 
empfangen können, verschliffene Syncronsignale.

ausserdem ist eine empfangene Zeit die 2-3 mal in plausiblen Abständen 
kommt dann vermutlich passend

Zeitempfang Uhrzeit 1
5 Minuten später mit timer gezählt ergibt diese Zeit auch 5 Minuten plus

und noch mal 3 Minuten später (Timer) ist es wieder 3 Minuten später 
Empfang, dann sollte der Empfang doch stimmen.
Gast #4546143
Lesenswert?

> Ich hatte durch Störungen und falschen low high Grenzen solche Werte
> empfangen können, verschliffene Syncronsignale.

Das ist mir nie gelungen. Wenn der Empfang schlecht war (keine 
Seltenheit), dann scheiterte es meist schon an der 100ms-Grenze. Die 
Signale waren fast immer kürzer.

Wenn nicht (weil man ja zwangsweise irgendwo in der Minute anfängt zu 
empfangen) dann scheiterte es an einem der Prüf- oder Paritätsbits.

Nie beobachtet habe ich ein Scheitern an der 59. Sekunde (was die letzte 
Station wäre).

Von daher sehe ich keinen Grund für weitere Plausibilitätsprüfungen

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