Hi
I am trying to get the I2CAccelerometerSample running but I am not successful. The sample uses a read which communicats with the MMA without using combined read sequence. This means a STOP condition is send after the transfer of the register pointer which erases this information and the read always reads at 0x00. Which is defenitly wrong. With bash I can read in the data correctly. For example I was trying to read out the WHO_AM_I Device ID register. this shoul read 0x2A. That is fixed.
I tried with the command prompt on the RPi. This does well as you can see in the screenshot and the oscilloscop output.
This is correct reading from the WHO_AM_I ID register.
If I try the I2CAccelerometerSample from the ME SDK and add one line in the private void initializeAccelerometer() to read out the WHO_AM_I ID register
| | private void initializeAccelerometer() throws IOException { |
| | // read WHO_AM_I DEVICE_ID from register 0x0D |
| | int ID = readRegister( (byte)0x0d ); |
| | // set 0 to 0x2A control register to set the accelerometer in configurable mode |
| | writeRegister(CTRL_REG1_ADDRESS, (byte) 0); |
| | // set accelerometer range to 8g |
| | writeRegister(XYZ_DATA_CFG_ADDRESS, (byte) 2); |
| | // turn the active mode on |
| | writeRegister(CTRL_REG1_ADDRESS, (byte) 1); |
| | } |
This gives me FF what is really wrong. See oscilloscope reading. The transfer of the register pointer is followed by a stop sequence and the MMA can not deal with this. The read request is far away leading to a wrong reading. I am not sure that this sample ever worked with a Raspberry Pi.
If the sample is running and it does I only see 0.
What can I do.