Clamp connector current from InfoBlock connector1CurrentLimitA (v1.0.36).

This commit is contained in:
raduet
2026-09-02 17:21:35 +02:00
parent d3c9855f02
commit 644fcf1692
12 changed files with 8831 additions and 8739 deletions
+32
View File
@@ -1,5 +1,6 @@
#include "board.h"
#include "charger_config.h"
#include "adc.h"
#include "main.h"
#include "sma_filter.h"
@@ -7,6 +8,37 @@
InfoBlock_t *InfoBlock = (InfoBlock_t *)(VERSION_OFFSET);
static uint16_t s_connector_max_current_0p1A = (uint16_t)PSU_MAX_CURRENT * 10u;
static uint16_t Board_ResolveConnectorCurrentLimitA(uint16_t raw_limit_a)
{
return (raw_limit_a == 0u) ? (uint16_t)PSU_MAX_CURRENT : raw_limit_a;
}
void Board_LoadInfoBlockLimits(void)
{
const uint16_t limit_a = Board_ResolveConnectorCurrentLimitA(InfoBlock->connector1CurrentLimitA);
uint32_t limit_0p1a = (uint32_t)limit_a * 10u;
const uint32_t hw_max_0p1a = (uint32_t)PSU_MAX_CURRENT * 10u;
if (limit_0p1a > hw_max_0p1a) {
limit_0p1a = hw_max_0p1a;
}
s_connector_max_current_0p1A = (uint16_t)limit_0p1a;
}
uint16_t Board_GetConnectorCurrentLimit_0p1A(void)
{
return s_connector_max_current_0p1A;
}
uint16_t Board_ClampCurrent_0p1A(uint16_t current_0p1A)
{
const uint16_t limit = Board_GetConnectorCurrentLimit_0p1A();
return (current_0p1A > limit) ? limit : current_0p1A;
}
uint8_t RELAY_State[RELAY_COUNT];
static volatile uint8_t adc_lock = 0;
static SMAFilter_t conn_temp_adc_filter[2];