Hallo Rolf,
ich habe mir die Parameter für die Signal-Abtastung angeschaut. Bei 40 Interrupts pro Sekunde ergibt sich bei 25mSec Zeit-Takt und dem Grenzwert von 6 die Grenze von 150mSec (6 * 25mSec). Ist die Impulslänge >= 150mSec wird das Signalbit als 1 darunter als 0 interpretiert. Dieser Wert kann natürlich um einige mSec differieren, je nachdem wie die Abtastzeitpunkte auf das DCF-Signal treffen, da die beiden ja nicht synchron sind.
Bei 50 Interrupts pro Sekunde ergibt sich ein Zeittakt von 20 mSec und damit bieten sich entweder 140 oder 160mSec als Grenzwert. Beim derzeit implementierten Algorithmus ergeben sich 8 Zeittakte und damit 160mSec.
Sofern bei Deinem DCF-Modul wie Du vermutest die Impulse stark verkürzt abgegeben werden und der 200mSec-Impuls manchmal unter 160mSec liegt, gibt es natürlich Probleme in der Auswertung.
Du könntest mal folgendes probieren:
Ändere in der DCF77.LBX die Zeile
Code:
* CPI rDCF_TimerCount, cDCF_Bit1
in
Code:
* CPI rDCF_TimerCount, 7
(vorher eine Sicherungskopie erstellen )
Damit wird der Grenzwert bei einem Timer-Tick von 50 auf 140mSec herabgesetzt.
Diese Änderung musst Du dann natürlich wieder rückgängig machen, falls Du mit anderen Konfigurationen arbeitest.
Bei meinen Versuchen mit meinem DCF-Modul habe ich festgestellt, dass die Impulse doch recht genau bei 100 bzw. 200mSec mit etwa +/- 10mSec Abweichung liegen. Vielleicht können andere Anwender mit entsprechenden Messequipment mal ihre Erfahrungen über das Signalverhalten mitteilen.
Möglicherweise ist ein Pull-Up Widerstand hilfreich, da der im AVR aktivierte Pull-Up je nach DCF-Modul nicht ausreichend ist.
Lesezeichen