aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/l3gd20/l3gd20.cpp
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2013-12-05 09:06:53 +1100
committerLorenz Meier <lm@inf.ethz.ch>2013-12-10 11:03:12 +0100
commit86ec1c37fa29ba4ffc1d54a0c438de1cd536f51c (patch)
treeba65c7dc20da1346d933287a4f13092e7563c279 /src/drivers/l3gd20/l3gd20.cpp
parent476070510eca3c1eb8c485b5f2d04061dfb24f88 (diff)
downloadpx4-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/l3gd20.cpp')
-rw-r--r--src/drivers/l3gd20/l3gd20.cpp12
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