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 11:03:12 +0100 |
commit | 86ec1c37fa29ba4ffc1d54a0c438de1cd536f51c (patch) | |
tree | ba65c7dc20da1346d933287a4f13092e7563c279 /src/drivers/l3gd20 | |
parent | 476070510eca3c1eb8c485b5f2d04061dfb24f88 (diff) | |
download | px4-firmware-86ec1c37fa29ba4ffc1d54a0c438de1cd536f51c.tar.gz px4-firmware-86ec1c37fa29ba4ffc1d54a0c438de1cd536f51c.tar.bz2 px4-firmware-86ec1c37fa29ba4ffc1d54a0c438de1cd536f51c.zip |
l3gd20: added retries to disable_i2c()
Diffstat (limited to 'src/drivers/l3gd20')
-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 |