Hallo Rolf,
Beginne mal mit der Grundkonfiguration:
und einem Ort mit einem sauberen DCF-Empfang um die Funktion zu testen. Der Parameter DEBUG wird nur benötigt um die Impulslängen festzustellen.Code:CONFIG DCF77 = PinX.y, Timer=1, Debug = 1
Der Compiler nimmt wenn von der Quarzfrequenz her möglich, einen Timer-Interrupt von 40 pro Sekunde. Im Kompiler-Report kann man bei der Konstante _CDCF_SECONDTICS den Wert kontrollieren. Bei 'unüblichen' Quarzfrequenzen wird ein Wert zwischen 32 und 128 möglichst nahe bei 40 gewählt, welche die geringste Zeitabweichung gewährleistet.
Bei einem Timer-Interrupt von 40 wird dieser alle 25 mSec (1000mSec/40) ausgelöst. Mit diesem zeitlichen Abstand wird der Pegel des DCF77-Signals getestet.
Man kommt dann auf deine erwähnten Werte von 4 für Bit0 (4*25mSec=100mSec) und 8 für Bit1 (8*25mSec=200mSec). Da ja die Pegelabtastungen und das DCF-Signal nicht synchron sind, kann dieser Wert auch mal um 1 höher oder niedriger sein. Also 3, 4, oder 5 für Bit0 und 7, 8 oder 9 für Bit1. Der Grenzwert zwischen Bit 0 oder 1 definiert die Konstante CDCF_BIT1. In diesem Beispiel ist dieser 6. Das heißt, dass Impulslängen größer gleich 6 als Bit1 interpretiert werden.
Timer1Sec:
Es gibt die Möglichkeit (Parameter UPDATE) die Zeit kontinuierlich (0), stündlich (1) oder täglich (2) synchronisieren zu lassen. Bei stündlicher oder täglicher Synchronisation erfolgt in der Zwischenzeit keine DCF77-Signal Auswertung. Das gibt die Möglichkeit in dieser Zeit den Timer-Interrupt auf 1 mal pro Sekunde zu reduzieren, da dieser ja dann nur die SOFT-CLOCK bedienen muss. Dies reduziert die Zeit, welche die CPU mit dieser Interrupt-Routine verbringt.
Weiters kann in dieser Zeit speziell in Batterie/Akku betriebenen Geräten der DCF77-Empfänger abgeschaltet werden. Dazu dienen die Parameter SWITCHPOWER, POWERPIN und POWERLEVEL.
SecondTicks sollte nur dann verwendet werden, wenn man in den Timer-Interrupt noch eine eigene Routine mit einem anderen Takt hängen will. Dieser kann aber nur höher sein als der vorgegebene Wert.
SECTIC ist derzeit nicht berücksichtigt, sollte aber meines Erachtens kein Problem sein, diese in zukünftige Releases zu implementieren.
Siehe auch: https://www.roboternetz.de/phpBB2/viewtopic.php?t=29977
Falls Du weiterhin Probleme hast, kannst du die Ausgabe des Test-Programmes in deinem Post als Attachement anfügen. Vielleicht ist dann eine Beurteilung des Problems möglich.
Lesezeichen