diff options
author | Keith Packard <keithp@keithp.com> | 2012-09-28 22:39:55 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-10-03 07:45:30 -0700 |
commit | fdd08cc093134c5f87dab9533b99a042a699381b (patch) | |
tree | 2d642710c424348ee33215feb31b742bca0df915 | |
parent | dc7216d286cc7fe8007f5208ad97a630166572f3 (diff) |
altos: Provide MS5611 configuration option, HAS_MS5611
MS5611 and MS5607 use slightly different conversion functions. Alas,
there doesn't appear to be a way to tell them apart in software. This
patch adds the necessary conversion changes and makes them depend on a
compile-time configuration option.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | src/drivers/ao_ms5607.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/drivers/ao_ms5607.c b/src/drivers/ao_ms5607.c index 704b4583..b0d5ddd4 100644 --- a/src/drivers/ao_ms5607.c +++ b/src/drivers/ao_ms5607.c @@ -179,9 +179,13 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value TEMP = 2000 + (((int64_t) dT * ms5607_prom.tempsens) >> 23); +#if HAS_MS5611 + OFF = ((int64_t) ms5607_prom.off << 16) + (((int64_t) ms5607_prom.tco * dT) >> 7); + SENS = ((int64_t) ms5607_prom.sens << 15) + (((int64_t) ms5607_prom.tcs * dT) >> 8); +#else OFF = ((int64_t) ms5607_prom.off << 17) + (((int64_t) ms5607_prom.tco * dT) >> 6); - SENS = ((int64_t) ms5607_prom.sens << 16) + (((int64_t) ms5607_prom.tcs * dT) >> 7); +#endif if (TEMP < 2000) { int32_t T2 = ((int64_t) dT * (int64_t) dT) >> 31; |