I2C: slave devices aren't detect simultaneously

I am connecting 2 slave devices to an Arduino UNO R3.

  1. Microchip 24LC256, I2C address 0x50 (dec. 80)

  2. Texas Instruments INA219BIDCNT, I2C address 0x40 (dec. 64)

If I run the i2c scanner from the Arduino Playground on each of them separately, they are detected. However, when both devices are on the bus, only the INA219 is detected.

Regardless of which or if both devices are connected, I have 2k2 resistors pulling SCL and SDA to +5V (1 resistor for each line).

I also tried replacing the 24LC256 with an Atmel 24C128N, at the same I2C address, and got the same result. I short, I am unable to run 2+ devices on the I2C bus.

This is all being done on a breadboard.

What am I overlooking? I've been dueling with this problem for the past 3 days.

Thanks in advance.


What do you see on an oscilloscope?

Any chance you have SCL & SDA connected to each other when the two are connected?
Are all grounds connected back to the Arduino?

Could you attach a circuit diagram and maybe a photo of your breadboard?

Thanks for the replies, folks, and I am feeling like a real idiot here.

I always used wires cut from ethernet cables on my breadboards as jumper wires: they are colored, have just the right gauge for breadboards, are easy to work with and since they are plentiful, I can cut them to length for the projects I breadboard first.

For the ongoing project (a programmable electronic load), however, I decided to use this really pretty set of colored jumper wires I got from DealExtreme.

What actually happened is that several of the wires in the kit were broken, thus making parts of my breadboard project fail, including parts of the I2C bus.

Once I replaced them with wires from ethernet cables, it all worked like a charm! I ended up measuring resistance on all the pretty jumper wires from Deal Extreme, and all those above 1R were thrown away (about 20% of them).