After several months of playing around with different images, and packages, I was finally able to get the Caspa camera to record video on my overo water through the PintoTH board. I have also got an MPU-9150 running on the same board. My problem is if I have the camera attached to my overo, I cannot access my IMU through I2C-3. I know the camera communicates on this port, and from my i2cdetect it looks like its address is 0x51. My IMU is on 0x68. If I unplug the camera the IMU works. Any help you can give would be great. I am running off the 2.6.34 kernel.
I should also note, when the camera is connected and the IMU is connected the camera works. I get a Remote I/O error when the program goes to initialize the IMU. Is the I2C bus like a serial port in that it can only be open by one program?
I2C can have multiple devices on it, that's what the address is for.
Maybe your IMU doesn't have the power to pull down the strong pullups on
the Gumstix + Caspa? Have you tried sticking a scope on the lines to see
what things look like?
I2C is a bidirectional interface using a single data line. Basically the
host queries the I2C line with an address, the device matching that
address (if it's there) acknowledges the request by pulling the line
low, the host uses this action to verify that the device is present and
available, and then starts transmitting data.
I can only assume that the remote I/O error you're receiving when you
try to initialize the IMU with the camera connected means that the host
is not receiving any acknowledgement to the initial address probe. In
my case, the device was reading the address probe and was trying to
acknowledge it, but it didn't have the current capability to pull the
line all the way down given the ridiculously strong pull-ups that are on
the Tobi. A scope on the line was able to easily verify this, you could
see the device trying to pull the line low, but it just couldn't pull it
low enough to register as a logic 0 on the gumstix.
I have no idea if this is your problem, but watching the i2c data line
on a scope while trying to initialize the IMU with and without the
camera connected should answer that question.