Motors turning

This commit is contained in:
2023-04-24 19:20:21 +02:00
parent f5e26aad24
commit 6c27b83377
4 changed files with 19 additions and 14 deletions

View File

@ -12,6 +12,11 @@ static uint32_t precharge_95_reached_timestamp = 0;
static uint32_t charging_check_timestamp = 0;
static uint32_t discharge_begin_timestamp = 0;
static int sdc_is_closed() {
return HAL_GPIO_ReadPin(SDC_VOLTAGE_GPIO_Port, SDC_VOLTAGE_Pin) ==
GPIO_PIN_SET;
}
void ts_sm_init() {
ts_state.current_state = TS_INACTIVE;
ts_state.target_state = TS_INACTIVE;
@ -63,7 +68,7 @@ TSState ts_sm_update_inactive() {
}
TSState ts_sm_update_active() {
if (ts_state.target_state == TS_INACTIVE) {
if (ts_state.target_state == TS_INACTIVE || !sdc_is_closed()) {
discharge_begin_timestamp = HAL_GetTick();
return TS_DISCHARGE;
}
@ -72,12 +77,12 @@ TSState ts_sm_update_active() {
}
TSState ts_sm_update_precharge() {
if (ts_state.target_state == TS_INACTIVE) {
if (ts_state.target_state == TS_INACTIVE || !sdc_is_closed()) {
discharge_begin_timestamp = HAL_GetTick();
return TS_DISCHARGE;
}
if (shunt_data.voltage2 > MIN_VEHICLE_SIDE_VOLTAGE &&
shunt_data.voltage2 > 0.95 * shunt_data.voltage3) {
if (shunt_data.voltage_veh > MIN_VEHICLE_SIDE_VOLTAGE &&
shunt_data.voltage_veh > 0.95 * shunt_data.voltage_bat) {
uint32_t now = HAL_GetTick();
if (precharge_95_reached_timestamp == 0) {
precharge_95_reached_timestamp = now;
@ -114,12 +119,12 @@ TSState ts_sm_update_error() {
}
TSState ts_sm_update_charging_check() {
if (ts_state.target_state == TS_INACTIVE) {
if (ts_state.target_state == TS_INACTIVE || !sdc_is_closed()) {
discharge_begin_timestamp = HAL_GetTick();
return TS_DISCHARGE;
}
if (shunt_data.voltage2 > shunt_data.voltage3) {
if (shunt_data.voltage_veh > shunt_data.voltage_bat) {
return TS_CHARGING;
} else if (HAL_GetTick() - charging_check_timestamp >
MAX_CHARGING_CHECK_DURATION) {
@ -130,7 +135,7 @@ TSState ts_sm_update_charging_check() {
}
TSState ts_sm_update_charging() {
if (ts_state.target_state == TS_INACTIVE) {
if (ts_state.target_state == TS_INACTIVE || !sdc_is_closed()) {
discharge_begin_timestamp = HAL_GetTick();
return TS_DISCHARGE;
}