No solo se especifican los ciclos de escritura, sino los ciclos de borrado / escritura . En el AVR EEPROM se puede borrar por byte. Borrado establece todos los bits en 1
, escribiendo los bits de forma selectiva. No puedes programar un 1
, solo 0
s. Si desea establecer al menos un bit en 1
, debe borrar ese byte.
El borrado elimina las cargas de la puerta flotante del FET, pero en cada ciclo de borrado, una parte de la carga permanece en la puerta flotante, que no se eliminará a través del túnel cuántico. Esta carga se acumula y después de varios ciclos, queda tanta carga en la puerta flotante que el bit aún leerá 0
después del borrado. Eso es lo que determina la vida de la EEPROM, se borra en lugar de escribir. Por lo tanto, puede escribir con seguridad 0
s adicional, siempre y cuando no borre.
Como resultado, si la hoja de datos especifica 100k ciclos de borrado / escritura, puede tener un máximo de 800k ciclos de escritura, un bit a la vez, para borrados de 100k.
Si está utilizando solo una parte del espacio de memoria EEPROM, puede extender su vida útil distribuyendo los datos, como dice Matt, esto se denomina nivelación de desgaste .
El método más simple de nivelación de desgaste al escribir bloques de datos es incluir un contador con los datos. Supongamos que necesita mantener 14 bytes de datos. Agregue un contador de 17 bits como dos bytes, probablemente tenga un poco de repuesto para el bit 17. Incrementa el contador antes de escribir el bloque de 16 bytes. Si el contador ha alcanzado los 100 000, sabe que este bloque se está volviendo poco confiable, por lo que se mueve a los siguientes 16 bytes. Use esto hasta que se use también. Y así. Una memoria de 4k consta de 256 bloques de dieciséis bytes, por lo que puede extender los ciclos originales de 100k a 25 millones.
Debería ser obvio que su ganancia es mayor con bloques de datos más pequeños.
lecturas adicionales
data retención en un microcontrolador