Limit for the EEPROM write cycles: how it works?

Based on the datasheet of the ATmega1280 (also valid for many other models), the endurance of the EEPROM write cycles is, at least, 100,000.

Questions, assuming this worst case (100,000=100K):

1) Does it apply to each cell (each address of the EEPROM) or for the overall access? In other words, if I write 100K times at the address x, only this cell will be affected or the overall EEPROM module?

2) Any bad experiences in this area? Who had problems so far?

Thanks!!

1) Does it apply to each cell (each address of the EEPROM) or for the overall access? In other words, if I write 100K times at the address x, only this cell will be affected or the overall EEPROM module?

I believe the spec refers to each cell, or each 'block' maybe, that is why load spreading is sometime used to not keep pounding the same addresses in a block. The 100K spec is pretty conservative I've been told and in actual destructive testing I've heard of some reporting several million writes before problems were seen.

Lefty

Lefty, you are right. The following comes from an official doc:

AVR101: High Endurance EEPROM Storage Features "Having a system that regularly writes parameters to the EEPROM can wear out the EEPROM, since it is only guaranteed to endure 100 k erase/write cycles. Writing the parameters to a circular buffer in EEPROM where each of the elements in the buffer can endure 100 k erase/write cycles can circumvent this.."

In my case, one address must be written more often. Even with "spreading" a little bit, I will have limitations because the majority of the EEPROM space is already in use.

Anybody knows about what happens when it "failures" Fatal errors, like resets? Or something like write 12 and read 10?

Based on the reading of this paper (other manufacturer, a little bit old also):

http://ww1.microchip.com/downloads/en/AppNotes/01019A.pdf

it is possible to confirm what Lefty commented about conservative information. It seems that if we consider a scenario with non-extreme temperatures and relative low-voltages (in my case, I will work with 3.3V which is not the maximum nominal voltage), the 100K number can be easily increased to millions.

Because I do not have guarantee about this, I will include a complete EEPROM write/read test in the auto-test routine of the device (only started by manual trigger).

Suggestions or other ideas/experiences?

1) Does it apply to each cell

Yes.

2) Any bad experiences in this area? Who had problems so far?

I've beaten the snot out of one of my Teensy boards without any failures. Even subjecting it to extremely low-voltage and erratic power supply conditions.

I've stopped worrying about write-cycles. If it happens, it happens. Throw away the processor (or re-purpose it) and get a replacement.

Anybody knows about what happens when it "failures" Fatal errors, like resets? Or something like write 12 and read 10?

If I remember correctly, the failures are: failure to erase (the previous value is read), stuck bit, "fading" (read value changes over time).

it is possible to confirm what Lefty commented about conservative information

I vaguely recall that problems start to occur after 1 to 4 million writes.

The folks at avrfreaks.net have done some destructive testing. This topic has been discussed here several times. Searching should get you lots of details.

It's important to remember that the write guarantee is [u]not[/u] for a certain number of write cycles but for a certain number of write cycles [u]and[/u] a retention time. For example, writing to a cell 1 million times may seem to work fine but the retention time may be reduced to six seconds.

Suggestions or other ideas/experiences?

Include a CRC with the data.

Suggestions or other ideas

Arrange things so you get an early warning of the loss of power and then use the time to write the parameters to the EEPROM. That way you don't always have to keep writing them.

I've stopped worrying about write-cycles. If it happens, it happens.

Were you on the shuttle team in charge of the O rings?