Conforme você declara, a EEPROM interna tem uma vida útil de 100.000 ciclos de gravação. Isso não é um palpite - uma proporção muito significativa do ATmega328 alcançará esse número sem problemas. Eu testei três processadores antes e todos atingiram 150.000 ciclos sem problemas.
É importante observar o modo de falha da EEPROM. A maioria dos projetos de "destruidor de EEPROM" repetidamente lê / grava até que os dados não sejam gravados. Antes deste ponto, a EEPROM ainda estará danificada. Isso se manifestaria se os dados não fossem retidos por um período razoável. Não é aconselhável contar com mais de 100.000 ciclos de gravação por esse motivo.
A EEPROM é diferente da RAM em um ATmega. Escrever para ele não é simples ou rápido, mas está envolvido em uma biblioteca amigável do Arduino , ocultando essa complexidade do usuário.
O primeiro nível de indireção é a biblioteca EEPROM , que é trivialmente simples], apenas chamando duas outras funções para leitura e gravação. Isso chama eeprom_write_byte, encontrado aqui .
Essa função usa montagem embutida, portanto, pode não ser facilmente entendida. Há um comentário que é facilmente compreendido:
Definir o modo de programação: apagar e escrever
Isso sugere uma das complexidades de lidar com a EEPROM - para escrever para ela, você precisa primeiro apagá-la. Isso significa que, se você chamar EEPROM.write (), ele executará um ciclo de gravação, independentemente do valor que estiver gravando.
Isso significa que escrever repetidamente 0xFF provavelmente terá o mesmo efeito que escrever 0xFF, 0x00,0xFF, 0x00 etc.
Existem maneiras de contornar isso - você pode tentar chamar EEPROM.read () antes de EEPROM.write () para ver se o valor já é o mesmo, mas isso leva mais tempo.
Existem outras técnicas para evitar desgaste excessivo da EEPROM, mas o uso delas depende da sua aplicação.