|
|
@@ -42,6 +42,8 @@ const double nhb_default = 600;
|
|
|
SHENG_YU_LI_CHENG sheng_yu_li_cheng;
|
|
|
DELAY_COMMON save_param_delay;
|
|
|
|
|
|
+static uint8_t shark_battery_shake;
|
|
|
+
|
|
|
void Misc_Initial(void)
|
|
|
{
|
|
|
GPIO_Initial();
|
|
|
@@ -721,8 +723,13 @@ void test_io(void)
|
|
|
uint8_t Select_One_BAT(void)
|
|
|
{
|
|
|
uint8_t temp_op = CB_BAT_NO;
|
|
|
-
|
|
|
- if(Is_Sub_BMS_1_Normal())
|
|
|
+ uint8_t shake = shark_battery_shake_get();
|
|
|
+
|
|
|
+ if (shake == 1) {
|
|
|
+ return CB_BAT2;
|
|
|
+ } else if (shake == 2) {
|
|
|
+ return CB_BAT1;
|
|
|
+ } else if(Is_Sub_BMS_1_Normal())
|
|
|
{
|
|
|
if(Is_Sub_BMS_2_Normal())
|
|
|
{
|
|
|
@@ -989,6 +996,10 @@ uint8_t Check_CB_BAT1_BAT2_SERIES(void)
|
|
|
{
|
|
|
uint8_t temp_op = CB_MAX;
|
|
|
int32_t m_1_total_vol,m_2_total_vol;
|
|
|
+
|
|
|
+ if (shark_battery_shake_get() != 0) {
|
|
|
+ return Select_One_BAT();
|
|
|
+ }
|
|
|
|
|
|
if(is_intelligent && CB_OPERATE_PRECEDENCE_PARRALLEL != PRE_SERIES)
|
|
|
{
|
|
|
@@ -1131,6 +1142,8 @@ void Power_On_Normal(uint8_t enable,uint8_t from)
|
|
|
|
|
|
Set_Enter_Sleep_Delay();
|
|
|
|
|
|
+ shark_battery_shake_clear();
|
|
|
+
|
|
|
|
|
|
#endif
|
|
|
}
|
|
|
@@ -1379,6 +1392,11 @@ uint8_t Change_Mode_Sub_BMS_PARRALLEL(void)
|
|
|
uint8_t Change_Mode_Sub_BMS_SERIES(void)
|
|
|
{
|
|
|
int32_t m_1_total_vol,m_2_total_vol;
|
|
|
+
|
|
|
+ if (shark_battery_shake_get() != 0) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
//
|
|
|
if(!(cb_operate_state == CB_BAT1 || cb_operate_state == CB_BAT2))
|
|
|
return 0;
|
|
|
@@ -1639,7 +1657,7 @@ void Save_Neng_Hao_Bi(uint8_t *data,uint16_t len)
|
|
|
|
|
|
}
|
|
|
|
|
|
-void Save_Param_Time_Out(void)
|
|
|
+void Save_Param_Time_Out(void)
|
|
|
{
|
|
|
if(save_param_delay.set)
|
|
|
{
|
|
|
@@ -1783,3 +1801,28 @@ void Save_Param(void)
|
|
|
Save_Neng_Hao_Bi((uint8_t *)&sheng_yu_li_cheng.sy_ss_parm,sizeof(sheng_yu_li_cheng.sy_ss_parm));
|
|
|
}
|
|
|
|
|
|
+uint8_t shark_battery_shake_get_raw(void)
|
|
|
+{
|
|
|
+ return shark_battery_shake;
|
|
|
+}
|
|
|
+
|
|
|
+uint8_t shark_battery_shake_get(void)
|
|
|
+{
|
|
|
+ if (QD_Dect() == 0) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return shark_battery_shake;
|
|
|
+}
|
|
|
+
|
|
|
+void shark_battery_shake_set(uint8_t mask)
|
|
|
+{
|
|
|
+ if (QD_Dect() != 0) {
|
|
|
+ shark_battery_shake |= mask;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void shark_battery_shake_clear(void)
|
|
|
+{
|
|
|
+ shark_battery_shake = 0;
|
|
|
+}
|