Ich bin auf der Suche nach einer Idee für einen schonenden Algoritmus, um die aktuelle Minute des Tages abzuspeichern.
Hintergrund:
Es soll eine Analog-Uhr mit Stunden-und Minutenzeiger angesteuert werden.
Jede Minute gibt es einen Impuls an das Uhrwerk und der Minutenzeiger rückt vor.
Die Uhr zeigt die Zeit mittels DCF77 Empfang an.
Problem1:
Die Uhr wird erstmals eingeschaltet.
Dazu wird die Zeit auf 12:00 gestellt und der AVR eingeschaltet.
Beim Einschalten wird eine Taste gedrückt, damit der AVR weiß, dass die Uhr auf 12:00 steht.
Nach der Synchronisation weiß der AVR, dass er entsprechend Takte an die Uhr senden muss, bis diese mit DCF77 übereinstimmt.
Problem2:
Stromausfall.
Die Uhr bleibt stehen.
Nach dem Wiedereinschalten (Taster ist diesmal nicht gedrückt) und der Synchronisation mit DCF77 taktet die Uhr minütlich weiter.
Es gibt eine Differenz, die der Stromausfallzeit entspricht.
Die Idee ist nun, den internen EEprom jede Minute mit der aktuellen Uhrzeit zu beschreiben. Die kann er sich nach dem Stromausfall holen und feststellen, welche Differenz seitdem besteht und entsprechend nachtakten.
Der Tag hat 1440 Minuten, bei max 100000 Schreibzyklen ist so eine EEprom-Variable nach 70 Tagen tot.
Ich habe 512 Byte EEprom, bei Word-Variablen hätte ich 256 Speicherplätze, mich interessiert ja nur die Minute des Tages.
Frage: Wie bekomme ich die Schreibzyklen gleichmäßig auf, sagen wir, 200 EEprom-Zellen (jeweils Word) verteilt?
Hintergrund:
Es soll eine Analog-Uhr mit Stunden-und Minutenzeiger angesteuert werden.
Jede Minute gibt es einen Impuls an das Uhrwerk und der Minutenzeiger rückt vor.
Die Uhr zeigt die Zeit mittels DCF77 Empfang an.
Problem1:
Die Uhr wird erstmals eingeschaltet.
Dazu wird die Zeit auf 12:00 gestellt und der AVR eingeschaltet.
Beim Einschalten wird eine Taste gedrückt, damit der AVR weiß, dass die Uhr auf 12:00 steht.
Nach der Synchronisation weiß der AVR, dass er entsprechend Takte an die Uhr senden muss, bis diese mit DCF77 übereinstimmt.
Problem2:
Stromausfall.
Die Uhr bleibt stehen.
Nach dem Wiedereinschalten (Taster ist diesmal nicht gedrückt) und der Synchronisation mit DCF77 taktet die Uhr minütlich weiter.
Es gibt eine Differenz, die der Stromausfallzeit entspricht.
Die Idee ist nun, den internen EEprom jede Minute mit der aktuellen Uhrzeit zu beschreiben. Die kann er sich nach dem Stromausfall holen und feststellen, welche Differenz seitdem besteht und entsprechend nachtakten.
Der Tag hat 1440 Minuten, bei max 100000 Schreibzyklen ist so eine EEprom-Variable nach 70 Tagen tot.
Ich habe 512 Byte EEprom, bei Word-Variablen hätte ich 256 Speicherplätze, mich interessiert ja nur die Minute des Tages.
Frage: Wie bekomme ich die Schreibzyklen gleichmäßig auf, sagen wir, 200 EEprom-Zellen (jeweils Word) verteilt?