Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -rac029c36127b916d68c0039a470c3e4c68879adf -rf111f908830a0e2c5698bfc4e807056bdc188c4e --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision ac029c36127b916d68c0039a470c3e4c68879adf) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision f111f908830a0e2c5698bfc4e807056bdc188c4e) @@ -866,10 +866,12 @@ case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: { - tempSensors[ sensorIndex ].baroTempSnsrDiff = (S32)avgADCReads - ( baroConvConsts.refTemperature * TWO_TO_POWER_OF_8 ); - S64 baroSnsrTemperature = BARO_SENSOR_REFERENCE_TEMP_C + ( ( tempSensors[ sensorIndex ].baroTempSnsrDiff * - baroConvConsts.temperatureCoeff ) / TWO_TO_POWER_OF_23 ); - temperature = (F32)( (U32)( baroSnsrTemperature ) / 100 ); + S32 baroTempSensorsDiff = (S32)avgADCReads - ( baroConvConsts.refTemperature * TWO_TO_POWER_OF_8 ); + S64 differenceTimesCoefficient = (S64)baroTempSensorsDiff * (S64)baroConvConsts.temperatureCoeff; + S64 baroSnsrTemperature = BARO_SENSOR_REFERENCE_TEMP_C + ( differenceTimesCoefficient / TWO_TO_POWER_OF_23 ); + + temperature = (F32)( baroSnsrTemperature / 100.0F ); + tempSensors[ sensorIndex ].baroTempSnsrDiff = baroTempSensorsDiff; } break;