Kaynağa Gözat

wait voltage down 200ms

Signed-off-by: FuangCao <cavan.cao@foxmail.com>
FuangCao 5 yıl önce
ebeveyn
işleme
e0cda8d015
2 değiştirilmiş dosya ile 26 ekleme ve 44 silme
  1. 25 43
      Source/app.c
  2. 1 1
      Source/sw_build_info.h

+ 25 - 43
Source/app.c

@@ -125,6 +125,25 @@ void Battery_CB_Operate(CB_VAL *cb_val)
 	SS__ENABLE(cb_val->ss__bit);
 }
 
+uint8_t battery_wait_voltage_down(uint32_t voltage)
+{
+	uint8_t success = 0;
+	uint16_t times;
+
+	for (times = 500; times > 0; times--) {
+		if (Measure_Vol() < voltage) {
+			if (++success > 20) {
+				return 1;
+			}
+		} else {
+			success = 0;
+		}
+
+		delay_1ms(10);
+	}
+
+	return 0;
+}
 
 int8_t Battery_CB_Switch(uint8_t cb_operate)
 {
@@ -142,21 +161,9 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 			cb_val_temp.ss__bit = 0;
 			Battery_CB_Operate(&cb_val_temp);
 
-			for(i = 0;i < 500;i++)
-			{
-				if(Measure_Vol() <= SELECT_ONE_BATTERY_VOL)
-					break;
-				
-				if(Handle_Can_Data() == 1)
-				{
-					// output fail
-					
-					;
-				}
-				delay_1ms(10);
-			}
-			if(i >= 500)
+			if(!battery_wait_voltage_down(SELECT_ONE_BATTERY_VOL)) {
 				goto SWITCH_ERROR;
+			}
 					
 			switch(cb_operate_state)
 			{
@@ -278,22 +285,9 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 			cb_val_temp.ss__bit = 0;
 			Battery_CB_Operate(&cb_val_temp);
 
-			for(i = 0;i < 500;i++)
-			{
-				if(Measure_Vol() <= SELECT_ONE_BATTERY_VOL)
-					break;
-				
-				if(Handle_Can_Data() == 1)
-				{
-					// output fail
-					
-					;
-				}
-				delay_1ms(10);
-			}
-			if(i >= 500)
+			if(!battery_wait_voltage_down(SELECT_ONE_BATTERY_VOL)) {
 				goto SWITCH_ERROR;
-
+			}
 			
 			switch(cb_operate_state)
 			{
@@ -416,21 +410,9 @@ int8_t Battery_CB_Switch(uint8_t cb_operate)
 			cb_val_temp.ss__bit = 0;
 			Battery_CB_Operate(&cb_val_temp);
 
-			for(i = 0;i < 500;i++)
-			{
-				if(Measure_Vol() <= SELECT_ONE_BATTERY_VOL)
-					break;
-				
-				if(Handle_Can_Data() == 1)
-				{
-					// output fail
-					
-					;
-				}
-				delay_1ms(10);
-			}
-			if(i >= 500)
+			if(!battery_wait_voltage_down(SELECT_ONE_BATTERY_VOL)) {
 				goto SWITCH_ERROR;
+			}
 			
 			switch(cb_operate_state)
 			{

+ 1 - 1
Source/sw_build_info.h

@@ -1,3 +1,3 @@
 #pragma once
 
-#define CONFIG_VERSION "PS100XX_V01_0C241625"
+#define CONFIG_VERSION "PS100XX_V01_0C291902"