Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -reeac2a1df1afbdcf4d1775b62cc810582472404d -r13cd8df0426abaf933422a42d6c187175ab49949 --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision eeac2a1df1afbdcf4d1775b62cc810582472404d) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 13cd8df0426abaf933422a42d6c187175ab49949) @@ -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;