www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DCF Funkuhr auswertung


Autor: Simon Milde (simonmilde)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Debugger???

Autor: Niels Hüsken (monarch35)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.