summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRiku Isokoski <riksu9000@gmail.com>2021-07-12 23:07:05 +0300
committerRiku Isokoski <riksu9000@gmail.com>2021-07-12 23:07:05 +0300
commit7efe2b7c51e1d21305154edad6ddf1b608784451 (patch)
tree6a5884cb0b4b04ee8e335a7fb931354aa699ce04 /src
parent4f378e8726fdcff72598aa6ed12eeaa6b3e61355 (diff)
Fix misconfigured ADC and remove now unnecessary filtering
Diffstat (limited to 'src')
-rw-r--r--src/components/battery/BatteryController.cpp14
-rw-r--r--src/components/battery/BatteryController.h38
2 files changed, 4 insertions, 48 deletions
diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp
index 76ad8cb3..41b4c483 100644
--- a/src/components/battery/BatteryController.cpp
+++ b/src/components/battery/BatteryController.cpp
@@ -26,7 +26,6 @@ void Battery::Update() {
return;
}
// Non blocking read
- samples = 0;
isReading = true;
SaadcInit();
@@ -45,7 +44,7 @@ void Battery::SaadcInit() {
.resistor_n = NRF_SAADC_RESISTOR_DISABLED,
.gain = NRF_SAADC_GAIN1_5,
.reference = NRF_SAADC_REFERENCE_INTERNAL,
- .acq_time = NRF_SAADC_ACQTIME_3US,
+ .acq_time = NRF_SAADC_ACQTIME_40US,
.mode = NRF_SAADC_MODE_SINGLE_ENDED,
.burst = NRF_SAADC_BURST_ENABLED,
.pin_p = batteryVoltageAdcInput,
@@ -75,14 +74,7 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) {
percentRemaining = std::max(percentRemaining, 0);
percentRemaining = std::min(percentRemaining, 100);
- percentRemainingBuffer.insert(percentRemaining);
-
- samples++;
- if (samples > percentRemainingSamples) {
- nrfx_saadc_uninit();
- isReading = false;
- } else {
- nrfx_saadc_sample();
- }
+ nrfx_saadc_uninit();
+ isReading = false;
}
}
diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h
index 26e24938..84d488ed 100644
--- a/src/components/battery/BatteryController.h
+++ b/src/components/battery/BatteryController.h
@@ -7,38 +7,6 @@
namespace Pinetime {
namespace Controllers {
- /** A simple circular buffer that can be used to average
- out the sensor values. The total capacity of the CircBuffer
- is given as the template parameter N.
- */
- template <int N> class CircBuffer {
- public:
- CircBuffer() : arr {}, sz {}, cap {N}, head {} {
- }
- /**
- insert member function overwrites the next data to the current
- HEAD and moves the HEAD to the newly inserted value.
- */
- void insert(const int num) {
- head %= cap;
- arr[head++] = num;
- if (sz != cap) {
- sz++;
- }
- }
-
- int GetAverage() const {
- int sum = std::accumulate(arr.begin(), arr.end(), 0);
- return (sum / sz);
- }
-
- private:
- std::array<int, N> arr; /**< internal array used to store the values*/
- uint8_t sz; /**< The current size of the array.*/
- uint8_t cap; /**< Total capacity of the CircBuffer.*/
- uint8_t head; /**< The current head of the CircBuffer*/
- };
-
class Battery {
public:
Battery();
@@ -47,7 +15,7 @@ namespace Pinetime {
void Update();
int PercentRemaining() const {
- return percentRemainingBuffer.GetAverage();
+ return percentRemaining;
}
uint16_t Voltage() const {
@@ -65,9 +33,6 @@ namespace Pinetime {
static Battery* instance;
nrf_saadc_value_t saadc_value;
- static constexpr uint8_t percentRemainingSamples = 5;
- CircBuffer<percentRemainingSamples> percentRemainingBuffer {};
-
static constexpr uint32_t chargingPin = 12;
static constexpr uint32_t powerPresentPin = 19;
static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7;
@@ -83,7 +48,6 @@ namespace Pinetime {
static void adcCallbackStatic(nrfx_saadc_evt_t const* event);
bool isReading = false;
- uint8_t samples = 0;
};
}
}