Implemented first Hangar-Service

Dependencies:   CalibrateMagneto QuaternionMath

Fork of SML2 by TobyRich GmbH

Accelerometer.cpp

Committer:
pvaibhav
Date:
2015-02-12
Revision:
6:c12cea26842d
Parent:
5:b9f2f62a8f90
Child:
7:604a8369b801

File content as of revision 6:c12cea26842d:

#include "Accelerometer.h"
#define DEBUG "BMX055-Acc"
#include "Logger.h"

Accelerometer::Accelerometer(I2C &i2c) : I2CPeripheral(i2c, 0x18 << 1 /* address */) {
    powerOn();
    const uint8_t chip_id = read_reg(0x00);
    if (chip_id == 0xfa) {
        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("powered on");
}

void Accelerometer::deepSuspend() {
    write_reg(0x11, 1); // deep suspend mode
    LOG("deep sleep");
}