Come indicato, la EEPROM interna ha una durata di 100.000 cicli di scrittura. Questa non è un'ipotesi: una percentuale molto significativa di ATmega328 raggiungerà questo numero senza problemi. In precedenza ho testato tre processori e tutti hanno raggiunto 150.000 cicli senza problemi.
È importante notare la modalità di errore di EEPROM. La maggior parte dei progetti di "EEPROM destroyer" leggono / scrivono ripetutamente fino a quando i dati non vengono scritti affatto. Prima di questo punto, la EEPROM sarà comunque danneggiata. Ciò si manifesterebbe se i dati non fossero conservati per un periodo ragionevole. Non è saggio fare affidamento su qualcosa di più di 100.000 cicli di scrittura per questo motivo.
EEPROM è diversa dalla RAM su un ATmega. Scrivere su di esso non è semplice o veloce, ma è racchiuso in un'amichevole libreria di Arduino , che nasconde questa complessità all'utente.
Il primo livello di riferimento indiretto è la libreria EEPROM , che è banalmente semplice], che chiama solo altre due funzioni per leggere e scrivere. Questo chiama eeprom_write_byte, trovato qui .
Questa funzione utilizza l'assemblaggio in linea, quindi potrebbe non essere facilmente comprensibile. C'è un commento che è facilmente comprensibile però:
Imposta la modalità di programmazione: cancella e scrivi
Questo suggerisce una delle complessità della gestione della EEPROM: per scriverla, devi prima cancellarla. Ciò significa che se chiami EEPROM.write (), eseguirà un ciclo di scrittura indipendentemente dal valore che stai scrivendo.
Ciò significa che scrivere ripetutamente 0xFF avrà probabilmente lo stesso effetto della scrittura di 0xFF, 0x00,0xFF, 0x00 ecc.
Esistono modi per aggirare questo problema: puoi provare a chiamare EEPROM.read () prima di EEPROM.write () per vedere se il valore è già lo stesso, ma ciò richiede ulteriore tempo.
Esistono altre tecniche per evitare l'eccessiva usura della EEPROM, ma il loro utilizzo dipende dall'applicazione.