diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -142,7 +142,7 @@ int main(void) } // Read temperature and update global temp vars -int16_t temp = 0; +int32_t temp = 0; uint8_t temp_frac = 0; void update_temp() { @@ -181,10 +181,15 @@ void update_temp() { } if(temp_units == TEMP_UNITS_FAHRENHEIT) { - temp *= 10; // fixed point mul by 1.8 - temp *= 18; - temp /= 100; + temp *= 9; // fixed point mul by 1.8 + temp /= 5; temp += 32; + + temp_frac *= 9; + temp_frac /= 5; + temp_frac += 32; + temp += temp_frac/100; // add overflow to above + temp_frac %= 100; } }