Implemented first Hangar-Service
Dependencies: CalibrateMagneto QuaternionMath
Fork of SML2 by
Diff: Magnetometer.cpp
- Revision:
- 46:fd5a62296b12
- Parent:
- 40:8e852115fe55
--- a/Magnetometer.cpp Wed May 27 11:45:00 2015 +0000 +++ b/Magnetometer.cpp Wed May 27 13:01:43 2015 +0000 @@ -8,13 +8,13 @@ { if (powerOn()) { readCalibrationData(); // temperature calibration - + // Initialise hard-iron and soft-iron correction. The minima and maxima values were measured // smartplane2 prototype gives a starting point for the background calibrator. float minimums[] = { -1536.0f, -2701.0f, -2112.0f }; float maximums[] = { 187, 1665, 39 }; calibrator.setExtremes(minimums, maximums); - + INFO("Bosch Sensortec BMX055-Magneto found"); powerOff(); } else { @@ -88,16 +88,16 @@ const int16_t temp = ((int16_t)(((uint16_t)((((int32_t)dig_xyz1) << 14)/(data_r != 0 ? data_r : dig_xyz1))) - ((uint16_t)0x4000))); const int32_t temp2 = (((((int32_t)dig_xy2) * ((((int32_t)temp) * ((int32_t)temp)) >> 7)) + (((int32_t)temp) * ((int32_t)(((int16_t)dig_xy1) << 7)))) >> 9); input[0] = ((int16_t)((((int32_t)mdata_x) * - (((temp2 + - ((int32_t)0x100000)) * ((int32_t)(((int16_t)dig_x2) + ((int16_t)0xA0)))) >> 12)) >> 13)) + (((int16_t)dig_x1) << 3); + (((temp2 + + ((int32_t)0x100000)) * ((int32_t)(((int16_t)dig_x2) + ((int16_t)0xA0)))) >> 12)) >> 13)) + (((int16_t)dig_x1) << 3); input[1] = ((int16_t)((((int32_t)mdata_y) * - (((temp2 + - ((int32_t)0x100000)) * ((int32_t)(((int16_t)dig_y2) + ((int16_t)0xA0)))) >> 12)) >> 13)) + (((int16_t)dig_y1) << 3); + (((temp2 + + ((int32_t)0x100000)) * ((int32_t)(((int16_t)dig_y2) + ((int16_t)0xA0)))) >> 12)) >> 13)) + (((int16_t)dig_y1) << 3); input[2] = (((((int32_t)(mdata_z - dig_z4)) << 15) - ((((int32_t)dig_z3) * ((int32_t)(((int16_t)data_r) - - ((int16_t)dig_xyz1))))>>2))/(dig_z2 + ((int16_t)(((((int32_t)dig_z1) * ((((int16_t)data_r) << 1)))+(1<<15))>>16)))); - + ((int16_t)dig_xyz1))))>>2))/(dig_z2 + ((int16_t)(((((int32_t)dig_z1) * ((((int16_t)data_r) << 1)))+(1<<15))>>16)))); + float output[3]; calibrator.run(input, output);