diff options
author | Andrew Tridgell <tridge@samba.org> | 2013-12-05 09:06:53 +1100 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2013-12-10 12:04:20 +0100 |
commit | 513d014f03831111a1b9f9af293e253f7d5218a5 (patch) | |
tree | 4eb285551b02e48046e4f26feefbfd48188f22b1 | |
parent | 24a243843ef771273c81536c0bd18c5d70c010f4 (diff) | |
download | px4-firmware-513d014f03831111a1b9f9af293e253f7d5218a5.tar.gz px4-firmware-513d014f03831111a1b9f9af293e253f7d5218a5.tar.bz2 px4-firmware-513d014f03831111a1b9f9af293e253f7d5218a5.zip |
l3gd20: added retries to disable_i2c()
-rw-r--r-- | src/drivers/l3gd20/l3gd20.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/drivers/l3gd20/l3gd20.cpp b/src/drivers/l3gd20/l3gd20.cpp index 17b53bfa9..176ef648b 100644 --- a/src/drivers/l3gd20/l3gd20.cpp +++ b/src/drivers/l3gd20/l3gd20.cpp @@ -715,8 +715,16 @@ L3GD20::stop() void L3GD20::disable_i2c(void) { - uint8_t a = read_reg(0x05); - write_reg(0x05, (0x20 | a)); + uint8_t retries = 10; + while (retries--) { + // add retries + uint8_t a = read_reg(0x05); + write_reg(0x05, (0x20 | a)); + if (read_reg(0x05) == (a | 0x20)) { + return; + } + } + debug("FAILED TO DISABLE I2C"); } void |