From a241fa9bd85a8a896a5c5971a51632397bc94a30 Mon Sep 17 00:00:00 2001 From: Alain Carlucci <alain.carlucci@skywarder.eu> Date: Wed, 3 May 2017 12:36:24 +0200 Subject: [PATCH] [iNemo] Added waiting with timeout after reset --- src/shared/sensors/iNemo.h | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/shared/sensors/iNemo.h b/src/shared/sensors/iNemo.h index baa9301c1..3d1315693 100644 --- a/src/shared/sensors/iNemo.h +++ b/src/shared/sensors/iNemo.h @@ -76,19 +76,33 @@ public: //accelerometer configuration //reset internal memory BusXM::write(CTRL_REG0_XM, 0x80); + + uint8_t timeout = 10; + + while(BusXM::read(CTRL_REG0_XM) != 0x00 && --timeout > 0) + Thread::sleep(1); + + if(timeout == 0) + { + last_error = ERR_RESET_TIMEOUT; + return false; + } + //100Hz data rate, continuous update, xyz enabled BusXM::write(CTRL_REG1_XM,0x67); //antialias filter 773 Hz, normal mode no test - BusXM::write(CTRL_REG2_XM,0x00 | (accelFS<<3)); + BusXM::write(CTRL_REG2_XM,(0x01 << 6) | (accelFS << 3)); //interrupt not enabled BusXM::write(CTRL_REG3_XM,0x00); BusXM::write(CTRL_REG4_XM,0x00); - //temperature sensor enabled, 100hz magnetic data rate, 2 gauss - BusXM::write(CTRL_REG5_XM,0xF4); + + //temperature sensor enabled, 50hz magnetic data rate, 2 gauss + BusXM::write(CTRL_REG5_XM,0xF0); + // 2 gauss BusXM::write(CTRL_REG6_XM,0x00 | (compassFS<<5)); - BusXM::write(CTRL_REG7_XM,0x00); + BusXM::write(CTRL_REG7_XM,0x80); return true; } @@ -116,9 +130,11 @@ public: { const auto& r = req.readResponseFromPeripheral(); - int16_t data[3]; + int16_t data[3] = {0}; memcpy(data, &r[1], r.size()-1); - // printf("ID: %d --> ", req.id()); memDump(r.data(), r.size()); + //printf("ID: %d --> %+05d,%+05d,%+05d -> ", + // req.id(),data[0],data[1],data[2]); + //memDump(r.data(),r.size()); switch(req.id()) { -- GitLab