Files
bobbycar-controller-firmware/uvlo.h
2023-04-13 04:18:31 +02:00

37 lines
683 B
C++

#pragma once
#include "config.h"
namespace UVLO
{
static constexpr uint32_t NUM_MEASUREMENTS = 50;
static constexpr uint32_t MIN_VOLTAGE = 1500 * BAT_CALIB_ADC / BAT_CALIB_REAL_VOLTAGE;
static uint32_t measurements = 0;
static uint32_t sum = 0;
static bool locked_out = true;
static void update(uint16_t voltage)
{
if (measurements < NUM_MEASUREMENTS)
{
sum += voltage;
measurements++;
if (measurements == NUM_MEASUREMENTS && sum / NUM_MEASUREMENTS >= MIN_VOLTAGE)
locked_out = false;
}
}
static bool isDone()
{
return measurements >= NUM_MEASUREMENTS;
}
static bool isLockedOut()
{
return locked_out;
}
} // namespace