DCF77 Kategorie: Programmierung C (von Werner L - 2.04.2008 15:48) | ||
| ||
Hallo, DCF77-Versucher, ich hatte früher auch Schwierigkeiten mit diesem Programm und habe dann einfach den Uhrenbaustein mit IC PCF8583 verwendet. Die letzten Hilferufe im Forum zum Demoprogramm DCF77 haben mich veranla�t, doch noch einmal genau hinzusehen. Es zeigt sich, da� die Interrupt-Routine INT_10ms zu lange läuft, so da� letztendlich einzelne Interrupts verschluckt werden und die Synchronisation nicht sauber läuft. Das Problem lä�t sich beheben, indem in der Routine RTC(---,---) die beiden Anweisungen // Display_Buffer_Set(); // LCD_Write(); auskommentiert werden (bringt die notwendige Zeitreserve für die Interruptroutine) und in eine zweite Task verlagert werden wie folgt: void AnzeigeTask(void); { while (1) { Thread_Delay(500); // 5 Sekunden Verzögerung (als Beispiel) Display_Buffer_Set(); // andere Routinen sind LCD_Write(); // hier auch möglich } } Das Programm mu� dann mit MultiThreading laufen mit der zusätzlichen Anweisung Thread_Start(1,AnzeigeTask); Die Anzeige wird dann alle 5 Sekunden unabhängig von der Interrupt-Routine aktualisiert. Weitere oder andere Routinen zur Nutzung der Zeitvariablen lassen sich so nutzen. Vielleicht hilft es ein wenig. Die einfachere und zuverlässigere Lösung für ernsthafte Projekte ist natürlich immer der Uhrenbaustein. Viel Erfolg, Werner | ||
Antwort schreiben Antworten: Re: DCF77 (von MartinK - 7.06.2008 6:34) Re: DCF77 (von Gunter D. - 12.05.2008 20:07) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum