I’ve just received the MPR121 breakboard (link: http://www.sparkfun.com/products/9695) I had ordered, and I was excited to try it. But it seems it’s not going to be that easy… :?
Indeed, it’s not working at all. It makes the program hang on every I2C wait loop. So it’s not a problem of chip configuration, because I’m completely unable to communicate with the chip. With the Wire library, it hangs forever on the very first call at Wire.endTransmission().
From what I’ve seen on the internet, it sounds like a wiring problem, so I’ve checked the wiring and soldering. Twice. Even three or four times, and I’m pretty sure everything’s okay there : SDA on A4, SCL on A5, 3.3V on 3.3V and GND with GND. Wiring INT to D2 doesn’t change anything.
Some obscure forum threads also suggested there was some debates around the Arduino “Wire” library, so I tried other versions of Arduino, and I even tried to use other I2C libraries. I even attempted to do the I2C setup myself, but the same problem occured : precisely, the TWINT bit never goes up in TWCR. To sum up, absolutely nothing happens. I have no access to a logic analyzer, so I can’t check further.
So… any ideas, or should I conclude that my brand new chip is useless ?
It’s powered with the 3.3V pin of the Arduino Uno.
I’m using the Sparkfun breakboard, that has pull-up resistors included for data lines. It is upposed to allow 5V control on these. And it is reported that it should work on the product page : http://www.sparkfun.com/products/9695.
By the way, I tried adding additional resistors (1k, 4.7k and 10k), or enabling/disabling the Atmega internal I2C pull-ups, but it doesn’t helped much.
Have you tried checking continuity on each of the data lines? From the processor pin on the Atmega to the pin on the actual MPR121? Also check if the MPR121is actually getting the 3.3 volts it is supposed to. (Again, pin to pin)