From 427b17d8a117e90588977fc2278ff0105f374fc9 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 28 Aug 2020 16:01:08 -0400 Subject: [PATCH] bosch/bmi055: fix accel temperature reading - single register output is in 2's complement --- src/drivers/imu/bosch/bmi055/BMI055_Accelerometer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drivers/imu/bosch/bmi055/BMI055_Accelerometer.cpp b/src/drivers/imu/bosch/bmi055/BMI055_Accelerometer.cpp index 14146d06b3..18d6de1511 100644 --- a/src/drivers/imu/bosch/bmi055/BMI055_Accelerometer.cpp +++ b/src/drivers/imu/bosch/bmi055/BMI055_Accelerometer.cpp @@ -455,7 +455,8 @@ void BMI055_Accelerometer::FIFOReset() void BMI055_Accelerometer::UpdateTemperature() { // The slope of the temperature sensor is 0.5K/LSB, its center temperature is 23°C [(ACC 0x08) temp = 0x00]. - float temperature = RegisterRead(Register::ACCD_TEMP) * 0.5f + 23.f; + // The register contains the current chip temperature represented in two’s complement format. + float temperature = static_cast(RegisterRead(Register::ACCD_TEMP)) * 0.5f + 23.f; if (PX4_ISFINITE(temperature)) { _px4_accel.set_temperature(temperature);