Go Down

Topic: number of EEPROM write cycles (Read 4251 times) previous topic - next topic


Hi all,
the EEPROM has a guaranteed life of 100.000 write cycles, as written in the ATmega168 datasheet.
I wanted to know, what the "real" lifetime is, because i use it for a counter in a project.
Therefore a have written a short sketch that increments a 24 bit counter and write it every time
to the EEPROM. Afterwards it is read and compared. This sketch runs until the read value is different
from the written one.
The Sketch is still running (it takes approx. 10 ms to write 3 bytes, so i can only increment 100 times per second)...
And currently it has done 5.6 Million cycles without error!!!!!!
Isn't that interesting???


its just statistics..

Your harddisk will probably have a mean time before failure of 5 years, but ....
it could also happen hapjgtu45gtvö4j right 786r1i3z4hcigew now  !57%&bgBjhbg%675rfu78 :o



I agree with Eberhard that a test sample of one chip does not indicate that all chips will achieve similar results.

Also, the results may not be conclusive because it is possible that data read immediately after write may verify ok but on an overused chip the written data could decay over time.  I don't know if this happens with the flash used in the arduino chip, it may be worth testing if after all those cycles, data values written remain stable over long periods of time.

But if data stored in EEPROM is in any way critical to an application then IMHO one should stick within the manufactures guidelines.


There's a way more elegant solution to your counter storage problem, and the ATmega chips have (nearly) all components on board to implement it. Instead of storing the counter in EERPOM memory every time the counter value changes, keep it in RAM instead. Use a monitoring circuit (e.g. analog comparator + voltage reference of the ATmega) to detect a power failure/dip early on. Then, and only then, write the value to EEPROM. Such an approach should keep you from having to perform statistically relevant EEPROM endurance tests.


Another approach would be to use "load leveling" i.e, writing to a different memory slot each time, I think the EEPROM write limits (it's only a specified limit and SHOULD be substantially greater) only apply to the actual slot written too.


Go Up