diff --git a/Core/Inc/AIR_State_Maschine.h b/Core/Inc/AIR_State_Maschine.h index a772f63..249d7f9 100644 --- a/Core/Inc/AIR_State_Maschine.h +++ b/Core/Inc/AIR_State_Maschine.h @@ -32,6 +32,7 @@ typedef struct { int32_t BatteryVoltageVehicleSide; int32_t BatteryVoltageBatterySide; + int32_t shuntCurrent; uint8_t targetTSState; uint8_t currentTSState; uint32_t precharge95ReachedTimestamp; diff --git a/Core/Src/AIR_State_Maschine.c b/Core/Src/AIR_State_Maschine.c index 7871565..ecd8f9e 100644 --- a/Core/Src/AIR_State_Maschine.c +++ b/Core/Src/AIR_State_Maschine.c @@ -113,6 +113,12 @@ uint8_t Update_AIR_State(AIRStateHandler* airstate) { } } + else if (airstate->currentTSState == TS_CHARGING) { + if (airstate->shuntCurrent < 0) { + airstate->currentTSState = TS_ERROR; + } + } + else if (airstate->currentTSState == TS_PRECHARGE) // Change from Precharge to Active at 95% TS Voltage at // Vehicle Side diff --git a/Core/Src/SPI_Slave_Communication.c b/Core/Src/SPI_Slave_Communication.c index 122b4c4..e57ea81 100644 --- a/Core/Src/SPI_Slave_Communication.c +++ b/Core/Src/SPI_Slave_Communication.c @@ -348,7 +348,7 @@ void InterSTMFrame() { spirxbuf[0] << 24 | spirxbuf[1] << 16 | spirxbuf[2] << 8 | spirxbuf[3]; spi_airstates->BatteryVoltageVehicleSide = spirxbuf[4] << 24 | spirxbuf[5] << 16 | spirxbuf[6] << 8 | spirxbuf[7]; - uint32_t current = + spi_airstates->shuntCurrent = spirxbuf[8] << 24 | spirxbuf[9] << 16 | spirxbuf[10] << 8 | spirxbuf[11]; spi_airstates->targetTSState = spirxbuf[12]; }