HI, I’m porting the Pololu Zumo Robot V1.3 Library to MicroPython.
I’m encountering problem in the detection routine… this related to the various registers tests on a very recent Zumo Robot V1.3 .
While Scanning the I2C bus, it detects the address 30 and 107 (decimal) as used on the bus.
The testRef() calls gives the following results:
__test_reg(29, 0xf) => ERROR # test the WHO_AM_I register on i2c address 29 (decimal)
__test_reg(30, 0xf) => 0x3d
__test_reg(25, 0x20) => ERROR
__test_reg(30, 0xf) => 0x3d
So it detect something at address 30 (decimal) but with a Who_AM_I value 0x3d.
The issue for me is that defined constants in lsm303.cpp ( GitHub - pololu/zumo-shield-arduino-library: Arduino libraries for the Pololu Zumo Shield and Zumo robot kit for Arduino. ) are
#define D_WHO_ID 0x49
#define DLM_WHO_ID 0x3C
So… finally, it results into the following detection:
Zumo I2C scan: [30, 107]
__test_reg(29, 0xf) => ERROR
__test_reg(30, 0xf) => 0x3d
__test_reg(25, 0x20) => ERROR
__test_reg(30, 0xf) => 0x3d
LSM device type: DLH
LSM sa0 state : LOW
Magnetometer @ 30 (0x1e)
Accelerometer @ 24 (0x18)
where accelerometer address is obviously wrong! I checked twice the portage and can’t see what is wrong. Did I miss something obvious about address used or is there a new component on the Zumo Robot board?