| ??? 12/16/02 15:28 Read: times |
#34542 - serial EEPROM life extension |
To achieve more than 100.000 cycles of writing and reading a 16 bit word to a serial EEPROM I once, a while ago, wrote something like this (not actual code):
unsigned int FetchEE (void)
{
unsigned int offset;
unsigned int data ;
while (!offset)
{
for (offset = 0 ; offset < EEsize; offset++)
{
data = ReadIntFromEE(offset) // execute BIOS routine
if ( data != 0xffff) break ;
}
}
offset--;
data = ReadIntFromEE(offset);
return (data);
}
void WriteEE (unsigned int data)
{
unsigned int offset;
bit flag = FALSE;
;
while (!flag)
{
for (offset = 0 ; offset < EEsize; offset++)
{
data = ReadIntFromEE(offset) // execute BIOS routine
if ( data = 0xffff)
{
flag = TRUE;
break ;
}
}
if (!flag)
{
EraseEE();
flag = FALSE;
}
}
data = WriteIntToEE(offset);
return (data);
}
While this works quite well, I am now going to use a larger serial EEPROM for another project and this will take a very long time when at the end. Does anyone have a better idea? Erik |



