Implemented first Hangar-Service

Dependencies:   CalibrateMagneto QuaternionMath

Fork of SML2 by TobyRich GmbH

Committer:
pvaibhav
Date:
Thu Feb 12 19:00:28 2015 +0000
Revision:
6:c12cea26842d
Parent:
5:b9f2f62a8f90
Child:
7:604a8369b801
New "Sensor" base class and delegation mechanism for sensor updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pvaibhav 1:c279bc3af90c 1 #include "Accelerometer.h"
pvaibhav 1:c279bc3af90c 2 #define DEBUG "BMX055-Acc"
pvaibhav 1:c279bc3af90c 3 #include "Logger.h"
pvaibhav 1:c279bc3af90c 4
pvaibhav 4:e759b8c756da 5 Accelerometer::Accelerometer(I2C &i2c) : I2CPeripheral(i2c, 0x18 << 1 /* address */) {
pvaibhav 5:b9f2f62a8f90 6 powerOn();
pvaibhav 1:c279bc3af90c 7 const uint8_t chip_id = read_reg(0x00);
pvaibhav 1:c279bc3af90c 8 if (chip_id == 0xfa) {
pvaibhav 5:b9f2f62a8f90 9 INFO("Bosch Sensortec BMX055-Accel found");
pvaibhav 5:b9f2f62a8f90 10 deepSuspend();
pvaibhav 1:c279bc3af90c 11 } else {
pvaibhav 1:c279bc3af90c 12 WARN("Bosch Sensortec BMX055-Accel not found (chip ID=0x%02x, expected=0x58)", chip_id);
pvaibhav 1:c279bc3af90c 13 }
pvaibhav 1:c279bc3af90c 14 }
pvaibhav 1:c279bc3af90c 15
pvaibhav 5:b9f2f62a8f90 16 void Accelerometer::powerOn() {
pvaibhav 5:b9f2f62a8f90 17 write_reg(0x14, 0xB6); // reset
pvaibhav 5:b9f2f62a8f90 18 wait_ms(2); // page 11 says only 1.3ms, nothing for startup time, so assuming 2ms
pvaibhav 5:b9f2f62a8f90 19 write_reg(0x11, 0); // set power normal mode
pvaibhav 5:b9f2f62a8f90 20 write_reg(0x10, 8); // set bandwidth = 7.81 Hz
pvaibhav 6:c12cea26842d 21 LOG("powered on");
pvaibhav 5:b9f2f62a8f90 22 }
pvaibhav 5:b9f2f62a8f90 23
pvaibhav 5:b9f2f62a8f90 24 void Accelerometer::deepSuspend() {
pvaibhav 5:b9f2f62a8f90 25 write_reg(0x11, 1); // deep suspend mode
pvaibhav 6:c12cea26842d 26 LOG("deep sleep");
pvaibhav 5:b9f2f62a8f90 27 }