ソースを参照

switch single battery delay 5min

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 年 前
コミット
8f19ef09db
4 ファイル変更23 行追加4 行削除
  1. 1 1
      Project/version.txt
  2. 20 2
      Source/app.c
  3. 1 0
      Source/app.h
  4. 1 1
      Source/sw_build_info.h

+ 1 - 1
Project/version.txt

@@ -1 +1 @@
-PS100XX_V11_13231759
+PS100XX_V11_13311700

+ 20 - 2
Source/app.c

@@ -45,6 +45,7 @@ u8 shark_battery_series_times;
 
 shark_bool shark_battery_switch_busy;
 shark_bool shark_printf_enabled;
+u64 shark_battery_switch_time;
 
 void Misc_Initial(void)
 {
@@ -334,6 +335,22 @@ static u8 shark_battery_switch_single(void)
 	}
 }
 
+static shark_bool shark_battery_switch_allow(void)
+{
+	u64 delay;
+
+	if (shark_xl_detected != 0) {
+		return shark_false;
+	}
+
+	delay = shark_get_mseconds() - shark_battery_switch_time;
+	if (delay < 300000) {
+		return shark_false;
+	}
+
+	return shark_true;
+}
+
 static shark_bool shark_battery_series_enabled(void)
 {
 	if (shark_charger_state != SHARK_CHG_REMOVE) {
@@ -459,6 +476,7 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 	shark_battery_switch_busy = shark_true;
 	cb_operate_state = shark_battery_switch_auto(cb_operate);
 	shark_battery_switch_busy = shark_false;
+	shark_battery_switch_time = shark_get_mseconds();
 
 	sub_bms_info_1.exit_times = 0;
 	sub_bms_info_2.exit_times = 0;
@@ -970,7 +988,7 @@ void Intelligent_Management_Battery(void)
 						Battery_Change_Mode(CFG_BAT2);
 					}
 				}
-				else if (shark_xl_detected == 0 && shark_battery_get_voltage2() > shark_battery_get_voltage1() + SHARK_BATT_SINGLE_DELTA)
+				else if (shark_battery_switch_allow() && shark_battery_get_voltage2() > shark_battery_get_voltage1() + SHARK_BATT_SINGLE_DELTA)
 				{
 					Battery_Change_Mode(CFG_BAT2);
 				}
@@ -983,7 +1001,7 @@ void Intelligent_Management_Battery(void)
 						Battery_Change_Mode(CFG_BAT1);
 					}
 				}
-				else if (shark_xl_detected == 0 && shark_battery_get_voltage1() > shark_battery_get_voltage2() + SHARK_BATT_SINGLE_DELTA)
+				else if (shark_battery_switch_allow() && shark_battery_get_voltage1() > shark_battery_get_voltage2() + SHARK_BATT_SINGLE_DELTA)
 				{
 					Battery_Change_Mode(CFG_BAT1);
 				}

+ 1 - 0
Source/app.h

@@ -97,6 +97,7 @@ extern u8 shark_battery_series_times;
 
 extern shark_bool shark_battery_switch_busy;
 extern shark_bool shark_printf_enabled;
+extern u64 shark_battery_switch_time;
 
 __inline void Check_CB_Oper_Sta_Delay(void)
 {

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V11_13231759"
+#define CONFIG_VERSION "PS100XX_V11_13311700"