Ich möchte mit dem Digispark mini experimentieren und mal eine Uhr mit DCF77-Empfang, RTC und max7219-Matrixanzeige aufbauen. Ich hab' zwar die Digispark noch nicht und experimentiere noch mit einem Arduino uno, aber es tauchen schon Fragen auf.
Das eine ist, der verbaute attiny85 hat keinen 16bit timer, nur 8bit. Also nicht die DCF77.lib von bascom, sondern die DCF77-rn.lib aus dem Roboternetz rn-wissen.de/wiki/index.php?ti…rary#Bascom_Hauptprogramm angepasst. Hierbei braucht es nur einen Aufruf einer sub alle 25msec. Diese 25msec müssen aber genau sein, weil a: die softclock damit gesteuert wird, b: die Decodierung des DCF-Signals damit gesteuert wird. Kein gültiges Zeittelegramm > es läuft die softclock, aber eben auch nur mit der Genauigkeit der 25msec. Ich hab' mal beim Arduino mit timer0 bei prescale=1024 und timerload=78 einen Aufruf alle 4,992msec x5 genommen, zusammen mit dem Resonator auf dem Arduino gab es eine deutliche Gangungenauigkeit in der softclock und ein seltenes Decodieren des DCF-Signals. Ein genauer 1msec-Aufruf x25 geht deutlich besser.
Jetzt kommt das Problem, der attiny läuft ohne Quarz und dessen Taktfrequenz liegt wohl zwischen 16Mhz und 16,5 Mhz. Wie bekomme ich da jetzt einen isr mit genau 25msec hin, damit die softclock ordentlich läuft und das Decodieren auch klappt?
Ich hätte ja noch die RTC, damit könnte ich einen 1-Sekundenzeitraum erkennen und meinen nötigen timeraufruf damit irgendwie berechnen. Aber wie bekomme ich da einen möglichst genauen timerload-Wert hin? Natürlich könnte ich mit der RTC eine userclock betreiben, nur wo bekomme ich die 25msec für den Decoder her, der meine RTC ja auf dem Laufenden halten soll?
Das eine ist, der verbaute attiny85 hat keinen 16bit timer, nur 8bit. Also nicht die DCF77.lib von bascom, sondern die DCF77-rn.lib aus dem Roboternetz rn-wissen.de/wiki/index.php?ti…rary#Bascom_Hauptprogramm angepasst. Hierbei braucht es nur einen Aufruf einer sub alle 25msec. Diese 25msec müssen aber genau sein, weil a: die softclock damit gesteuert wird, b: die Decodierung des DCF-Signals damit gesteuert wird. Kein gültiges Zeittelegramm > es läuft die softclock, aber eben auch nur mit der Genauigkeit der 25msec. Ich hab' mal beim Arduino mit timer0 bei prescale=1024 und timerload=78 einen Aufruf alle 4,992msec x5 genommen, zusammen mit dem Resonator auf dem Arduino gab es eine deutliche Gangungenauigkeit in der softclock und ein seltenes Decodieren des DCF-Signals. Ein genauer 1msec-Aufruf x25 geht deutlich besser.
Jetzt kommt das Problem, der attiny läuft ohne Quarz und dessen Taktfrequenz liegt wohl zwischen 16Mhz und 16,5 Mhz. Wie bekomme ich da jetzt einen isr mit genau 25msec hin, damit die softclock ordentlich läuft und das Decodieren auch klappt?
Ich hätte ja noch die RTC, damit könnte ich einen 1-Sekundenzeitraum erkennen und meinen nötigen timeraufruf damit irgendwie berechnen. Aber wie bekomme ich da einen möglichst genauen timerload-Wert hin? Natürlich könnte ich mit der RTC eine userclock betreiben, nur wo bekomme ich die 25msec für den Decoder her, der meine RTC ja auf dem Laufenden halten soll?
Raum für Notizen
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------