EEprom question or a Clock answer?
grasshopper
Posts: 438
So I have read about the EEProm wearing out, but how much can I toss at it? I want to write to the EEprom every hour that my device is turned on. I want to write to the same address location and want to know if this is acceptable, or will after a month it wear out. I am looking for a 10-15 year life cycle on this device.
If it is not a good idea then how can I keep a log of how many hour my device has ran. This way if a customer returns my product I will how long the device has ran.
Thanks
If it is not a good idea then how can I keep a log of how many hour my device has ran. This way if a customer returns my product I will how long the device has ran.
Thanks
Comments
It would be much better to spread out the information across the whole EEPROM and avoid the wear issue. Assign a set of locations for each hour in the day and each day in the year from the time the device was initialized. Since EEPROMs are initialized to $FF, your program can tell if a location is not initialized. If you have 2 bytes (a 16-bit word) for each set of locations and some kind of timer to tell when an hour has passed, you search the 366 x 24 words for the highest value that's not $FFFF, then store that value + 1 in the next word (wrapping around to the start of this table if necessary). If all the locations have $FFFF, store a $0000 in the first location.
If you want to store data as well, allocate several bytes to each table entry and use the extra bytes for the data. We're talking here about 10K for the counters. You could even use just a 24 entry table. It would take a very large number of hours to wear out the EEPROM.
Post Edited (Mike Green) : 1/9/2009 5:43:29 AM GMT
Since the eeprom wear only on bit initialization (when there is a need to restore a 0 in 1) you can use 3 bytes to track the 24 hours in a day by progressively togling the 24 ones to zeros (one wear per day) and one word (two bytes) as integer to track days (again one wear per day) 10K writings = 27 years
Dario
The simplest solution is the $1.19 4k fram which allows you to store 512 bytes of value every second for (100's years?) This can be added right to the program eeprom pins.
FM31L278 http://www.ramtron.com/products/integrated/processor-companion-product.aspx?id=29
FM32L278 http://www.ramtron.com/products/integrated/processor-companion-product.aspx?id=96
Erik provides an interesting solution - FRAM, "Ferroelectric RAM". Allow me to expand on Erik's post...
More on FRAM or F-RAM here...
en.wikipedia.org/wiki/Ferroelectric_RAM
RAMTRON makes FRAM devices that are variously addressed (serial included). Look here:
www.ramtron.com/products/nonvolatile-memory/default.aspx
These RAMTRON FRAM parts are low-cost and readily available even in unit qty.
from the online distributors (search via www.octopart.com).
I see these FRAM devices as nice solutions for highly repetitive static reentrant storage of data for reboot configuration of CPLD and/or FPGA type devices.
There are NV-SRAM devices from the likes of Maxim-Dallas and others that offer SRAM with on-chip or external Li-Ion backup battery that lasts 10 years (on-chip) and has unlimited write cyclea.
Also consider external flash storage via higher-end SD cards that have wear leveling built-in; this dramatically and transparently increases traditional flash storage write-life. In production, the likes of a SD card may be available for placement on a PCB, but I've never seen such form-factor readily available in small quantities.
Best Regards, David
Try this:
www.ramtron.com/files/datasheets/FM24CL04ds_r3.0.pdf
ww1.microchip.com/downloads/en/devicedoc/21203M.pdf
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob
You need this: http://www.ramtron.com/files/datasheets/FM24L256ds_r1.1.pdf
or with some more features this: http://www.ramtron.com/files/datasheets/FM31L27x_r2.0.pdf·(FM31L278)
both can replace the prop eeprom
The FM24L256 is a 3.3V part and would interface directly with the Prop with no voltage issues. I don't believe there's an FM24L512 yet.
All of these parts are available only in SOIC-8, but there are nice adapters available for PDIP usage from SparkFun and others.