refactor: use BMS' built-in OV/UV detection

This commit is contained in:
Kilian Bracher 2025-02-25 20:21:26 +01:00
parent 90cd1330c2
commit 10ea3c85a3
Signed by: k.bracher
SSH Key Fingerprint: SHA256:mXpyZkK7RDiJ7qeHCKJX108woM0cl5TrCvNBJASu6lM
2 changed files with 10 additions and 10 deletions

View File

@ -280,7 +280,9 @@ HAL_StatusTypeDef amsCheckUnderOverVoltage(Cell_Module (*module)[N_BMS]) {
}
}
return HAL_OK;
uint8_t buffer[CMD_BUFFER_SIZE(6)] = {[0 ... CMD_BUFFER_SIZE(6) - 1] = 0xFF};
return writeCMD(CLOVUV, buffer, STATUS_GROUP_D_SIZE); // flags are latched, so we need to clear them
}
HAL_StatusTypeDef amsClearFlag() {

View File

@ -101,14 +101,12 @@ ADBMS_DetailedStatus AMS_Idle_Loop() {
return (ADBMS_DetailedStatus){ADBMS_INTERNAL_BMS_CHECKSUM_FAIL, -1};
}
for (size_t i = 0; i < numberofCells; i++) {
if ((match = any(module.cellVoltages[i] < 2500))) {
error_data[ADBMS_UNDERVOLT].data[0] = i;
return (ADBMS_DetailedStatus){ADBMS_UNDERVOLT, match};
} else if ((match = any(module.cellVoltages[i] > 4200))) {
error_data[ADBMS_OVERVOLT].data[0] = i;
return (ADBMS_DetailedStatus){ADBMS_OVERVOLT, match};
}
if ((match = any(module.overVoltage))) {
return (ADBMS_DetailedStatus){ADBMS_OVERVOLT, match};
}
if ((match = any(module.underVoltage))) {
return (ADBMS_DetailedStatus){ADBMS_UNDERVOLT, match};
}
// TODO: replace with the correct threshold for the internal die temperature
@ -116,7 +114,7 @@ ADBMS_DetailedStatus AMS_Idle_Loop() {
return (ADBMS_DetailedStatus){ADBMS_INTERNAL_BMS_OVERTEMP, match};
}
mcuDelay(10);
// mcuDelay(10);
return NO_ERROR;
}