Merge pull request #317 from UncleRus/fix_ms5611

Code style fixes for MS5611
This commit is contained in:
Ruslan V. Uss 2016-12-24 22:28:14 +05:00 committed by GitHub
commit 0b063730f3
2 changed files with 42 additions and 38 deletions

View file

@ -23,9 +23,10 @@ void user_init(void)
uart_set_baud(0, 115200); uart_set_baud(0, 115200);
printf("SDK version:%s\n\n", sdk_system_get_sdk_version()); printf("SDK version:%s\n\n", sdk_system_get_sdk_version());
ms561101ba03_config_data_t conf = {0,0,0,0,0,0}; ms561101ba03_t device = {
ms561101ba03_result_t result = {0,0}; .addr = MS561101BA03_ADDR_CSB_LOW,
ms561101ba03_t device= {MS561101BA03_ADDR_CSB_LOW, MS561101BA03_OSR_4096, conf, result, 0}; .osr = MS561101BA03_OSR_4096,
};
while (!ms561101ba03_init(&device)) while (!ms561101ba03_init(&device))
printf("Device not found\n"); printf("Device not found\n");

View file

@ -1,5 +1,5 @@
/* /*
* Driver for barometic pressure sensor ms511-01BA03 * Driver for barometic pressure sensor MS5611-01BA03
* *
* Copyright (C) 2016 Bernhard Guillon <Bernhard.Guillon@web.de> * Copyright (C) 2016 Bernhard Guillon <Bernhard.Guillon@web.de>
* *
@ -16,6 +16,7 @@
#define CONVERT_D1 0x40 #define CONVERT_D1 0x40
#define CONVERT_D2 0x50 #define CONVERT_D2 0x50
#define ADC_READ 0x00 #define ADC_READ 0x00
#define RESET 0x1E
/* /*
* FIXME: * FIXME:
@ -25,8 +26,6 @@
*/ */
#define CONVERSION_TIME 20 / portTICK_PERIOD_MS // milliseconds #define CONVERSION_TIME 20 / portTICK_PERIOD_MS // milliseconds
static const uint8_t RESET = 0x1E;
static inline bool reset(uint8_t addr) static inline bool reset(uint8_t addr)
{ {
uint8_t buf[1] = { RESET }; uint8_t buf[1] = { RESET };
@ -103,28 +102,32 @@ static inline int32_t calc_temp(ms561101ba03_t *dev)
{ {
// Actual temerature (-40...85C with 0.01 resulution) // Actual temerature (-40...85C with 0.01 resulution)
// TEMP = 20C +dT * TEMPSENSE =2000 + dT * C6 / 2^23 // TEMP = 20C +dT * TEMPSENSE =2000 + dT * C6 / 2^23
return (int32_t)((int64_t)2000 +(int64_t)dev->dT * (int64_t)dev->config_data.tempsens / (int64_t)8388608); return (int32_t)(2000 + (int64_t)dev->dT * dev->config_data.tempsens / 8388608);
} }
static inline int64_t calc_off(ms561101ba03_t *dev) static inline int64_t calc_off(ms561101ba03_t *dev)
{ {
// Offset at actual temperature // Offset at actual temperature
// OFF=OFF_t1 + TCO * dT = OFF_t1(C2) * 2^16 + (C4*dT)/2^7 // OFF=OFF_t1 + TCO * dT = OFF_t1(C2) * 2^16 + (C4*dT)/2^7
return (int64_t)((int64_t)dev->config_data.off * (int64_t)65536) + (((int64_t)dev->config_data.tco * (int64_t)dev->dT ) /(int64_t)128); return (int64_t)((int64_t)dev->config_data.off * (int64_t)65536)
+ (((int64_t)dev->config_data.tco * (int64_t)dev->dT) / (int64_t)128);
} }
static inline int64_t calc_sens(ms561101ba03_t *dev) static inline int64_t calc_sens(ms561101ba03_t *dev)
{ {
// Senisitivity at actual temperature // Senisitivity at actual temperature
// SENS=SENS_t1 + TCS *dT = SENS_t1(C1) *2^15 + (TCS(C3) *dT)/2^8 // SENS=SENS_t1 + TCS *dT = SENS_t1(C1) *2^15 + (TCS(C3) *dT)/2^8
return (int64_t)(((int64_t)dev->config_data.sens) *(int64_t)32768) + (((int64_t)dev->config_data.tcs * (int64_t)dev->dT ) /(int64_t)256); return (int64_t)(((int64_t)dev->config_data.sens) * (int64_t)32768)
+ (((int64_t)dev->config_data.tcs * (int64_t)dev->dT) / (int64_t)256);
} }
static inline int32_t calc_p(uint32_t digital_pressure, int64_t sens, int64_t off) static inline int32_t calc_p(uint32_t digital_pressure, int64_t sens, int64_t off)
{ {
// Temperature compensated pressure (10...1200mbar with 0.01mbar resolution // Temperature compensated pressure (10...1200mbar with 0.01mbar resolution
// P = digital pressure value * SENS - OFF = (D1 * SENS/2^21 -OFF)/2^15 // P = digital pressure value * SENS - OFF = (D1 * SENS/2^21 -OFF)/2^15
return (int32_t) (((int64_t)digital_pressure * (int64_t)((int64_t)sens / (int64_t)0x200000) - (int64_t)off) / (int64_t)32768); return (int32_t)(((int64_t)digital_pressure
* (int64_t)((int64_t)sens / (int64_t)0x200000) - (int64_t)off)
/ (int64_t)32768);
} }
static inline bool get_raw_temperature(ms561101ba03_t *dev, uint32_t *result) static inline bool get_raw_temperature(ms561101ba03_t *dev, uint32_t *result)