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

Re: DCF77 Kategorie: Programmierung C (von Gunter D. - 12.05.2008 20:07)
Als Antwort auf DCF77 von Werner L - 2.04.2008 15:48
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application 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
>
>
>
>
>
>
>

Hallo Werner,

ich habe dein Beispiel mal ausprobiert und merke, dass nach der Synchronisation die RTC
dann immer 2 Sekunden vor geht! Anscheinend muss man noch an der Threadsynchronisation
was optimieren.
Ich habe mir jetzt den Uhrenbaustein PCF8583 bestellt und versuche diesen in Betrieb zu nehmen.
Leider gibt es kein Beispiel fĂŒr diesen Baustein im Netz.
Ich hab unter der Seite einen Code fĂŒr den DS 1629 gefunden, der eine ganz andere Adressierung
hat und in Basic ist.
LINKTITEL

Kannst Du, oder jemand aus dem Forum, mir fĂŒr den PCF8583 ein paar Tipps geben, wie ich den Code
fĂŒr den DS1629 umschreiben kann? (klar - ohne Thermometer)

Gunter



    Antwort schreiben


Antworten: