PCF8583 Sommer/Winterzeit

Gast #25258
Lesenswert?

Hallo,

wenn man weiss, daß die Umstellung von Winter- auf Sommerzeit immer am 
letzten Sonntag im März und die Rückstellung am letzten Sonntag im 
Oktober erfolgt, dürfte das kein Problem sein.

Gruss

Christoph
Gast #25260
Lesenswert?

Hallo,

das Problem dabei, das Gerät läuft nicht immer. Es handelt sich dabei 
nämlich um einen steuerrechner für Traktoren. D.h. die Software läuft 
nur wenn der Traktor auch läuft. Deshalb wird diese einfache Abfrage 
nach Sonntag mind. 24. nicht so einfach funktionieren.

Gruß Jens

www.fiedelak-elektronik.de
#25261
Lesenswert?

int szeit = WINTER;
   get_date( &day, &month, &wday );
/************************************** Alte Regelung 
******************/
/*
   if( month > 3 && month < 9 )
      szeit = SOMMER;
   if( month == 3 && (day - wday) >= 21 )
      szeit = SOMMER;
   if( month == 9 && (day - wday) < 21 )
      szeit = SOMMER;
*/
/************************************** Neue Regelung ab 1996 
**********/
   if( month > 3 && month < 10 )
      szeit = SOMMER;
   if( month == 3 && (day - wday) >= 25 )
      szeit = SOMMER;
   if( month == 10 && (day - wday) < 25 )
      szeit = SOMMER;


Peter
Gast #25263
Lesenswert?

Hi,

> das Problem dabei, das Gerät läuft nicht immer. Es handelt sich dabei nämlich um 
einen steuerrechner für Traktoren. D.h. die Software läuft nur wenn der Traktor 
auch läuft.

Ich denk mal das der PCF8583 trotzdem noch unter Spannung steht, sonst 
müsstest ja immer wieder die Zeit neu einstellen, wodurch  das Problem 
mit der Sommerzeit ja gar nicht vorkommen würde ;-).

Kannst es auch mal mit einem Dated Alarm bzw. Interrupt versuchen. Der 
Alarm bleibt bestehen bis er vom µC gelöscht wird. Danach stellst das 
Datum für die nächste Zeitumstellung. Musst halt mindestens einmal in 
der Sommer- und einmal in der Winterzeit auf den Acker.

Die sicherste Lösung ist aber sicherlich die mit dem Flag im EEprom oder 
im Ram des PCF8583. !!!!

Musst dich aber bischen beeilen hast weniger als 16h Zeit.

Gruss Martin.
Gast #25265
Lesenswert?

@Peter:
Welcher Wertebereich ist für wday einzusetzen? (0-6 oder 1-7). Ist dabei 
Montag oder Sonntag dem kleinsten Wert zugeordnet?
Oder direkt: Ist deine Routine auf das DCF77-Protokoll zugeschnitten?

Schmittchen.
#25266
Lesenswert?

@Schmittchen,

ist schon uralt das Programm.
Ich habs geschrieben, als Windows noch nicht mit der Sommerzeit umgehen 
konnte und es dann in der autoexec.bat aufgerufen. Anbei der komplette 
Code.

Tut jetzt bei mir immer noch seinen Dienst (Windows-NT bzw. 
Windows98SE).


Das Datum liefert der DOS Interrrupt 21. Ich glaube, Sonntag=0.


void get_date( int *day, int *month, int *wday )
{
   asm {
      mov ah, 2Ah
      int 21h
   }
   *wday = _AL;
   *day = _DL;
   *month = _DH;
}


Peter
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren