Question about the EEPRO write /erase cycle death

According to Arduino EEPROM documentation online:

An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it.

What exactly will happen at the end of the cycle? Will the Arduino UNO microcontroller die!?

jecalderon:
What exactly will happen at the end of the cycle? Will the Arduino UNO microcontroller die!?

The microcontroller will work absolutely fine.

At some time - the average time being specified - one or more locations will fail to read the same data that you have just written to them. It may be possible to check whether data has been successfully written in order to perform repeat writes and recover some of these errors, but over time, more and more locations will fail, more permanently.

If you do not want to use the EEPROM, or if you only rarely need to write to it, this will never be a problem. Note that this only applies to repeated writing, it has nothing to do with reading; you may read every microsecond for years if you need to. {Minor hyperbole here. :D}

Paul__B: At some time - the average time being specified...

Incorrect. The 100,000 is a guarantee making it the minimum number of writes before a failure.

...one or more locations will fail to read the same data that you have just written to them.

There are at least two other failure modes: failure to retain and stuck bit. The value reads as written until after the power is cycled. One or more bits get stuck high or low.

jecalderon: What exactly will happen at the end of the cycle? Will the Arduino UNO microcontroller die!?

Individual bits will start to get "stuck" in the EEPROM. Everything else will be fine.

[quote author=Coding Badly link=topic=258742.msg1829379#msg1829379 date=1407130056] The 100,000 is a guarantee making it the minimum number of writes before a failure. [/quote] And if it fails the guarantee?

[quote author=Coding Badly link=topic=258742.msg1829379#msg1829379 date=1407130056]

...one or more locations will fail to read the same data that you have just written to them.

There are at least two other failure modes: failure to retain and stuck bit. The value reads as written until after the power is cycled. One or more bits get stuck high or low. [/quote] The one about the power cycling is interesting - I wonder by what mechanism that would happen?

The "stuck bit" situation is of course, merely one variant of what I described. If the bit is stuck, it will indeed fail to read back what is written. For half (or perhaps more) of the possible data combinations, mind you.

Paul__B: [quote author=Coding Badly link=topic=258742.msg1829379#msg1829379 date=1407130056] The 100,000 is a guarantee making it the minimum number of writes before a failure.

And if it fails the guarantee? [/quote]

Send it back. Immediately!

I always do 100,000 writes on all my chips as soon as I receive them, just to make sure they're within spec.

(You can't be too careful with eBay sellers...)

Paul__B: And if it fails the guarantee?

Contact Atmel.

The one about the power cycling is interesting - I wonder by what mechanism that would happen?

Can't say. In that case, I am the messenger reporting what I was told by a knowledgeable EE.

I did some exhaustive testing on an EEPROM we use at work. Due to a bug, we accidentally wore out part of an EEPROM, so we decided to investigate further.

After about 2-3 million program cycles (EEPROM rated for 100,000), the part of EEPROM being written to started to show “wear”. The failure mode surprised me, because a write/verify passed. That is, the first read after the write returned correct data. However over subsequent read cycles, any bits programmed to ‘0’ revert to ‘1’, but in an analog way, so that looking at the scope trace I could see intermediate voltage levels. Eventually the data reads back as all '1’s.

These results may depend on the make of EEPROM or technology used, but that’s what I found on that sample (25LC640 type).

We have a CRC on all the data in the EEPROM, so we would detect the error. But if you rely on a write/verify cycle to test for correct programming, then that may be insufficient.

The fact our EEPROM worked ok for over 1 million cycles was reassuring, the 100k minimum is a very conservative value. Microchip have a tool to calculate what sort of error rate to expect from different EEPROMs and usage profile. The maximum error rate at 100k cycles is non-zero, but so small as to not worry about, at least for general commercial applications.