Hallo, ich noch nicht sehr lange am Programmieren, bin aber bisher mit Entprellung und LCD recht gut zurecht gekommen. Nun habe ich mir vorgenommen eine DCF77-Uhr auf einem Attiny24 (internes 20 MHZ-Quarz) zu programmieren. Ich wollte es soweit es geht selber machen, habe hier schon einiges gelesen, bekomme aber die Einzelnen Werte nicht aus dem Signal. Könnte mir jemand sagen, wie ich dabei am besten vorgehe? Programmieren würde ich es gerne selber... LG Helge
"Einiges" reicht dafür nicht. Den internen 20 MHz Quarz gibt es schon mal nicht.
Du programmierst Dir erstmal ne normale Uhr. Die braucht man, damit die Zeit weiter läuft bei Störungen (Gewitter, Staubsauger, Fernseher). Dazu legst Du eine Struct an (Sekunde, Minute, Stunde, Tag usw.) und ein Timerinterrupt zählt diese dann hoch. Ich mache es allerdings so, daß der Timerinterrupt nur ein Flag setzt und dann die Mainloop die Zeitzählung aufruft. Das vermeidet ungültige Zwischenzeiten. Das DCF77 verarbeite ich in "harter" Echtzeit, d.h. jedes Bit wird sofort an die richtige Stelle in der Struct hinzu addiert. D.h. für DCF77 nimmt man eine 2. Struct-Variable. Eine Tabelle enthält dazu für jede Impulsnummer den Byte-Index und den Bitwert. Kommt nun der Synchronimpuls (0. Minute), wird auf Fehler geprüft und die DFC77-Struct in die Uhr-Struct kopiert. Peter
Hallo Helge, hier kannst Du einiges zur Kodierung/Dekodierung des Signals nachlesen: [http://www.bkbocholt-west.de/schueler/arbeitsmaterial/micosa/DCF-77-Ahrens-Dunckhoefner-2009.pdf]. [http://de.wikipedia.org/wiki/DCF_77] Im Netz gibt es -auch auf deutsch - google einfach mal, eine große Auswahl an Infos. Schau auch mal auf die Homepage der Phys.Techn.Bundesanstalt. Zur Programmierung DCF77 an sich: Das ist schon eine Aufgabe für Fortgeschrittene! aber dennoch: Du kannst das mit der nötigen Ernsthaftigkeit schon schaffen! mfG Ottmar
Ich habe für ein Projekt auch eine DCF-77 Auswertung gebraucht. Auf der Seite von Ulrich Radig (http://www.ulrichradig.de) bin ich, wie so oft schon, fündig geworden. Da du aber selbst programmieren möchtest, kannst du dir einfach mal den Code, bzw. die Erläuterungen dazu anschauen. Dort gibt's auch eine schöne Graphik um den Signalaufbau besser zu verstehen. Damit ist es eigendlich recht gut Möglich, eine eigene Software zu schreiben. Gruss Stefan PS: Das mit dem internen 20MHz-Quarz solltest du nochmal überprüfen...
Wenn Du Dich nicht sehr schinden willst, gibt es in Bascom die Anweisung: CONFIG DCF77 Damit ist es sehr schnell möglich, das DCF77-Signal auszuwerten. Allerdings liegt die Routine dahinter nicht offen, so daß man eine Black-Box vor sich hat. Hier ist ein Bascom-Programm zu finden, bei dem das Signal "zu Fuß" dekodiert wird. http://www.mcselec.com/index.php?option=com_content&task=view&id=86&Itemid=57 Das ist gut nachzuverfolgen, wenn man sich den Aufbau des Signals nebenbei anguckt. MfG Paul
Vielen Dank für die vielen Ideen. Ich werde mich erstmal an einer normalen Uhr versuchen und die DCF-Auswertung später einbiden. Mit dem Quarz habt ihr natürlich recht, sorry. Habe nur schnell aufs Datenblatt geguckt und dort standen die 20MHZ auf der ersten Seite :-( Lg Helge
Ich hatte ma mit einem 8051 eine hr gebaut, die optional DCF77 kann. Auch diese Uhr war zunächst mal eine ganz normale Quartz Uhr. Einen der beiden 22pF habe ich durch einen Trimmer (4-100pF) ersetzt, um die geschwindigkeit der Uhr justieren zu können (könnte man auch per Software tun). Die Uhr empfängt außerdem das DCF Signal, falls Signal und Empfänger vorhanden sind. Die Nullte Sekunde wird ja durch einen Aussetzer (fehlender Impuls) markiert. Danach werden alle 59 Bits in Variablen eingelesen. Wenn nach einer Minute die Prüfsumme stimmt, empfängt die Uhr noch eine Minute in einer anderen Variable. Wenn danach beide Variablen passende Werte haben (also genau eine Minute Zeitversatz), dann wird die empfangene Uhrzeit in die Uhr übertragen, also synchronbisiert. Diese doppelte Kontrolle war nötig, weil die Uhr sonst mehrmals pro Woche eine falsche Zeit angezeigt hatte. Die Prüfsumme alleine reicht nicht aus, um sicher sagen zu können, ob das empfangene Signal auch valide war.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.