Преглед изворни кода

检测到hall移除后,立马关大电,开小电,不管串口是否超时

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 5 година
родитељ
комит
abbb9815ea
1 измењених фајлова са 8 додато и 2 уклоњено
  1. 8 2
      Application/app/sox/state.c

+ 8 - 2
Application/app/sox/state.c

@@ -30,6 +30,9 @@ static int ml5238_cali_count = 0;
 static shark_task_t _bms_main_task = {.handler = _bms_main_task_handler};
 static shark_timer_t _debug_timer = {.handler = _debug_timer_handler};
 
+static u64 open_dfet_time = 0;
+static u64 close_dfet_time = 0;
+
 void bms_state_init(void){
 	set_log_level(MOD_STATE, L_debug);
 	state_debug("BMS System Starting......\n");	
@@ -87,13 +90,14 @@ void bms_state_log(void){
 	state_debug("Life Time: %d\n", shark_get_seconds());
 	state_debug("Sleep Time: %ds\n", get_system_sleep_time());
 	state_debug("ml5238 cali: %d\n", ml5238_cali_count);
+	state_debug("open/close dfet %lld, %lld\n", open_dfet_time, close_dfet_time);
 #if 0
 	state_debug("Charging: %d\n", _bms_state.charging);
 	state_debug("WorkMode %d\n", _bms_state.work_mode);
 	state_debug("DMos: %d\n", ml5238_is_discharging());
 	state_debug("CMos: %d\n", ml5238_is_charging());
 	state_debug("AuxPower: %d\n", AUX_VOL_IS_OPEN());
-	state_debug("WorkMode:0x%x\n", _bms_state.work_mode);
+	state_debug("WorkMode:0x%x\n", _bms_state.work_mode);l
 #endif
 }
 
@@ -236,6 +240,7 @@ static void _process_user_request(s32 health){
 		}else if (_bms_state.user_request & USER_REQUEST_DISCHARGER_ON) {
 			if ((health & Health_Discharger_Failt) == 0){
 				discharger_open(1);
+				open_dfet_time = shark_get_seconds();
 			}
 		} 
 		_bms_state.user_request &= ~USER_REQUEST_PENDING;//clear user request pending
@@ -328,9 +333,10 @@ static int _can_close_mos_no_hall(void){
 }
 
 static void _process_iostate_changed(s32 unhealth){
-	if (!(io_state()->hall_detect) && shark_uart_timeout() && _can_close_mos_no_hall()){
+	if (!(io_state()->hall_detect)&& _can_close_mos_no_hall()){
 		if (ml5238_is_discharging()){
 			discharger_open(0);
+			close_dfet_time = shark_get_seconds();
 		}
 		if (!AUX_VOL_IS_OPEN()){
 			start_aux_power(1);