fix negative numbers bug in dewpoint

This commit is contained in:
Edward Emelianov 2021-02-18 20:43:37 +03:00
parent c1ee273258
commit 3c1bc7ff3d
7 changed files with 14 additions and 10 deletions

Binary file not shown.

View File

@ -135,7 +135,7 @@ static struct{
uint8_t ID; // identificator uint8_t ID; // identificator
uint8_t regctl; // control register base value [(params.t_os << 5) | (params.p_os << 2)] uint8_t regctl; // control register base value [(params.t_os << 5) | (params.p_os << 2)]
} params = { } params = {
.filter = BMP280_FILTER_16, .filter = BMP280_FILTER_OFF,
.p_os = BMP280_OVERS16, .p_os = BMP280_OVERS16,
.t_os = BMP280_OVERS16, .t_os = BMP280_OVERS16,
.h_os = BMP280_OVERS16, .h_os = BMP280_OVERS16,

View File

@ -52,12 +52,12 @@
#define BMP280_CHIP_ID 0x58 #define BMP280_CHIP_ID 0x58
#define BME280_CHIP_ID 0x60 #define BME280_CHIP_ID 0x60
typedef enum{ // Nsamples for filtering typedef enum{ // K for filtering: next = [prev*(k-1) + data_ADC]/k
BMP280_FILTER_OFF = 0, BMP280_FILTER_OFF = 0, // k=1, no filtering
BMP280_FILTER_2 = 1, BMP280_FILTER_2 = 1, // k=2, 2 samples to reach >75% of data_ADC
BMP280_FILTER_4 = 2, BMP280_FILTER_4 = 2, // k=4, 5 samples
BMP280_FILTER_8 = 3, BMP280_FILTER_8 = 3, // k=8, 11 samples
BMP280_FILTER_16 = 4, BMP280_FILTER_16 = 4, // k=16, 22 samples
BMP280_FILTERMAX BMP280_FILTERMAX
} BMP280_Filter; } BMP280_Filter;

View File

@ -55,7 +55,7 @@ static char *get_USB(){
static void showd(int32_t mT, int32_t mH){ static void showd(int32_t mT, int32_t mH){
USB_send("Dewpoint="); USB_send("Dewpoint=");
USB_send(u2str(dewpoint(mT, mH))); USB_send(i2str(dewpoint(mT, mH)));
USB_send("*10degrC\n"); USB_send("*10degrC\n");
} }

View File

@ -280,4 +280,3 @@ char *i2str(int32_t i){
}else val = i; }else val = i;
return _2str(val, minus); return _2str(val, minus);
} }

View File

@ -57,7 +57,12 @@ char *get_USB(){
void showd(int32_t mT, int32_t mH){ void showd(int32_t mT, int32_t mH){
if(mT == -10000 || mH == -10000) return; if(mT == -10000 || mH == -10000) return;
USB_send("Dewpoint="); USB_send("Dewpoint=");
USB_send(u2str(dewpoint(mT, mH))); int32_t d = dewpoint(mT, mH);
if(d < 0){
USB_send("-");
d = -d;
}
USB_send(u2str(d));
USB_send("*10degrC\n"); USB_send("*10degrC\n");
} }

Binary file not shown.