Hallo,
die Aufgabe besteht darin zu speichern wann das Gerät Ein- und wieder Ausgeschaltet wird und zwar mit Datum und Uhrzeit. Den Einschaltzeitpunkt zu sichern ist kein Problem, es wird Zeit und Datum aus einer Externen RTC ins eeprom geschrieben. Beim Ausschalten ergeben sich aber so einige Probleme. Da auch die Uhrzeit minutengenau erfasst werden soll kommt das eeprom nicht in Frage. Das Gerät hängt im Normalfall ständig am Netz und wenn jede Minute ins eeprom geschrieben wird sind die max. Schreibzyklen bis es fehlerhaft wird schnell erreicht.
Bisher habe ich mir so beholfen und die Ausschaltzeit in das NV Ram der RTC per I²C geschrieben, mit dem Nachteil das bei einer Stromunterbrechung während des Schreibvorganges die Daten Fehlerhaft sind (gleiches gilt auch für das Schreiben ins eeprom). Leider hat sich in der Praxis gezeigt, dass die Wahrscheinlichkeit dafür doch mehrfach gegeben ist. Mein Workaround bestand nun darin die Werte beim Auslesen aud Plausibilität zu prüfen und wenn nicht Plausibel etwas zu schummeln.
Gibt es eine elegantere Lösung für das Problem?
Gruß
Stefan
die Aufgabe besteht darin zu speichern wann das Gerät Ein- und wieder Ausgeschaltet wird und zwar mit Datum und Uhrzeit. Den Einschaltzeitpunkt zu sichern ist kein Problem, es wird Zeit und Datum aus einer Externen RTC ins eeprom geschrieben. Beim Ausschalten ergeben sich aber so einige Probleme. Da auch die Uhrzeit minutengenau erfasst werden soll kommt das eeprom nicht in Frage. Das Gerät hängt im Normalfall ständig am Netz und wenn jede Minute ins eeprom geschrieben wird sind die max. Schreibzyklen bis es fehlerhaft wird schnell erreicht.
Bisher habe ich mir so beholfen und die Ausschaltzeit in das NV Ram der RTC per I²C geschrieben, mit dem Nachteil das bei einer Stromunterbrechung während des Schreibvorganges die Daten Fehlerhaft sind (gleiches gilt auch für das Schreiben ins eeprom). Leider hat sich in der Praxis gezeigt, dass die Wahrscheinlichkeit dafür doch mehrfach gegeben ist. Mein Workaround bestand nun darin die Werte beim Auslesen aud Plausibilität zu prüfen und wenn nicht Plausibel etwas zu schummeln.
Gibt es eine elegantere Lösung für das Problem?
Gruß
Stefan