forked from achamaikin/CCSModuleSW30Web
Clamp connector current from InfoBlock connector1CurrentLimitA (v1.0.36).
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user