DCF Funkuhr auswertung

OP #717005
Lesenswert?

Ich grüße euch


Hab da mal ein paar  Fragen bezüglich DCF77 auswertung. Da ich relativ 
neu "dabei" bin und ich ein projekt machen muss dachte ich ich stell mal 
mein anliegen hier rein
 bin da jetzt seit ein paar tagen dran es auzuwerten!! (DCF von ELV / 
Controller Phillips LPC936 / compailer Keil uvision 3 )
also hab das Dcf an P0.5! (zuvor getestet ob ich signal bekomme(tue 
ich)).
jetzt wollt ich mir die werte auf nem 4x20 ausgeben aber irgendwie zählt 
der sekundenzähler nur bis 1 und das wars!! der cursor springt dann 
immer von zeile 1 auf 2 und wieder zurück!
vielleicht könnt ihr mal einen blick auf die anlage werfen und mir 
behilflich sein!!
wäre euch wirklich sehr dankbar!!

grüße simon
Angehängte Dateien:
#717395
Lesenswert?

Der Code ist echt undurchsichtig... unwartbar. Hat der überhaupt 
schonmal funktioniert?

Ich empfehle, eine andere strategie beim DCF-Dekodieren zu fahren: Ein 
Portpin (mit dem DCF-Signal) wird so programmiert, das er bei jedem 
Zustandswechsel einen Interrupt auslöst.

Die Low-High-Auswertung funktioniert über einen Timer, der Systemtakte 
zählt. In der Interrupt-Routine wird erstmal der Timerwert zwischen 
gespeichert und den Timer selbst sofort zu nullen, damit eventuelle 
längere Laufzeiten den Timerwert nicht verfälschen.

Jetzt kann man abfragen, ob der Portpin gerade von low auf high oder von 
high auf low. Über den zwischengespeicherten Timerwert können wir nun 
ermitteln, wie lange das DCF-Signal im vorherigen Zustand verharrt hat.

Mit dieser Information ist alles grundlegende gegeben um nun die volle 
Auswertung zu fahren und die DCF-Zeit zu dekoden.

Im Anhang befindet sich ein DCF-Dekoder von mir, der nach diesem Schema 
die Zeit dekodiert. Allerdings für einen ATMega8. Du wirst also den 
Quellcode ohne Anpassungen nicht verwenden können, aber er soll ja auch 
nur demonstrieren, wie es funktioniert.

Der Dekoder ruft übrigens die Funktion setclock(minute,stunde); auf, 
wenn er sich einigermaßen sicher ist, die richtige Zeit empfangen zu 
haben und setzt das Flag "outasync" auf 0.
Angehängte Dateien:

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