Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

DCF77 Kategorie: Programmierung C (von Werner L - 2.04.2008 15:48)
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, CC-Pro 128 Application Board, eigenes Board
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)