From e24530b7c37e90a907f0bff25c249789bbcbf904 Mon Sep 17 00:00:00 2001 From: rbaron Date: Sun, 19 Mar 2023 10:02:26 +0100 Subject: [PATCH] Fix devicetree-coeffs bug --- .../boards/arm/bparasite_nrf52840/bparasite_nrf52840.dts | 4 ++-- .../prstlib/dts/bindings/soil-calibration-coeffs.yaml | 4 ++-- code/nrf-connect/prstlib/src/adc.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/nrf-connect/prstlib/boards/arm/bparasite_nrf52840/bparasite_nrf52840.dts b/code/nrf-connect/prstlib/boards/arm/bparasite_nrf52840/bparasite_nrf52840.dts index 8dd7eb2..40cd44f 100644 --- a/code/nrf-connect/prstlib/boards/arm/bparasite_nrf52840/bparasite_nrf52840.dts +++ b/code/nrf-connect/prstlib/boards/arm/bparasite_nrf52840/bparasite_nrf52840.dts @@ -42,8 +42,8 @@ soil_calibration_coeffs: soil_calibration_coeffs { compatible = "soil-calibration-coeffs"; - dry = <306000 101000 (-11700)>; - wet = <19000 (-4980) 3420>; + dry = <306000 101000 (-11700)>; + wet = <19000 (-4980) 3420>; }; ctrl { diff --git a/code/nrf-connect/prstlib/dts/bindings/soil-calibration-coeffs.yaml b/code/nrf-connect/prstlib/dts/bindings/soil-calibration-coeffs.yaml index 5ff7c5b..f72815d 100644 --- a/code/nrf-connect/prstlib/dts/bindings/soil-calibration-coeffs.yaml +++ b/code/nrf-connect/prstlib/dts/bindings/soil-calibration-coeffs.yaml @@ -7,10 +7,10 @@ description: > wet: For estimation of the fully dry state, given the battery voltage Note that each poly coefficient is specified as 1000 times its real values. This is because we can't - directly represent floating points in devicetree. The final evaludated value should be divided by + directly represent floating points in devicetree. The final evaluated value should be divided by 1000.0f in code. -compatible: soil-calibration-coeffe +compatible: soil-calibration-coeffs include: base.yaml diff --git a/code/nrf-connect/prstlib/src/adc.c b/code/nrf-connect/prstlib/src/adc.c index ef64200..34d43d4 100644 --- a/code/nrf-connect/prstlib/src/adc.c +++ b/code/nrf-connect/prstlib/src/adc.c @@ -101,7 +101,7 @@ static inline float get_soil_moisture_percent(float battery_voltage, const float dry2 = eval_poly(dry_coeffs, x); const float wet2 = eval_poly(wet_coeffs, x); - const float percent2 = (raw_adc_output - dry) / (wet - dry); + const float percent2 = (raw_adc_output - dry2) / (wet2 - dry2); LOG_INF("Read soil moisture 2: %.2f | Raw %u | Batt: %.2f | Dry: %.2f | Wet: %.2f", 100.0f * percent2, raw_adc_output, x, dry2, wet2);