Hallo Rolf,
ich habe Dein Programm getestet und habe sowohl bei Timer1Sec = 0 als auch 1 eine funktionierende DCF77 Auswertung bekommen.
Übrigens: die Option SECTIC hat Mark schon in die am Samstag erschienen Release 1.11.8.7 aufgenommen.
Druckbare Version
Hallo Rolf,
ich habe Dein Programm getestet und habe sowohl bei Timer1Sec = 0 als auch 1 eine funktionierende DCF77 Auswertung bekommen.
Übrigens: die Option SECTIC hat Mark schon in die am Samstag erschienen Release 1.11.8.7 aufgenommen.
Hallo Josef,
ich könnte mir vorstellen, dass mein Problem bei den 50 Ticks auch gut an dem Signal vom DCF Empfänger liegt. Wenn das nicht ganz so steil geht, werden alle Impuls Längen etwas verkürzt, sodass ich dann zu den 7er Längen kommt. Ich benutze jetzt jedenfalls Timer1Sec=0 und gut ist.
Eure neue Version habe ich auch schon geladen und funktioniert ausgezeichnet. Finde ich übrigens super, wie ihr solche Wünsche sofort umsetzt.
Ich habe jetzt meine eigene Routine überall rausgeworfen und durch dein Kommando ersetzt. Einmal, weil es 4K weniger Code erzeugt und zum anderen, weil ich es so einfacher in andere Programme integrieren kann.
Vielen Dank nochmal.
Gruß
Rolf
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
inCode:* CPI rDCF_TimerCount, cDCF_Bit1
(vorher eine Sicherungskopie erstellen )Code:* CPI rDCF_TimerCount, 7
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.