PittyJ schrieb:
> Noch mal zur Uhr selber:
> Eigentlich keiner speichert seine Uhrzeit in 6 Variablen (year, month,
> day, hour ...) ab und rechnet damit herum.
Das würde ich so nicht unterschreiben.
Kommt immer drauf an, was man mit der Uhr vor hat.
> Das reduziert den Aufwand, dass man in der Interrupt-Routine dann diese
> vielen If-Vergleiche für unterschiedliche Monate und Schaltjahre hat.
DIe sind für einen AVR harmlos, weil alles auf Bytebene geht.
long-Rechnerei ist allerdings für einen AVR auf nicht gerade
Zuckerschlecken mit seinen 8 Bit Registern.
Wobei allerdings das hier
1 | if(day == 31 && ( month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ) && hour == 23 && minute == 59 && second == 59)
|
schon unnötig komplex ist (denn da wird ja noch wo eine Regel für 30
Tage sein, eine Regel für den Februar). Da ist man mit einem Array
besser bedient, in dem die Tage pro Monat stehen und die Weiterschaltung
anhand der Uhrzeit ergibt sich durch die Schachtelung sowieso von
alleine. EInzig Schaltjahre erfordern ein bischen Rechnerei.
Aussserdem: genau dieser Teil der Uhrenweiterschaltung STEHT
vernünftigerweise in der Interrupt Routine, die die Uhr bedient. D.h.
die Fragestellung stellt sich so gar nicht.