Hallo jurs,
stopp, dass läuft etwas in die falsche Richtung. Das ist alles Dein Code, legal modifiziert.
Dort wo ich den her habe, hast Du selbst geschrieben das man „tzHours“ noch wegrationalisieren kann um ein Byte einzusparen. Wenn man weis in welcher konstanten Zeitzone die Uhr läuft. Ohne das man die Uhr selbst um die Stunde +/- stellt. Das habe ich gemacht. Nichts weiter.
Meine modifizierte RTC DS3231 Funktion von Dir nutzt globale Variablen, ja, aber nur am Ende zur Anzeige. Und eben dann zur Korrektur der Stunde Sommerzeit/Winterzeit an anderer Stelle.
Die neue schnellere „Sommerzeit_aktiv“ Funktion nutzt weiterhin nur lokale Variablen. Ist nur um tzHours „gekürzt“.
Die alte „Sommerzeit_aktiv“ Funktion unten drunter, die auskommentiert ist, nutzt globale Variablen. Hier habe ich nur die Namen der Variablen vorbeugend geändert, weil die rot markiert wurden. Die Funktion ist ansonsten unverändert. Um die geht es jedoch nicht.
Ich hatte die ganze Zeit mit der alten Funktion die Jahreszahl 2stellig. Hat funktioniert.
Jahr = bcdToDec(Wire.read() );
Mit der neuen Sommerzeit Funktion funktioniert es mit 2stelliger Jahreszahl nicht mehr. Deshalb habe ich die Codezeile um +2000 ergänzt.
Meine Frage war jetzt, gibt es einen ersichtlichen Grund warum die Formel mit 2stelliger Jahreszahl anders rechnet?
Wenn ich die Uhr auf 30.03.2014 01:59 stelle und warte bis es 2 Uhr wird, dann „stellt“ sie sich einfach nicht auf 3 Uhr. Die Funktion liefert weiterhin „false“ zurück. Ist die Jahreszahl 4stellig, funktioniert alles und liefert dann „true“ zurück.
Ich hoffe das Problem ist jetzt klarer beschrieben? ![]()
Wenn es nur noch mit 4stelliger Jahreszahl funktioniert, dann muß ich eben damit leben. Nur wollte ich gern wissen warum es plötzlich mit 2stelliger nicht mehr funktioniert. Muß ja einen Grund haben. :~
Wünsche noch schöne Oster Feiertage ...
@ rudirabbit:
das war etwas Quatsch, wa Du rauskopiert hast. Das ist der "alte" Code. Ich verlinke mal den eigentlichen Thread, muß jeder selber komplett lesen um was es geht. Da wird auch viel erklärt zu dem Code. Sommerzeitumstellung - Deutsch - Arduino Forum