diff options
author | Andrew Tridgell <tridge@samba.org> | 2013-11-28 20:30:04 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2013-11-30 20:21:08 +1100 |
commit | 92141548319898b2b0db94957b8a9281c33b5c47 (patch) | |
tree | b00171ceb3297958220b818f02bf4c534c6e6ef6 /src | |
parent | cb76f07d3153895e379f15f6ca388ef04c6384dc (diff) | |
download | px4-firmware-92141548319898b2b0db94957b8a9281c33b5c47.tar.gz px4-firmware-92141548319898b2b0db94957b8a9281c33b5c47.tar.bz2 px4-firmware-92141548319898b2b0db94957b8a9281c33b5c47.zip |
lsm303d: added I2C disable based on method from ST engineering support
Diffstat (limited to 'src')
-rw-r--r-- | src/drivers/lsm303d/lsm303d.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/drivers/lsm303d/lsm303d.cpp b/src/drivers/lsm303d/lsm303d.cpp index 10af611ed..889c77b2c 100644 --- a/src/drivers/lsm303d/lsm303d.cpp +++ b/src/drivers/lsm303d/lsm303d.cpp @@ -301,6 +301,11 @@ private: void reset(); /** + * disable I2C on the chip + */ + void disable_i2c(); + + /** * Static trampoline from the hrt_call context; because we don't have a * generic hrt wrapper yet. * @@ -564,8 +569,24 @@ out: } void +LSM303D::disable_i2c(void) +{ + uint8_t a = read_reg(0x02); + write_reg(0x02, (0x10 | a)); + a = read_reg(0x02); + write_reg(0x02, (0xF7 & a)); + a = read_reg(0x15); + write_reg(0x15, (0x80 | a)); + a = read_reg(0x02); + write_reg(0x02, (0xE7 & a)); +} + +void LSM303D::reset() { + // ensure the chip doesn't interpret any other bus traffic as I2C + disable_i2c(); + /* enable accel*/ _reg1_expected = REG1_X_ENABLE_A | REG1_Y_ENABLE_A | REG1_Z_ENABLE_A | REG1_BDU_UPDATE | REG1_RATE_800HZ_A; write_reg(ADDR_CTRL_REG1, _reg1_expected); |