From 9087fcf618538830dbf73e5cc6ea7c82db8a09c9 Mon Sep 17 00:00:00 2001 From: Matthieu Sprunck Date: Sun, 12 Sep 2021 07:12:25 +0200 Subject: [PATCH] sns: fix initialization of _adc_counts (#2471) --- code/espurna/config/sensors.h | 4 ++++ code/espurna/sensor.cpp | 1 + code/espurna/sensors/BaseAnalogEmonSensor.h | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/espurna/config/sensors.h b/code/espurna/config/sensors.h index 9621f929..a42a7969 100644 --- a/code/espurna/config/sensors.h +++ b/code/espurna/config/sensors.h @@ -508,6 +508,10 @@ #define EMON_ANALOG_SUPPORT 0 // Do not build support by default #endif +#ifndef EMON_ANALOG_RESOLUTION +#define EMON_ANALOG_RESOLUTION 10 // ADC resolution (in bits) +#endif + //------------------------------------------------------------------------------ // Counter sensor // Enable support by passing EVENTS_SUPPORT=1 build flag diff --git a/code/espurna/sensor.cpp b/code/espurna/sensor.cpp index 7dd6318f..8e34b30b 100644 --- a/code/espurna/sensor.cpp +++ b/code/espurna/sensor.cpp @@ -1926,6 +1926,7 @@ void _sensorLoad() { auto* sensor = new EmonAnalogSensor(); sensor->setVoltage(EMON_MAINS_VOLTAGE); sensor->setReferenceVoltage(EMON_REFERENCE_VOLTAGE); + sensor->setResolution(EMON_ANALOG_RESOLUTION); _sensors.push_back(sensor); } #endif diff --git a/code/espurna/sensors/BaseAnalogEmonSensor.h b/code/espurna/sensors/BaseAnalogEmonSensor.h index 47f0fe5a..f1cc850d 100644 --- a/code/espurna/sensors/BaseAnalogEmonSensor.h +++ b/code/espurna/sensors/BaseAnalogEmonSensor.h @@ -236,8 +236,8 @@ private: size_t _samples_max { EMON_MAX_SAMPLES }; // Number of samples, will be adjusted at runtime size_t _samples { _samples_max }; // based on the maximum value - size_t _resolution { 10 }; // ADC resolution (in bits) - size_t _adc_counts { _resolution << 1 }; // Max count + size_t _resolution { EMON_ANALOG_RESOLUTION }; // ADC resolution (in bits) + size_t _adc_counts { static_cast(1) << _resolution }; // Max count }; // Provide EMON API helper where we don't care about specifics of how the values are stored