diff --git a/Project/HC32F460/MDK/HC32F460.uvoptx b/Project/HC32F460/MDK/HC32F460.uvoptx
index 175c4ce..ec37fb1 100644
--- a/Project/HC32F460/MDK/HC32F460.uvoptx
+++ b/Project/HC32F460/MDK/HC32F460.uvoptx
@@ -120,7 +120,7 @@
0
JL2CM3
- -U2147483647 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM)
+ -U2147483647 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM)
0
@@ -213,12 +213,17 @@
11
1
- App.EmergencyDelay1mSCnt,0x0A
+ App.StopCollDelay1mSCnt,0x0A
12
1
- App.ADTrack.LeftLowShieldVPT,0x0A
+ App.SlopeCollDelay1mSCnt,0x0A
+
+
+ 13
+ 1
+ App.EmergencyDelay1mSCnt,0x0A
diff --git a/Project/HC32F460/source/Module/dc_motor/dc_motor.c b/Project/HC32F460/source/Module/dc_motor/dc_motor.c
index da01ae2..56b8e46 100644
--- a/Project/HC32F460/source/Module/dc_motor/dc_motor.c
+++ b/Project/HC32F460/source/Module/dc_motor/dc_motor.c
@@ -358,10 +358,10 @@ void AdcLoopHander(void)
DMA_Cmd(M4_DMA1, Disable);
calc_adc_val(g_adc_val); /* 计算ADC的平均值 */
- DCMOTOR_DBG_LOG("ADC1_IN1 value %d.\t Temp:%.1fC \r\n", g_adc_val[0u], get_temp((float)g_adc_val[0]*Adc));
- DCMOTOR_DBG_LOG("ADC2_IN2 value %d.\t Valtage:%.1fV \r\n", g_adc_val[1u], (float)g_adc_val[1]*ADC2VBUS);
- temp_c = (g_adc_val[2]-init_adc_val)*ADC2CURT;
- DCMOTOR_DBG_LOG("ADC3_IN3 value %d.\t Current:%.1fmA \r\n", g_adc_val[2u], temp_c);
+// DCMOTOR_DBG_LOG("ADC1_IN1 value %d.\t Temp:%.1fC \r\n", g_adc_val[0u], get_temp((float)g_adc_val[0]*Adc));
+// DCMOTOR_DBG_LOG("ADC2_IN2 value %d.\t Valtage:%.1fV \r\n", g_adc_val[1u], (float)g_adc_val[1]*ADC2VBUS);
+// temp_c = (g_adc_val[2]-init_adc_val)*ADC2CURT;
+// DCMOTOR_DBG_LOG("ADC3_IN3 value %d.\t Current:%.1fmA \r\n", g_adc_val[2u], temp_c);
// g_motor_data.current = temp_c;
@@ -370,7 +370,7 @@ void AdcLoopHander(void)
{
g_motor_data.current = 0.0;
}
- DCMOTOR_DBG_LOG("\t\t\t g_motor_data.current:%.1fmA \r\n", g_motor_data.current);
+ // DCMOTOR_DBG_LOG("\t\t\t g_motor_data.current:%.1fmA \r\n", g_motor_data.current);
DMA_Cmd(M4_DMA1, Enable);
}
}
diff --git a/Project/HC32F460/source/User/Inc/main.h b/Project/HC32F460/source/User/Inc/main.h
index 8707242..41ac002 100644
--- a/Project/HC32F460/source/User/Inc/main.h
+++ b/Project/HC32F460/source/User/Inc/main.h
@@ -8,16 +8,17 @@
#define SDCARD_BLOCK_MAX (10000)
#define OSC_CNT 40
-#define SLOPE_CNT 30
+#define SLOPE_CNT 20
#define SLOPE_VPT 1000
#define FOLLOW_VPT 20
-#define SHIELD_VPT 4000
+#define SHIELD_VPT 5000
#define EME_STOP_VPT 4000
+#define CENTRE_VPT 2000
-#define STOP_TIME_MS 0
+#define STOP_TIME_MS 1000
#define RUN_TIME_MS 0
-#define EME_START_MS 2000
+#define EME_START_MS 0
#define EME_STOP_MS 2000
#define SLOPE_START_MS 3000
diff --git a/Project/HC32F460/source/User/Src/bsp.c b/Project/HC32F460/source/User/Src/bsp.c
index c52c53c..350a495 100644
--- a/Project/HC32F460/source/User/Src/bsp.c
+++ b/Project/HC32F460/source/User/Src/bsp.c
@@ -449,6 +449,8 @@ static void GPIO_Config(void)
stcPortInit.enPullUp = Enable;//上拉
PORT_Init(TWIN_BIT0_PORTx, TWIN_BIT0_PINx, &stcPortInit);
PORT_Init(TWIN_BIT1_PORTx, TWIN_BIT1_PINx, &stcPortInit);
+ SET_TWIN_BIT0();
+ SET_TWIN_BIT1();
}
/*********************************左上传感器
*******************************************************************************
@@ -1356,7 +1358,7 @@ void BSP_Init(void)
ExtiCh06_Init();
ExtiCh04_Init();
- DbgUart_Config(500000);
+ DbgUart_Config(700000);
//RS485Uart_Config(9600);
//Rtc_Config();
diff --git a/Project/HC32F460/source/User/Src/main.c b/Project/HC32F460/source/User/Src/main.c
index 4de1d89..91cc6bc 100644
--- a/Project/HC32F460/source/User/Src/main.c
+++ b/Project/HC32F460/source/User/Src/main.c
@@ -36,10 +36,10 @@ static void show(uint8_t ch,int32_t ad)
}
void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD)
{
- if(abs(AD - App.LeftUpCS1237_TrendArray[0]) > 2000000)
- {
- AD = App.LeftUpCS1237_TrendArray[0];
- }
+// if(abs(AD - App.LeftUpCS1237_TrendArray[0]) > 2000000)
+// {
+// AD = App.LeftUpCS1237_TrendArray[0];
+// }
show(1,AD);
for(int i = OSC_CNT-1; i > 0; i--)
{
@@ -51,10 +51,10 @@ void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD)
void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD)
{
- if(abs(AD - App.LeftLowCS1237_TrendArray[0]) > 2000000)
- {
- AD = App.LeftLowCS1237_TrendArray[0];
- }
+// if(abs(AD - App.LeftLowCS1237_TrendArray[0]) > 2000000)
+// {
+// AD = App.LeftLowCS1237_TrendArray[0];
+// }
show(2,AD);
for(int i = OSC_CNT-1; i > 0; i--)
{
@@ -65,10 +65,10 @@ void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD)
}
void RIGHTUP_CS1237AinADataProcessCallBack(int32_t AD)
{
- if(abs(AD - App.RightUpCS1237_TrendArray[0]) > 2000000)
- {
- AD = App.RightUpCS1237_TrendArray[0];
- }
+// if(abs(AD - App.RightUpCS1237_TrendArray[0]) > 2000000)
+// {
+// AD = App.RightUpCS1237_TrendArray[0];
+// }
show(3,AD);
for(int i = OSC_CNT-1; i > 0; i--)
{
@@ -79,10 +79,10 @@ void RIGHTUP_CS1237AinADataProcessCallBack(int32_t AD)
}
void RIGHTLOW_CS1237AinADataProcessCallBack(int32_t AD)
{
- if(abs(AD - App.RightLowCS1237_TrendArray[0]) > 2000000)
- {
- AD = App.RightLowCS1237_TrendArray[0];
- }
+// if(abs(AD - App.RightLowCS1237_TrendArray[0]) > 2000000)
+// {
+// AD = App.RightLowCS1237_TrendArray[0];
+// }
show(4,AD);
for(int i = OSC_CNT-1; i > 0; i--)
{
@@ -222,10 +222,10 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
int32_t LeftSlopeSum = abs(App.LeftUpCS1237_SlopeArray[0]) + abs(App.LeftLowCS1237_SlopeArray[0]);
int32_t RightSlopeSum = abs(App.RightUpCS1237_SlopeArray[0]) + abs(App.RightLowCS1237_SlopeArray[0]);
- int32_t LeftLowDiff = abs(Oll_diff1);
- int32_t RightLowDiff = abs(Orl_diff1);
- int32_t LeftDiffSum = abs(lu_diff[0]);
- int32_t RightDiffSum = abs(ru_diff[0]);
+ int32_t LeftDiff = abs(Oll_diff1) + abs(Olu_diff1);
+ int32_t RightDiff = abs(Orl_diff1) + abs(Oru_diff1);
+ int32_t LeftDiffSum = abs(lu_diff[0]) + abs(ll_diff[0]);
+ int32_t RightDiffSum = abs(ru_diff[0]) + abs(rl_diff[0]);
if(App.EmeFlag == true)
{
@@ -253,76 +253,98 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
App.LeftRunFalg = false;
App.RightRunFalg = false;
App.CentreRunFalg = false;
- if(((lu_ad[0] < App.ADTrack.LeftUp_Org_AdZero-1000)
- && (ll_ad[0] > App.ADTrack.LeftLow_Org_AdZero+1000)
- && (ru_ad[0] < App.ADTrack.RightUp_Org_AdZero-1000)
- && (rl_ad[0] > App.ADTrack.RightLow_Org_AdZero+1000))
- || ((lu_ad[0] > App.ADTrack.LeftUp_Org_AdZero+1000)
- && (ll_ad[0] < App.ADTrack.LeftLow_Org_AdZero-1000)
- && (ru_ad[0] > App.ADTrack.RightUp_Org_AdZero+1000)
- && (rl_ad[0] < App.ADTrack.RightLow_Org_AdZero-1000)))
+ if(((lu_ad[0] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)//判断中间操作
+ && (ll_ad[0] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)
+ && (ru_ad[0] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
+ && (rl_ad[0] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT)
+ && (lu_ad[1] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)
+ && (ll_ad[1] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)
+ && (ru_ad[1] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
+ && (rl_ad[1] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT)
+ && (lu_ad[2] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)
+ && (ll_ad[2] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)
+ && (ru_ad[2] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
+ && (rl_ad[2] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT))
+ || ((lu_ad[0] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)
+ && (ll_ad[0] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)
+ && (ru_ad[0] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
+ && (rl_ad[0] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)
+ && (lu_ad[1] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)
+ && (ll_ad[1] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)
+ && (ru_ad[1] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
+ && (rl_ad[1] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)
+ && (lu_ad[2] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)
+ && (ll_ad[2] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)
+ && (ru_ad[2] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
+ && (rl_ad[2] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)))
{
App.CentreRunFalg = true;
- if(abs(Oll_diff1) > abs(Orl_diff1))
+ if(LeftDiff > RightDiff)
{
App.LeftRunFalg = true;
- if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
- {
- BDC_UP();
- App.UpFlag = true;
- App.StopFlag = false;
- App.DownFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
- {
- BDC_DOWN();
- App.UpFlag = false;
- App.StopFlag = false;
- App.DownFlag = true;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
+ if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
+ {
+ BDC_UP();
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
+ }
+ if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
+ {
+ BDC_DOWN();
+ App.UpFlag = false;
+ App.StopFlag = false;
+ App.DownFlag = true;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
+ }
}
- else if(abs(Oll_diff1) < abs(Orl_diff1))
+ else if(RightDiff > LeftDiff)
{
App.RightRunFalg = true;
- if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
- {
- BDC_UP();
- App.UpFlag = true;
- App.StopFlag = false;
- App.DownFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
- {
- BDC_DOWN();
- App.UpFlag = false;
- App.StopFlag = false;
- App.DownFlag = true;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
+ if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
+ {
+ BDC_UP();
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
+ }
+ if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
+ {
+ BDC_DOWN();
+ App.UpFlag = false;
+ App.StopFlag = false;
+ App.DownFlag = true;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
+ }
}
}
- else if((LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum))
+ else if((LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum))////判断左边操作
{
App.LeftRunFalg = true;
- if(((App.LeftUpCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
+ if(((App.SlopeCollDelay1mSCnt <= 0)
+ && (App.LeftUpCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT) //判断正面按压
&& (App.LeftUpCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
&& (App.LeftUpCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT)
&& (App.LeftLowCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT)
&& (App.LeftLowCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT)
- && (App.LeftLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT)
- && (App.SlopeCollDelay1mSCnt <= 0))
+ && (App.LeftLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT))
|| ((Oll_diff1 <= -(App.ADTrack.LeftLowVPT*5/6))
&& (Oll_diff2 <= -(App.ADTrack.LeftLowVPT*5/6))
- && (Oll_diff3 <= -(App.ADTrack.LeftLowVPT*5/6))))
+ && (Oll_diff3 <= -(App.ADTrack.LeftLowVPT*5/6))
+ && (Olu_diff1 >= (App.ADTrack.LeftUpVPT*5/6))
+ && (Olu_diff2 >= (App.ADTrack.LeftUpVPT*5/6))
+ && (Olu_diff3 >= (App.ADTrack.LeftUpVPT*5/6))))
{
- if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)
+ if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断侧面推拉
+ && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
+ && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
+ && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT)
)
{
BDC_UP();
@@ -333,18 +355,24 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
}
- else if(((App.LeftUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT)
+ else if(((App.SlopeCollDelay1mSCnt <= 0)
+ && (App.LeftUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT) //判断上下拉方向
&& (App.LeftUpCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT)
&& (App.LeftUpCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT)
&& (App.LeftLowCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
&& (App.LeftLowCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
- && (App.LeftLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT)
- && ((App.SlopeCollDelay1mSCnt <= 0)))
- || ((Oll_diff1 >= App.ADTrack.LeftLowVPT)
- && (Oll_diff1 >= App.ADTrack.LeftLowVPT)
- && (Oll_diff1 >= App.ADTrack.LeftLowVPT)))
+ && (App.LeftLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT))
+ || ((Oll_diff1 >= (App.ADTrack.LeftLowVPT*5/6))
+ && (Oll_diff2 >= (App.ADTrack.LeftLowVPT*5/6))
+ && (Oll_diff3 >= (App.ADTrack.LeftLowVPT*5/6))
+ && (Olu_diff1 <= -(App.ADTrack.LeftUpVPT*5/6))
+ && (Olu_diff2 <= -(App.ADTrack.LeftUpVPT*5/6))
+ && (Olu_diff3 <= -(App.ADTrack.LeftUpVPT*5/6))))
{
- if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)
+ if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断侧面推拉
+ && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
+ && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
+ && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT)
)
{
BDC_DOWN();
@@ -356,21 +384,27 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
}
}
}
- else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum)
+ else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum)//上下拉屏幕右边
{
App.RightRunFalg = true;
- if(((App.RightUpCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
+ if(((App.SlopeCollDelay1mSCnt <= 0)
+ && (App.RightUpCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT) //判断上下拉方向
&& (App.RightUpCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
&& (App.RightUpCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT)
&& (App.RightLowCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT)
&& (App.RightLowCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT)
- && (App.RightLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT)
- && (App.SlopeCollDelay1mSCnt <= 0))
+ && (App.RightLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT))
|| ((Orl_diff1 <= -(App.ADTrack.RightLowVPT*5/6))
&& (Orl_diff2 <= -(App.ADTrack.RightLowVPT*5/6))
- && (Orl_diff3 <= -(App.ADTrack.RightLowVPT*5/6))))
+ && (Orl_diff3 <= -(App.ADTrack.RightLowVPT*5/6))
+ && (Oru_diff1 >= (App.ADTrack.RightUpVPT*5/6))
+ && (Oru_diff2 >= (App.ADTrack.RightUpVPT*5/6))
+ && (Oru_diff3 >= (App.ADTrack.RightUpVPT*5/6))))
{
- if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT)
+ if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT)//判断侧面推拉
+ && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
+ && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
+ && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT)
)
{
BDC_UP();
@@ -381,19 +415,24 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
}
- else if(((App.RightUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT)
+ else if(((App.SlopeCollDelay1mSCnt <= 0)
+ && (App.RightUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT) //判断上下拉方向
&& (App.RightUpCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT)
&& (App.RightUpCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT)
&& (App.RightLowCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
&& (App.RightLowCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
- && (App.RightLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT)
- && (App.SlopeCollDelay1mSCnt <= 0))
- || ((Orl_diff1 >= App.ADTrack.RightLowVPT)
- && (Orl_diff2 >= App.ADTrack.RightLowVPT)
- && (Orl_diff3 >= App.ADTrack.RightLowVPT))
- )
+ && (App.RightLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT))
+ || ((Orl_diff1 >= (App.ADTrack.RightLowVPT*5/6))
+ && (Orl_diff2 >= (App.ADTrack.RightLowVPT*5/6))
+ && (Orl_diff3 >= (App.ADTrack.RightLowVPT*5/6))
+ && (Oru_diff1 <= -(App.ADTrack.RightUpVPT*5/6))
+ && (Oru_diff2 <= -(App.ADTrack.RightUpVPT*5/6))
+ && (Oru_diff3 <= -(App.ADTrack.RightUpVPT*5/6))))
{
- if((abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT)
+ if((abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT)//判断侧面推拉
+ && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
+ && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
+ && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT)
)
{
BDC_DOWN();
@@ -441,6 +480,9 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1)
&& (abs(Oll_diff2) + EME_STOP_VPT) < abs(Orl_diff2)
&& (abs(Oll_diff3) + EME_STOP_VPT) < abs(Orl_diff3)
+ && (abs(Olu_diff1) + EME_STOP_VPT) < abs(Oru_diff1)
+ && (abs(Olu_diff2) + EME_STOP_VPT) < abs(Oru_diff2)
+ && (abs(Olu_diff3) + EME_STOP_VPT) < abs(Oru_diff3)
&& App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false)
{
BDC_STOP();
@@ -481,6 +523,9 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT)
&& abs(Oll_diff2) > (abs(Orl_diff2) + EME_STOP_VPT)
&& abs(Oll_diff3) > (abs(Orl_diff3) + EME_STOP_VPT)
+ && abs(Olu_diff1) > (abs(Oru_diff1) + EME_STOP_VPT)
+ && abs(Olu_diff2) > (abs(Oru_diff2) + EME_STOP_VPT)
+ && abs(Olu_diff3) > (abs(Oru_diff3) + EME_STOP_VPT)
&& App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false)
{
BDC_STOP();
@@ -524,6 +569,9 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1)
&& (abs(Oll_diff2) + EME_STOP_VPT) < abs(Orl_diff2)
&& (abs(Oll_diff3) + EME_STOP_VPT) < abs(Orl_diff3)
+ && (abs(Olu_diff1) + EME_STOP_VPT) < abs(Oru_diff1)
+ && (abs(Olu_diff2) + EME_STOP_VPT) < abs(Oru_diff2)
+ && (abs(Olu_diff3) + EME_STOP_VPT) < abs(Oru_diff3)
&& App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false)
{
BDC_STOP();
@@ -564,6 +612,9 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT)
&& abs(Oll_diff2) > (abs(Orl_diff2) + EME_STOP_VPT)
&& abs(Oll_diff3) > (abs(Orl_diff3) + EME_STOP_VPT)
+ && abs(Olu_diff1) > (abs(Oru_diff1) + EME_STOP_VPT)
+ && abs(Olu_diff2) > (abs(Oru_diff2) + EME_STOP_VPT)
+ && abs(Olu_diff3) > (abs(Oru_diff3) + EME_STOP_VPT)
&& App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false)
{
BDC_STOP();
@@ -573,32 +624,33 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
}
}
- if (lu_K.peaks_positive
- && lu_K.valleys_negative
- && App.LeftUpCS1237_SlopeArray[0] < FOLLOW_VPT
+ if (
+// lu_K.peaks_positive
+// && lu_K.valleys_negative
+ App.LeftUpCS1237_SlopeArray[0] < FOLLOW_VPT
&& App.LeftUpCS1237_SlopeArray[0] > -FOLLOW_VPT
&& App.LeftUpCS1237_SlopeArray[1] < FOLLOW_VPT
&& App.LeftUpCS1237_SlopeArray[1] > -FOLLOW_VPT
&& App.LeftUpCS1237_SlopeArray[2] < FOLLOW_VPT
&& App.LeftUpCS1237_SlopeArray[2] > -FOLLOW_VPT
- && ll_K.peaks_positive
- && ll_K.valleys_negative
+// && ll_K.peaks_positive
+// && ll_K.valleys_negative
&& App.LeftLowCS1237_SlopeArray[0] < FOLLOW_VPT
&& App.LeftLowCS1237_SlopeArray[0] > -FOLLOW_VPT
&& App.LeftLowCS1237_SlopeArray[1] < FOLLOW_VPT
&& App.LeftLowCS1237_SlopeArray[1] > -FOLLOW_VPT
&& App.LeftLowCS1237_SlopeArray[2] < FOLLOW_VPT
&& App.LeftLowCS1237_SlopeArray[2] > -FOLLOW_VPT
- && ru_K.peaks_positive
- && ru_K.valleys_negative
+// && ru_K.peaks_positive
+// && ru_K.valleys_negative
&& App.RightUpCS1237_SlopeArray[0] < FOLLOW_VPT
&& App.RightUpCS1237_SlopeArray[0] > -FOLLOW_VPT
&& App.RightUpCS1237_SlopeArray[1] < FOLLOW_VPT
&& App.RightUpCS1237_SlopeArray[1] > -FOLLOW_VPT
&& App.RightUpCS1237_SlopeArray[2] < FOLLOW_VPT
&& App.RightUpCS1237_SlopeArray[2] > -FOLLOW_VPT
- && rl_K.peaks_positive
- && rl_K.valleys_negative
+// && rl_K.peaks_positive
+// && rl_K.valleys_negative
&& App.RightLowCS1237_SlopeArray[0] < FOLLOW_VPT
&& App.RightLowCS1237_SlopeArray[0] > -FOLLOW_VPT
&& App.RightLowCS1237_SlopeArray[1] < FOLLOW_VPT
@@ -646,6 +698,8 @@ static void AppInit(void)
RIGHTUP_CS1237_Init();
RIGHTLOW_CS1237_Init();
+ BDC_STOP();
+
App.Status = APP_STATUS_WAIT;
App.TD1mSDelayCnt = 1000;
// App.Status = APP_STATUS_UP1;
@@ -892,7 +946,7 @@ void FeedDogHandler(void)
int main(void)
{
BSP_Init();
- AppInit();
+ AppInit();
while(1) {
#if(USE_WDT == 1)
FeedDogHandler();