Implemented first Hangar-Service
Dependencies: CalibrateMagneto QuaternionMath
Fork of SML2 by
Diff: Accelerometer.cpp
- Revision:
- 5:b9f2f62a8f90
- Parent:
- 4:e759b8c756da
- Child:
- 6:c12cea26842d
--- a/Accelerometer.cpp Fri Jan 23 13:00:46 2015 +0000 +++ b/Accelerometer.cpp Thu Feb 12 17:17:35 2015 +0000 @@ -3,14 +3,25 @@ #include "Logger.h" Accelerometer::Accelerometer(I2C &i2c) : I2CPeripheral(i2c, 0x18 << 1 /* address */) { - write_reg(0x14, 0xB6); // reset - wait_ms(2); // page 11 says only 1.3ms, nothing for startup time, so assuming 2ms - + powerOn(); const uint8_t chip_id = read_reg(0x00); if (chip_id == 0xfa) { - INFO("Bosch Sensortec BMX055-Accel ready"); + INFO("Bosch Sensortec BMX055-Accel found"); + deepSuspend(); } else { WARN("Bosch Sensortec BMX055-Accel not found (chip ID=0x%02x, expected=0x58)", chip_id); } } +void Accelerometer::powerOn() { + write_reg(0x14, 0xB6); // reset + wait_ms(2); // page 11 says only 1.3ms, nothing for startup time, so assuming 2ms + write_reg(0x11, 0); // set power normal mode + write_reg(0x10, 8); // set bandwidth = 7.81 Hz + LOG("started"); +} + +void Accelerometer::deepSuspend() { + write_reg(0x11, 1); // deep suspend mode + LOG("stopped"); +}