|
|
@@ -66,6 +66,7 @@ void bms_state_init(void){
|
|
|
cht8305_reset();
|
|
|
#endif
|
|
|
_bms_state.cell_index_of_max_vol = 0xff;
|
|
|
+ _bms_state.cell_index_of_min_vol = 0xff;
|
|
|
_bms_state.bms_addr = 0x30;
|
|
|
measure_task_init(_current_notify, _voltage_notify, _temperature_notify);
|
|
|
io_state_init();
|
|
|
@@ -668,7 +669,6 @@ static void check_cell_balance(uint8_t current_max_index){
|
|
|
shark_timer_post(&_balance_timer, 5 * 1000); //stop balance after 30s
|
|
|
debounce_reset(_cell_balance);
|
|
|
}
|
|
|
- _bms_state.cell_index_of_max_vol = current_max_index;
|
|
|
}
|
|
|
#endif
|
|
|
static uint8_t calc_cell_voltage(void){
|
|
|
@@ -676,6 +676,7 @@ static uint8_t calc_cell_voltage(void){
|
|
|
uint16_t max_cell = 0;
|
|
|
uint16_t min_cell = 0xf000;
|
|
|
uint8_t max_index = 0;
|
|
|
+ uint8_t min_index = 0;
|
|
|
for (int i = 0; i < CELLS_NUM; i++){
|
|
|
voltage += measure_value()->cell_vol[i];
|
|
|
if (max_cell < measure_value()->cell_vol[i]){
|
|
|
@@ -684,11 +685,14 @@ static uint8_t calc_cell_voltage(void){
|
|
|
}
|
|
|
if (min_cell > measure_value()->cell_vol[i]){
|
|
|
min_cell = measure_value()->cell_vol[i];
|
|
|
+ min_index = i;
|
|
|
}
|
|
|
}
|
|
|
_bms_state.pack_voltage = voltage;
|
|
|
_bms_state.cell_max_vol = max_cell;
|
|
|
- _bms_state.cell_min_vol = min_cell;
|
|
|
+ _bms_state.cell_min_vol = min_cell;
|
|
|
+ _bms_state.cell_index_of_min_vol = min_index;
|
|
|
+ _bms_state.cell_index_of_max_vol = max_index;
|
|
|
return max_index;
|
|
|
}
|
|
|
|