From bb356057fc57445e09d0447dfc843a90fab37ccb Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Sun, 8 Jun 2014 03:03:24 +0100 Subject: [PATCH] Ensure battery cell detection happens after everything has powered up. Previously, on the OLIMEXINO at least, initial readings are lower than normal readings and that meant that the battery warning voltage was incorrectly set. --- src/main/main.c | 10 ++++++---- src/main/sensors/battery.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/main.c b/src/main/main.c index b6058e8d4..87be10d50 100755 --- a/src/main/main.c +++ b/src/main/main.c @@ -127,10 +127,6 @@ void init(void) adcInit(&adc_params); - // Check battery type/voltage - if (feature(FEATURE_VBAT)) - batteryInit(&masterConfig.batteryConfig); - initBoardAlignment(&masterConfig.boardAlignment); // We have these sensors; SENSORS_SET defined in board.h depending on hardware platform @@ -242,6 +238,12 @@ void init(void) } serialPrint(loopbackPort, "LOOPBACK\r\n"); #endif + + // Now that everything has powered up the voltage and cell count be determined. + + // Check battery type/voltage + if (feature(FEATURE_VBAT)) + batteryInit(&masterConfig.batteryConfig); } #ifdef SOFTSERIAL_LOOPBACK diff --git a/src/main/sensors/battery.c b/src/main/sensors/battery.c index 4e8191490..1708b23a9 100644 --- a/src/main/sensors/battery.c +++ b/src/main/sensors/battery.c @@ -83,7 +83,7 @@ void batteryInit(batteryConfig_t *initialBatteryConfig) } batteryCellCount = i; - batteryWarningVoltage = i * batteryConfig->vbatmincellvoltage; // 3.3V per cell minimum, configurable in CLI + batteryWarningVoltage = batteryCellCount * batteryConfig->vbatmincellvoltage; // 3.3V per cell minimum, configurable in CLI } #define ADCVREF 33L