Folks:

I have a program that collects 36 bytes per pass, and wants to write this to EEPROM. I am using a big chip, the 24LC512 which can hold:

512000 bits or 64000 Bytes

BUT, its page size is 128... So I am forced to increment my address by 128 each time I write 36 bytes!!

Therefore, If i use the page write [string\36], I use only a little bit of the total chip capacity -- only 36 bytes of each 128. Really only able to use 28% of the memory...

SO, what to do?

1. Write a byte at a time? I suppose I could make a loop after I pick up the 36 byte string, and :

oldaddress ' where we last wrote

for X = oldaddress to (oldaddress+35)
I2cwrite DPIN, CPIN, Chip1, X, string[x],failw
wait 10
next x

The problem is that this will take 36 * 10 ms or .36 seconds.. tooo long!


2. Somehow store up 3 strings and write them every 3rd pass?
bigstring[108] = string[36] + string2[36] + string3[36]

...then write bigstring\108 into memory on each page, thereby only wasting 20 bytes per page??

Problem there is I think the biggest array is 96.. (and I don't know how to make a big array out of smaller ones.

3. ?????

Someone must have some really good ideas about how to deal with this as I am sure it is really common.

Thanks

Tom