What happens when EEPROM is written too many times?

Go To Last Post
7 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The Atmega328 EEPROM can be written about 100k times. What happens if it is written more than 100k times? Will it cause the MCU to fail or will it cause only the EEPROM to malfunction? Can one still be able to read the EEPROM? Thank you.

Today, my Atmega328 suddenly failed and I am not sure what is the cause. I was wondering if it could be the EEPROM being written too many times.

http://playground.arduino.cc/Cod...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The eeprom will get stuck bits - you wont be able to change them. The avr will still work.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Kartman wrote:
The eeprom will get stuck bits - you wont be able to change them. The avr will still work.

Can one still be able to read the EEPROM?

Thanks.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes. You can read EEPROM forever.

Otherwise, how could you tell if a bit has 'stuck' ?

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Flash works by storing an isolated charge on a transistor gate. When you erase with high voltage the charge is returned to the 1 state. When you program a 1->0 transition the charge is released. Over time the gate isolation oxidizes to the point where it can no loger hold a charge. That bit is then "stuck". Sure you can still read it but as you can't change it to store your data what's the point? If EEPROM is in danger of wearing out like this (and in reality it takes several million not just 100K erases) then normally you implement "wear levelling" to spread out the data so no one location is written more that 100K. You will also read about "bad block avoidance" and possibly ECCs.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Experiments have shown that the Atmel spec of 100K is pretty conservative. Conservative by a factor of maybe 10 or more.

Think about what 100K means. Suppose that a cell is written every second. 100K seconds is just over a day. Once a day is 274 years.

Not likely unless you specifically wrote the code to do it. Did you?

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

See this recent thread, and follow the link I gave to the earlier wear-out experiment thread, and the links in that one, and ...
https://www.avrfreaks.net/index.p...

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.