X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fdrivers%2Fao_ms5607_convert.c;fp=src%2Fdrivers%2Fao_ms5607_convert.c;h=a7c2fbc26e0099e5521a159c8c27334f6a4fa951;hp=0e96f60bbff3284e21edd6f78dd03c5cb28a87f7;hb=c49bd3cb0c31a51fae79ddc92237cc309be9a242;hpb=d225adc3af9e5726d436cbbdbf8dcc5837e50804 diff --git a/src/drivers/ao_ms5607_convert.c b/src/drivers/ao_ms5607_convert.c index 0e96f60b..a7c2fbc2 100644 --- a/src/drivers/ao_ms5607_convert.c +++ b/src/drivers/ao_ms5607_convert.c @@ -26,9 +26,9 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value int64_t OFF; int64_t SENS; - dT = sample->temp - ((int32_t) ao_ms5607_prom.tref << 8); + dT = (int32_t) ((int32_t) sample->temp - ((int32_t) ao_ms5607_prom.tref << 8)); - TEMP = 2000 + (((int64_t) dT * ao_ms5607_prom.tempsens) >> 23); + TEMP = (int32_t) (2000 + (((int64_t) dT * ao_ms5607_prom.tempsens) >> 23)); #if HAS_MS5611 OFF = ((int64_t) ao_ms5607_prom.off << 16) + (((int64_t) ao_ms5607_prom.tco * dT) >> 7); @@ -39,7 +39,7 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value #endif if (TEMP < 2000) { - int32_t T2 = ((int64_t) dT * (int64_t) dT) >> 31; + int32_t T2 = (int32_t) (((int64_t) dT * (int64_t) dT) >> 31); int32_t TEMPM = TEMP - 2000; int64_t OFF2 = (61 * (int64_t) TEMPM * (int64_t) TEMPM) >> 4; int64_t SENS2 = 2 * (int64_t) TEMPM * (int64_t) TEMPM; @@ -57,6 +57,6 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value SENS -= SENS2; } - value->pres = ((((int64_t) sample->pres * SENS) >> 21) - OFF) >> 15; + value->pres = (int32_t) (((((int64_t) sample->pres * SENS) >> 21) - OFF) >> 15); value->temp = TEMP; }