Difference between 24lc256 and Problematic at24c256

Hi.
This small eeproms are famous, atleast 24lc256 is the most popular e2prom around arduino projects. But there is an alternative for it, AT24c256 which has a bit different behaviours.
After checking datasheet i got that alternative(24c256) has a 2bit addressing instead 3, and it has 2 types of operation:

  • low voltage [1.8v - 3.6v]
  • standard voltage [2.7v - 5.5v]

I dont find any thing about how to select one operation, please guide me

I want to use AT24c256 in a range of 2.7v - 3v with a bare arduino (standalone programmed mcu)

after many different tests with more than one IC, ic AT24C256 get sucks in page write instructions!
in my test, i used 16 byte buffer to write an array of 168 word's to the eeprom and then read them back to check if every thing is ok.

16 byte buffer means i dont write more than 16 bytes per i2c transmissions from begin to end

when i started to write whole of the array in 21 steps (a loop of 8 * 2 write instruction per I2c transmission) every thing looks great. results was correct.

but when i changed the code and added a small write instruction (write 4 bytes in address 0) before that big write loop (168 word) malfunction occurs! some bytes in eeprom recorded in wrong place or something like it, for example 64th to 68th bytes was recorded to address 0 to 4! also 192th to 196th bytes was recorded to 64 to 68 and so on, but in between of them other bytes was recorded correctly.

SO :
i should write each byte in single I2C transmission! other wise auto increment of at24c256 make problems.


Tags:

problem with at24c256

at24c256 wrong page write

at24c256 vs 24lc256

Payam_sbr:
ic AT24C256 get sucks in page write instructions!

It is not the memory, your code sucks!

Read again the datasheet section about page writes. You should NOT cross the page boundary when writing. All EEPROM and Flash based memories I know works this way.

Also some EEPROM datasheets warn that a write refreshes whole page regardless how many bytes are written. So writing single bytes is not only slow but also may wear out the EEPROM faster.

Payam_sbr:
2 types of operation:

  • low voltage [1.8v - 3.6v]
  • standard voltage [2.7v - 5.5v]

I dont find any thing about how to select one operation, please guide me

The EEPROM is either manufactured as "standard voltage" or "low voltage" part. When buying from a good supplier you should be able to choose variant. Sellers on eBay usually don't state which part it is. But I think it is safe to assume they ship the standard voltage variant - they don't want Arduino people complaints about malfunctioning chips. You can tell from the chip markings. IIRC there is 18 for 1.8V part or 27 for 2.7V part printed somewhere on the package.

1 Like