summaryrefslogtreecommitdiff
path: root/src/drivers/ao_ms5607_convert.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-08-25 22:00:27 -0700
committerKeith Packard <keithp@keithp.com>2013-08-25 22:00:27 -0700
commit203951f6e049ec7e95489849a2bfaa01aa19c0c9 (patch)
tree639f6e5351f8c3712cb118a6ba5835b826ef909a /src/drivers/ao_ms5607_convert.c
parent4babe7310f78338ca36ab9d31ac833eada27485f (diff)
parentb363a628fc6137c3395a48ef13de7a799ec3e2c3 (diff)
Merge branch 'master' into telegps-v0.3
Diffstat (limited to 'src/drivers/ao_ms5607_convert.c')
-rw-r--r--src/drivers/ao_ms5607_convert.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/drivers/ao_ms5607_convert.c b/src/drivers/ao_ms5607_convert.c
index e61d19ed..bfb952a4 100644
--- a/src/drivers/ao_ms5607_convert.c
+++ b/src/drivers/ao_ms5607_convert.c
@@ -42,11 +42,14 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value
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;
- if (TEMP < 1500) {
+ if (TEMP < -1500) {
int32_t TEMPP = TEMP + 1500;
- int64_t TEMPP2 = TEMPP * TEMPP;
- OFF2 = OFF2 + 15 * TEMPP2;
- SENS2 = SENS2 + 8 * TEMPP2;
+ /* You'd think this would need a 64-bit int, but
+ * that would imply a temperature below -327.67°C...
+ */
+ int32_t TEMPP2 = TEMPP * TEMPP;
+ OFF2 = OFF2 + (int64_t) 15 * TEMPP2;
+ SENS2 = SENS2 + (int64_t) 8 * TEMPP2;
}
TEMP -= T2;
OFF -= OFF2;