Sie könnten einen Mikrocontroller verwenden, der ein EEPROM eingebaut hat. Der 8-Bit- PIC16F84A verfügt über 64 Byte EEPROM, was normalerweise für 10.000.000 und mindestens 1.000.000 Schreibvorgänge in jedes Byte geeignet ist (dies wird als Bytedauer bezeichnet). Der in einer anderen Antwort gewählte PIC, PIC12F635, hat ein 128-Byte-EEPROM und eine Bytedauer von 100.000 Schreibvorgängen. Der PIC24F16KA102 , ein 16-Bit-Prozessor, verfügt über 512 Byte EEPROM und eine Bytedauer von 100.000 Schreibvorgängen.
Das OP zeigt nicht an, wie oft die LED blinkt. Nehmen wir für die Zwecke dieser Diskussion an, dass es viermal pro Minute ist.
In einem Jahr wird es blinken
4∗60∗24∗365=2,102,400 times.
Da das EEPROM sowohl das letzte Ein- als auch das letzte Ausschaltereignis erfassen muss, wird es auf die doppelte Anzahl oder etwa 4,2 Millionen Mal geschrieben . In fünf Jahren sind das 21 Millionen Mal.
Dies wird eindeutig die Spezifikationen aller EEPROMs übertreffen, die ich jetzt in einen Mikrocontroller eingebaut habe.
Dafür gibt es aber eine einfache Lösung. Anstatt immer wieder dasselbe Byte zu verwenden, um den Ein- oder Ausschaltstatus zu verfolgen, kann ein Array von Bytes verwendet werden, das den gesamten Chip ausfüllt.
Sie benötigen zwei Bytes für jedes Element im Array. Ein 64-Byte-EEPROM wie das PIC16F84A kann also 32 Elemente aufnehmen. Jedes Mal, wenn Sie in das EEPROM schreiben, schreiben Sie eine 0 in das Statusbyte (dh dieses Element enthält Daten) und entweder eine 0 in das Datenbyte (LED war zuletzt aus) oder eine 0xFF (LED war zuletzt an). Wenn Sie das nächste Mal auf das EEPROM zugreifen, indizieren Sie die Elemente, bis Sie eines mit einem 0xFF-Statusbyte finden, und verwenden Sie dann dieses Element. Wenn keine mehr vorhanden sind, initialisieren Sie das EEPROM erneut und beginnen Sie von vorne (für die Low-End-PICs bedeutet dies, dass in jedes der Statusbytes 0xFF geschrieben werden; für das PIC24 gibt es einen Befehl zum Löschen des gesamten EEPROM). Wenn Sie den letzten Status der LED kennen müssen, indizieren Sie das Array wie zuvor, gehen aber jetzt ein Element zurück und lesen das Datenbyte aus.
Dies dividiert im Wesentlichen die Anzahl der Zugriffe auf ein einzelnes Byte durch einen Faktor von 16 für den PIC16F84A (16 und nicht 32, da jedes der Statusbytes zweimal geschrieben wird). Es würde also insgesamt 16 Millionen Schreibvorgänge verarbeiten können, was für fast vier Jahre an Daten ausreicht. Und der PIC12F635 mit seinem größeren EEPROM, aber einer geringeren Bytedauer von 100 KByte könnte insgesamt 3,2 Millionen Schreibvorgänge verarbeiten, was neun Monaten entspricht.
Der PIC24F16KA102 mit seinem 512-Byte-EEPROM und der Bulk-Erase-Funktion könnte 25,6 Millionen Schreibvorgänge verarbeiten, was für mehr als fünf Jahre ausreicht.
Wenn die Blinkrate nur viermal pro Stunde statt viermal pro Minute war , bedeutet dies insgesamt 70.080 Schreibvorgänge pro Jahr. Selbst der PIC12F635 mit einer Lebensdauer von 100.000 Schreibvorgängen pro Byte würde 45 Jahre halten!