Forum: Mikrocontroller und Digitale Elektronik DCF Funkuhr auswertung


von Simon M. (simonmilde)


Angehängte Dateien:

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

von Gast (Gast)


Lesenswert?

Debugger???

von Niels H. (monarch35)


Angehängte Dateien:

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.

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.