Zero not see my EEPROM by I2C

Hi everyone,

I bought 20 x AT24C01 EEPROMs chips, and i didn't able to interface with any of them using I2C.
Here is the link to the data sheet: http://www.atmel.com/Images/doc0134.pdf

I've tried many options, and none worked.

Do i missing something?

I've connected the right pins to the relatives in the board, and it didn't worked.

I've tried few libraries, including extEEPROM, EEPROM24, and also I've tried to scan for I2C devices, but it not recognised.

I've tried to re-wire everything with other wires, no luck.

Thanks for any support from you guys!!!

Did you use 4.7k pullup resistors on the SDA and SCL lines ?

Pete

Hi el_supremo,
I've tried with 10k resistors, no luck.

Thanks

You should still try with 4.7k - 10k may be a bit too weak.
Also, describe which pins you are using just to be sure you've got the right ones.

Pete

I've tried with 4.7k (4k7 i believe its the same), and no luck....

Pete, I’ve also attached some pics for you to see if I’m doing something wrong…

@el_supremo: Now, Suddenly without any change from my side, the I2C scanner started to found device at all addresses it scans, what does that means?
Still no luck with getting the right values from the EEPROM chip, everything is 255. (after write).
Of-course all this with 4k7 resistors.

Whats going on?

Thanks a lot!!!

Still no luck with getting the right values from the EEPROM chip,

Post your code (in code tags - use the </> icon)

It looks like you are jamming two or more pins into one hole in the breadboard. In IMG_0721 it even looks like you have the red wire, an IC pin and two resistor leads all jammed into the same breadboard hole. That’s not a good way to hook them up. It also looks like the two pieces of breadboard are too far apart and you’ve had to spread the IC pins to make them fit. They may not be making proper contact. Get a complete breadboard and wire the thing up with one lead per hole.

Pete

@el_supremo, Thanks for those advices.

I did the multipin per hole to make sure that the connection is strong and stable.
The red wire is 5V, the blue is SDA, purple is SCL, green is GND.
I didn't changed anything to the IC pins of the chip in order to make them fit, its simply 2 parts of a breadboard, which i had to cut since i had to put it inside a small package.

I will try by putting one wire/pin/resistor leg at one hole, and will let you know...

Again, thanks a lot Pete

@el_supremo, I've put it on complete breadboard, and no luck...
Again, lets start with the simple issue for now, the I2C scanner found devices at any address it checks.
How that can be? Why?
If i remove the resistors its not found anything...
Of course again, the data from the chip is wrong...
I'm simply using the extEEPROM library for read/write from/to the chip.
I've also tried few other examples I've found on the web using the Wire library directly. Same results.

the I2C scanner found devices at any address it checks.

Which addresses did it print?

Pete

AND post your code (in code tags - use the </> icon).

Pete

#include <Wire.h>

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  while(!Serial);
  listI2CDevices();
}


void listI2CDevices() {
  Serial.println(F(""));
  Serial.println (F("I2C scanner. Scanning ..."));
  byte count = 0;
  
  Wire.begin();
  for (byte i = 8; i < 120; i++) {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0) {
      Serial.print (F("Found address: "));
      Serial.print (i, DEC);
      Serial.print (F(" (0x"));
      Serial.print (i, HEX);
      Serial.println (F(")"));
      count++;
      delay (1);  // maybe unneeded?
    } // end of good response
  } // end of for loop
  Serial.println (F("Done."));
  Serial.print (F("Found "));
  Serial.print (count, DEC);
  Serial.println (F(" device(s)."));
}

void loop(void)
{
}

Serial output:

I2C scanner. Scanning …
Found address: 8 (0x8)
Found address: 9 (0x9)
Found address: 10 (0xA)
Found address: 11 (0xB)
Found address: 12 (0xC)
Found address: 13 (0xD)
Found address: 14 (0xE)
Found address: 15 (0xF)
Found address: 16 (0x10)
Found address: 17 (0x11)
Found address: 18 (0x12)
Found address: 19 (0x13)
Found address: 20 (0x14)
Found address: 21 (0x15)
Found address: 22 (0x16)
Found address: 23 (0x17)
Found address: 24 (0x18)
Found address: 25 (0x19)
Found address: 26 (0x1A)
Found address: 27 (0x1B)
Found address: 28 (0x1C)
Found address: 29 (0x1D)
Found address: 30 (0x1E)
Found address: 31 (0x1F)
Found address: 32 (0x20)
Found address: 33 (0x21)
Found address: 34 (0x22)
Found address: 35 (0x23)
Found address: 36 (0x24)
Found address: 37 (0x25)
Found address: 38 (0x26)
Found address: 39 (0x27)
Found address: 40 (0x28)
Found address: 41 (0x29)
Found address: 42 (0x2A)
Found address: 43 (0x2B)
Found address: 44 (0x2C)
Found address: 45 (0x2D)
Found address: 46 (0x2E)
Found address: 47 (0x2F)
Found address: 48 (0x30)
Found address: 49 (0x31)
Found address: 50 (0x32)
Found address: 51 (0x33)
Found address: 52 (0x34)
Found address: 53 (0x35)
Found address: 54 (0x36)
Found address: 55 (0x37)
Found address: 56 (0x38)
Found address: 57 (0x39)
Found address: 58 (0x3A)
Found address: 59 (0x3B)
Found address: 60 (0x3C)
Found address: 61 (0x3D)
Found address: 62 (0x3E)
Found address: 63 (0x3F)
Found address: 64 (0x40)
Found address: 65 (0x41)
Found address: 66 (0x42)
Found address: 67 (0x43)
Found address: 68 (0x44)
Found address: 69 (0x45)
Found address: 70 (0x46)
Found address: 71 (0x47)
Found address: 72 (0x48)
Found address: 73 (0x49)
Found address: 74 (0x4A)
Found address: 75 (0x4B)
Found address: 76 (0x4C)
Found address: 77 (0x4D)
Found address: 78 (0x4E)
Found address: 79 (0x4F)
Found address: 80 (0x50)
Found address: 81 (0x51)
Found address: 82 (0x52)
Found address: 83 (0x53)
Found address: 84 (0x54)
Found address: 85 (0x55)
Found address: 86 (0x56)
Found address: 87 (0x57)
Found address: 88 (0x58)
Found address: 89 (0x59)
Found address: 90 (0x5A)
Found address: 91 (0x5B)
Found address: 92 (0x5C)
Found address: 93 (0x5D)
Found address: 94 (0x5E)
Found address: 95 (0x5F)
Found address: 96 (0x60)
Found address: 97 (0x61)
Found address: 98 (0x62)
Found address: 99 (0x63)
Found address: 100 (0x64)
Found address: 101 (0x65)
Found address: 102 (0x66)
Found address: 103 (0x67)
Found address: 104 (0x68)
Found address: 105 (0x69)
Found address: 106 (0x6A)
Found address: 107 (0x6B)
Found address: 108 (0x6C)
Found address: 109 (0x6D)
Found address: 110 (0x6E)
Found address: 111 (0x6F)
Found address: 112 (0x70)
Found address: 113 (0x71)
Found address: 114 (0x72)
Found address: 115 (0x73)
Found address: 116 (0x74)
Found address: 117 (0x75)
Found address: 118 (0x76)
Found address: 119 (0x77)
Done.
Found 112 device(s).

When the chip is not connected the results on the serial is:

I2C scanner. Scanning …
Found address: 96 (0x60)
Done.
Found 1 device(s).

Maybe the one found device is the WiFi101 chip, since its built-in on my board i cannot remove it and check …
I’ve anyway have 3 MKR1000 boards which same as Zero and I’ve got the same results on all of them.

Finding zero devices is a clue that something is not wired up properly. Finding 112 devices is something else entirely and at the moment I can't think what could make it detect that many phantom devices.
I doubt that the 0x60 address, when the chip is disconnected, is the WIFI101 because that uses SPI. Unless it also has an I2C EEPROM on it, but those are usually addresses 0x50, 0x51, ... 0x57.

Pete

Here is the link to the data sheet: http://www.atmel.com/Images/doc0134.pdf

Read the data sheet carefully. This is a small (128 byte) EEPROM, and there is no reference in the data sheet to an I2C address.

There is a start and stop sequence with toggled SDA/SCL and then a single 7 bit address of the eeprom register with read or write.

I believe that you are seeing the presence of all the registers in the EEPROM when you scan for the addresses. If you change the scanner to look for 0 to 127 I think you will find a few more "addresses".

EDIT:

interesting reference here Atmel AT24C01 FAQ
It mentions the issue with reading from register 0x00

Good eye, cattledog.

Pete

OK, Pete and cattle dog, both of you helped me a lot!!!
Now i've understood my mistake about the chip itself.
It's totally different than the typical EEPROMs in the market, its very small (bytes vs bits), and work in a different method of addressing in the I2C bus.

Now I'm going to throw them to the trash, and wait for the 512KB ones I've ordered already.
Again, thanks for everyone.
Arye

You could probably use them but only one at a time with nothing else on the I2C bus. Trashing them is probably the best option though :slight_smile:

Pete

Yep, I use 2 more devices on the bus, so i cannot use them, and i won't keep them, i have enough stuff in my collection.

Thank you, Pete.
I've learnt from you a thing or two..