Hallo ich versuche das DCF77 zu decodieren. Um ueberhaupt zu sehen ob ich ein brauchbare Siganl bekomme habe ich aus einem Beispielprogramm folgenden Code kopiert und angepasst. Ich bekomme 1 mal in der Sekunde ein Signal und der Interupt wird ausgeloesst. In der 3 ten Zeile auf dem LCD lasse ich mir die Zeitdauer anzeigen. Allerdings ist diese Zeitdauer fast immer gleich schwankt so zwischen 3910 und 3916. Also lese ich daraus das der Impuls immer gleich lang ist. Wenn ich aber ein Signal empfangen wuerde dann muesste ich doch unterschiedlich lange impulse sehen. Liege ich da richtig oder verstehe ich den copierten code nicht richtig? Danke.
>Um ueberhaupt zu sehen ob ich ein brauchbare Siganl bekomme habe ich aus einem Beispielprogramm folgenden Code kopiert und angepasst. Schau doch mal mit dem Oscar nach, wie lang die Pulse sind. Müssen 100 oder 200 ms lang sein. Es langt zur Not auch eine LED. Wenn man genau hinschaut, erkennt man die Unterschiede. Ciao Eric
Das DCF-Signal wird zu Beginn jeder (außer der 59.) Sekunde abgesenkt und nach 0,1 oder 0,2 Sekunden (Kodierung für logisch 0 oder logisch 1) wieder auf den Normalwert angehoben. Mit deinem Interrupt erfasst du den SIGNALWECHSEL und zwar (da du einen fast konstanten Abstand erfasst) genau den RICHTIGEN zum Sekundenbeginn: Anderenfalls würde der Messwert um ungefähr genau +/- 10% schwanken. Was noch fehlt, ist die Erfassung des SIGNALPEGELS 0,15 Sekunden nach dem Signalwechsel. Dann kann man den logischen Wert des Sekundenbits feststellen: Liegt 0,15 Sekunden nach dem Signalwechsel wieder der Normalwert an, war es eine logische Null, ansonsten eine logische Eins. Als alter Assembler-Freak kann ich zu deinem BASIC-Code nicht viel sagen, aber du scheinst ja auf dem richtigen Weg zu sein. Viel Erfolg Ralli
Bitte keinen Interruptpin zur Auswertung des schnarchlangsamen DCF-Signals verwenden. Ein per Timer-Interrupt gepollter Pin (alle 10ms) liefert weitaus störungsärmere und zuverlässigere Werte und schont die Ressourcen.
@ Travel Rec.. das hatten wir doch schonmal ?! ;-) Aber wie Ralli schon schrieb: du misst die Periodendauer, nicht die Impulslänge. Wenn's mit dem Interrupt sein muss: je nach Pegel (high/low) deiner Impulse musst du die Zeit zwischen den unterschiedlichen Flaken messen und direkt nach Auslösen des Interrupts die Flankenerkennung umschalten (high nach low und umgekehrt). Ansonsten so wie Travel Rec. geschrieben hat. Es geht auch mit dem ICP (Input-Capture-Pin).
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.