È possibile utilizzare un microcontrollore che ha incorporato EEPROM. Il PIC16F84A a 8 bit ha 64 byte di EEPROM, il che è buono per 10.000.000 e un minimo di 1.000.000 di scritture per ogni byte (questo è noto come resistenza dei byte). Il PIC scelto in un'altra risposta, PIC12F635 ha una EEPROM a 128 byte e una durata in byte di 100.000 scritture. Il PIC24F16KA102 , un processore a 16 bit, ha 512 byte di EEPROM e una durata in byte di 100.000 scritture.
L'OP non indica la frequenza con cui il LED lampeggerà. Ai fini di questa discussione, supponiamo che sia quattro volte al minuto.
Tra un anno lampeggerà
4∗60∗24∗365=2,102,400 times.
Poiché la EEPROM deve acquisire sia gli eventi on che off ultimi, verrà scritta per il doppio di quel numero, ovvero circa 4,2 milioni di volte . In cinque anni, questo è 21 milioni di volte.
Chiaramente, questo supererà le specifiche di qualsiasi EEPROM che ora ho incorporato in un microcontrollore.
Ma c'è una soluzione semplice per questo. Invece di usare ripetutamente lo stesso byte per tenere traccia dello stato on o off, si può usare una matrice di byte, che riempie l'intero chip.
Sono necessari due byte per ciascun elemento dell'array. Quindi una EEPROM a 64 byte, come quella nel PIC16F84A, potrebbe contenere 32 elementi. Ogni volta che si scrive nella EEPROM, si scrive uno 0 nel byte di stato (nel senso che questo elemento ha dati) e uno 0 nel byte di dati (il LED era spento per ultimo) o uno 0xFF (il LED era acceso per ultimo). La prossima volta che si accede alla EEPROM, si indicizza attraverso gli elementi fino a quando non si trova uno con un byte di stato 0xFF, quindi si utilizza quell'elemento. Se non ne è rimasto nessuno, quindi reinizializzare la EEPROM e ricominciare (per i PIC di fascia bassa, questo significa scrivere 0xFF su ciascuno dei byte di stato; per il PIC24, c'è un comando per cancellare l'intera EEPROM). Se è necessario conoscere l'ultimo stato del LED, indicizzare l'array come prima, ma ora tornare indietro di un elemento e leggere il byte di dati.
Ciò sostanzialmente divide il numero di accessi a un singolo byte per un fattore 16 per PIC16F84A (16 e non 32 perché ciascuno dei byte di stato viene scritto su due volte). Quindi sarebbe in grado di gestire un totale di 16 milioni di scritture, sufficienti per quasi quattro anni di dati. E il PIC12F635 con la sua EEPROM più grande ma una minore durata dei byte di 100K, sarebbe in grado di gestire un totale di 3,2 milioni di scritture, sufficienti per nove mesi.
PIC24F16KA102, con la sua EEPROM da 512 byte e la funzione di cancellazione in blocco, sarebbe in grado di gestire 25,6 milioni di scritture, sufficienti per oltre cinque anni.
Se la frequenza di lampeggiamento era solo quattro volte all'ora anziché quattro volte al minuto , ciò significa un totale di 70.080 scritture all'anno. Anche il PIC12F635, con la sua resistenza di 100.000 scritture per byte, durerebbe 45 anni!