From a0f42649f41dd29be9ef576e2e7b54d52968f2e4 Mon Sep 17 00:00:00 2001
From: YuanHongbin <975559679@qq.com>
Date: Sun, 14 Sep 2025 16:25:05 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AE=97=E6=B3=95=E6=8E=A7=E5=88=B6=E5=A4=A7?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Project/HC32F460/MDK/HC32F460.uvoptx | 46 ++-
Project/HC32F460/source/User/Inc/main.h | 8 +-
Project/HC32F460/source/User/Src/main.c | 358 +++++++++++++++++-------
3 files changed, 299 insertions(+), 113 deletions(-)
diff --git a/Project/HC32F460/MDK/HC32F460.uvoptx b/Project/HC32F460/MDK/HC32F460.uvoptx
index e4e31f9..8a1f3d6 100644
--- a/Project/HC32F460/MDK/HC32F460.uvoptx
+++ b/Project/HC32F460/MDK/HC32F460.uvoptx
@@ -153,17 +153,57 @@
0
1
- LEFTLOW_CS1237Var.CS1237Delay1mSCnt,0x0A
+ App.WaitFlag
1
1
- App.FeedDogDlyCnt,0x0A
+ App.UpFlag
2
1
- App.Status,0x0A
+ App.DownFlag
+
+
+ 3
+ 1
+ App.StopFlag
+
+
+ 4
+ 1
+ App.EvenRunning
+
+
+ 5
+ 1
+ App.LeftRunFalg
+
+
+ 6
+ 1
+ App.RightRunFalg
+
+
+ 7
+ 1
+ App.ADTrack.LeftUp_Org_AdZero,0x0A
+
+
+ 8
+ 1
+ App.ADTrack.LeftLow_Org_AdZero,0x0A
+
+
+ 9
+ 1
+ App.ADTrack.RightUp_Org_AdZero,0x0A
+
+
+ 10
+ 1
+ App.ADTrack.RightLow_Org_AdZero,0x0A
diff --git a/Project/HC32F460/source/User/Inc/main.h b/Project/HC32F460/source/User/Inc/main.h
index cb331f2..6c4fae2 100644
--- a/Project/HC32F460/source/User/Inc/main.h
+++ b/Project/HC32F460/source/User/Inc/main.h
@@ -20,9 +20,9 @@ typedef struct{
int32_t RightLowVPT;//右下设备阈值
int32_t LeftUp_Org_AdZero;//左上设备原始AD零点
- int32_t LeftLow_Org_AdZero;//左上设备原始AD零点
+ int32_t LeftLow_Org_AdZero;//左下设备原始AD零点
int32_t RightUp_Org_AdZero;//右上设备原始AD零点
- int32_t RightLow_Org_AdZero;//右上设备原始AD零点
+ int32_t RightLow_Org_AdZero;//右下设备原始AD零点
}ADTrack_t;
/*数据读取状态机*/
@@ -73,6 +73,8 @@ typedef struct {
bool DownFlag;//下降标志位
bool StopFlag;//停止标志位
bool EvenRunning;//平稳运行标志位
+ bool LeftRunFalg;
+ bool RightRunFalg;
bool LeftUpCS1237ReadEndFlag;
bool LeftLowCS1237ReadEndFlag;
@@ -88,6 +90,8 @@ typedef struct {
int32_t LeftLowCS1237_SlopeArray[SLOPE_CNT];
int32_t RightUpCS1237_SlopeArray[SLOPE_CNT];
int32_t RightLowCS1237_SlopeArray[SLOPE_CNT];
+
+ bool WaitFlag;
}AppDetect_t;
extern AppDetect_t App;
diff --git a/Project/HC32F460/source/User/Src/main.c b/Project/HC32F460/source/User/Src/main.c
index caa343e..ff458b7 100644
--- a/Project/HC32F460/source/User/Src/main.c
+++ b/Project/HC32F460/source/User/Src/main.c
@@ -70,144 +70,284 @@ void RIGHTLOW_CS1237AinADataProcessCallBack(int32_t AD)
App.RightLowCS1237_TrendArray[0] = AD;
App.RightLowCS1237ReadEndFlag = true;
}
-#if 0
-void SupportControlHandle(int32_t *Ain1_ad, int32_t *Ain2_ad)
+#if 1
+void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_t *rl_ad)
{
- int32_t A1_diff[OSC_CNT], A2_diff[OSC_CNT], O1_diff1, O1_diff2, O1_diff3, O2_diff1, O2_diff2, O2_diff3;
- O1_diff1 = Ain1_ad[0] - App.ADTrack.Ain1_Org_AdZero;
- O1_diff2 = Ain1_ad[1] - App.ADTrack.Ain1_Org_AdZero;
- O1_diff3 = Ain1_ad[2] - App.ADTrack.Ain1_Org_AdZero;
- O2_diff1 = Ain2_ad[0] - App.ADTrack.Ain2_Org_AdZero;
- O2_diff2 = Ain2_ad[1] - App.ADTrack.Ain2_Org_AdZero;
- O2_diff3 = Ain2_ad[2] - App.ADTrack.Ain2_Org_AdZero;
+ int32_t lu_diff[OSC_CNT], Olu_diff1, Olu_diff2, Olu_diff3;
+ int32_t ll_diff[OSC_CNT], Oll_diff1, Oll_diff2, Oll_diff3;
+ int32_t ru_diff[OSC_CNT], Oru_diff1, Oru_diff2, Oru_diff3;
+ int32_t rl_diff[OSC_CNT], Orl_diff1, Orl_diff2, Orl_diff3;
+
+ Olu_diff1 = lu_ad[0] - App.ADTrack.LeftUp_Org_AdZero;
+ Olu_diff2 = lu_ad[1] - App.ADTrack.LeftUp_Org_AdZero;
+ Olu_diff3 = lu_ad[2] - App.ADTrack.LeftUp_Org_AdZero;
+ Oll_diff1 = ll_ad[0] - App.ADTrack.LeftLow_Org_AdZero;
+ Oll_diff2 = ll_ad[1] - App.ADTrack.LeftLow_Org_AdZero;
+ Oll_diff3 = ll_ad[2] - App.ADTrack.LeftLow_Org_AdZero;
+ Oru_diff1 = ru_ad[0] - App.ADTrack.RightUp_Org_AdZero;
+ Oru_diff2 = ru_ad[1] - App.ADTrack.RightUp_Org_AdZero;
+ Oru_diff3 = ru_ad[2] - App.ADTrack.RightUp_Org_AdZero;
+ Orl_diff1 = rl_ad[0] - App.ADTrack.RightLow_Org_AdZero;
+ Orl_diff2 = rl_ad[1] - App.ADTrack.RightLow_Org_AdZero;
+ Orl_diff3 = rl_ad[2] - App.ADTrack.RightLow_Org_AdZero;
+
for(int i = 0; i < OSC_CNT; i++)
{
- A1_diff[i] = Ain1_ad[i] - Ain1_ad[OSC_CNT - 1];
- A2_diff[i] = Ain2_ad[i] - Ain2_ad[OSC_CNT - 1];
+ lu_diff[i] = lu_ad[i] - lu_ad[OSC_CNT - 1];
+ ll_diff[i] = ll_ad[i] - ll_ad[OSC_CNT - 1];
+ ru_diff[i] = ru_ad[i] - ru_ad[OSC_CNT - 1];
+ rl_diff[i] = rl_ad[i] - rl_ad[OSC_CNT - 1];
}
- TrendResult result_A1 = analyze_trend(A1_diff, OSC_CNT);
- TrendResult result_A2 = analyze_trend(A2_diff, OSC_CNT);
+ TrendResult result_lu = analyze_trend(lu_diff, OSC_CNT);
+ TrendResult result_ll = analyze_trend(ll_diff, OSC_CNT);
+ TrendResult result_ru = analyze_trend(ru_diff, OSC_CNT);
+ TrendResult result_rl = analyze_trend(rl_diff, OSC_CNT);
- int32_t A1_slope = result_A1.slope;
- int32_t A2_slope = result_A2.slope;
- //show2(A2_slope);
+ int32_t lu_slope = result_lu.slope;
+ int32_t ll_slope = result_ll.slope;
+ int32_t ru_slope = result_ru.slope;
+ int32_t rl_slope = result_rl.slope;
+ //show(A2_slope);
for(int i = SLOPE_CNT-1; i > 0; i--)
{
App.LeftUpCS1237_SlopeArray[i] = App.LeftUpCS1237_SlopeArray[i - 1];
App.LeftLowCS1237_SlopeArray[i] = App.LeftLowCS1237_SlopeArray[i - 1];
+ App.RightUpCS1237_SlopeArray[i] = App.RightUpCS1237_SlopeArray[i - 1];
+ App.RightLowCS1237_SlopeArray[i] = App.RightLowCS1237_SlopeArray[i - 1];
}
- App.LeftUpCS1237_SlopeArray[0] = A1_slope;
- App.LeftLowCS1237_SlopeArray[0] = A2_slope;
+ App.LeftUpCS1237_SlopeArray[0] = lu_slope;
+ App.LeftLowCS1237_SlopeArray[0] = ll_slope;
+ App.RightUpCS1237_SlopeArray[0] = ru_slope;
+ App.RightLowCS1237_SlopeArray[0] = rl_slope;
- PeakValleyCheck result1_K = check_peaks_valleys(App.LeftUpCS1237_SlopeArray, SLOPE_CNT);
- PeakValleyCheck result2_K = check_peaks_valleys(App.LeftLowCS1237_SlopeArray, SLOPE_CNT);
+ PeakValleyCheck lu_K = check_peaks_valleys(App.LeftUpCS1237_SlopeArray, SLOPE_CNT);
+ PeakValleyCheck ll_K = check_peaks_valleys(App.LeftLowCS1237_SlopeArray, SLOPE_CNT);
+ PeakValleyCheck ru_K = check_peaks_valleys(App.RightUpCS1237_SlopeArray, SLOPE_CNT);
+ PeakValleyCheck rl_K = check_peaks_valleys(App.RightLowCS1237_SlopeArray, SLOPE_CNT);
if(App.StopFlag == true)
{
if(App.StopCollDelay1mSCnt <= 0)
{
- if(((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))
- || ((O1_diff1 >= App.ADTrack.Ain1VPT)
- && (O1_diff2 >= App.ADTrack.Ain1VPT)
- && (O1_diff3 >= App.ADTrack.Ain1VPT)
- && (O2_diff1 <= -App.ADTrack.Ain2VPT)
- && (O2_diff2 <= -App.ADTrack.Ain2VPT)
- && (O2_diff3 <= -App.ADTrack.Ain2VPT)))
+ uint32_t LeftSlopeSum = abs(App.LeftUpCS1237_SlopeArray[0]) + abs(App.LeftLowCS1237_SlopeArray[0]);
+ uint32_t RightSlopeSum = abs(App.RightUpCS1237_SlopeArray[0]) + abs(App.RightLowCS1237_SlopeArray[0]);
+ uint32_t LeftDiffSum = abs(lu_ad[0]) + abs(ll_ad[0]);
+ uint32_t RightDiffSum = abs(ru_ad[0]) + abs(rl_ad[0]);
+
+ App.LeftRunFalg = false;
+ App.RightRunFalg = false;
+ if(LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum)
{
- //BDC_UP();
- App.UpFlag = true;
- App.StopFlag = false;
- App.DownFlag = false;
+ App.LeftRunFalg = true;
+ if(((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))
+ || ((Olu_diff1 >= App.ADTrack.LeftUpVPT)
+ && (Olu_diff2 >= App.ADTrack.LeftUpVPT)
+ && (Olu_diff3 >= App.ADTrack.LeftUpVPT)
+ && (Oll_diff1 <= -App.ADTrack.LeftLowVPT)
+ && (Oll_diff2 <= -App.ADTrack.LeftLowVPT)
+ && (Oll_diff3 <= -App.ADTrack.LeftLowVPT)))
+ {
+ //BDC_UP();
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ }
+ else if(((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))
+ || ((Olu_diff1 <= -App.ADTrack.LeftUpVPT)
+ && (Olu_diff1 <= -App.ADTrack.LeftUpVPT)
+ && (Olu_diff1 <= -App.ADTrack.LeftUpVPT)
+ && (Oll_diff1 >= App.ADTrack.LeftLowVPT)
+ && (Oll_diff1 >= App.ADTrack.LeftLowVPT)
+ && (Oll_diff1 >= App.ADTrack.LeftLowVPT)))
+ {
+ //BDC_DOWN();
+ App.DownFlag = true;
+ App.StopFlag = false;
+ App.UpFlag = false;
+ }
}
- else if(((App.Ain1_SlopeArray[0] >= App.ADTrack.Slope_VPT)
- && (App.Ain1_SlopeArray[1] >= App.ADTrack.Slope_VPT)
- && (App.Ain1_SlopeArray[2] >= App.ADTrack.Slope_VPT)
- && (App.Ain2_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
- && (App.Ain2_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
- && (App.Ain2_SlopeArray[2] <= -App.ADTrack.Slope_VPT))
- || ((O1_diff1 <= -App.ADTrack.Ain1VPT)
- && (O1_diff2 <= -App.ADTrack.Ain1VPT)
- && (O1_diff3 <= -App.ADTrack.Ain1VPT)
- && (O2_diff1 >= App.ADTrack.Ain2VPT)
- && (O2_diff2 >= App.ADTrack.Ain2VPT)
- && (O2_diff3 >= App.ADTrack.Ain2VPT)))
+ else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum)
{
- //BDC_DOWN();
- App.DownFlag = true;
- App.StopFlag = false;
- App.UpFlag = false;
+ App.RightRunFalg = true;
+ if(((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))
+ || ((Oru_diff1 >= App.ADTrack.RightUpVPT)
+ && (Oru_diff2 >= App.ADTrack.RightUpVPT)
+ && (Oru_diff3 >= App.ADTrack.RightUpVPT)
+ && (Orl_diff1 <= -App.ADTrack.RightLowVPT)
+ && (Orl_diff2 <= -App.ADTrack.RightLowVPT)
+ && (Orl_diff3 <= -App.ADTrack.RightLowVPT)))
+ {
+ //BDC_UP();
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ }
+ else if(((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))
+ || ((Oru_diff1 <= -App.ADTrack.RightUpVPT)
+ && (Oru_diff2 <= -App.ADTrack.RightUpVPT)
+ && (Oru_diff3 <= -App.ADTrack.RightUpVPT)
+ && (Orl_diff1 >= App.ADTrack.RightLowVPT)
+ && (Orl_diff2 >= App.ADTrack.RightLowVPT)
+ && (Orl_diff3 >= App.ADTrack.RightLowVPT)))
+ {
+ //BDC_DOWN();
+ App.DownFlag = true;
+ App.StopFlag = false;
+ App.UpFlag = false;
+ }
}
}
}
else if(App.DownFlag == true)
{
- if(A1_slope < -App.ADTrack.Slope_VPT
- && A2_slope > App.ADTrack.Slope_VPT)
- {
- //BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.StopCollDelay1mSCnt = 1000;
- }
- else if(O1_diff1 > -(App.ADTrack.Ain1VPT / 2)
- && O2_diff1 < (App.ADTrack.Ain2VPT / 2))
- {
- //BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.StopCollDelay1mSCnt = 1000;
- }
- }
- else if(App.UpFlag == true)
- {
- if(A1_slope > App.ADTrack.Slope_VPT
- && A2_slope < -App.ADTrack.Slope_VPT)
+ if(App.LeftRunFalg == true)
{
+ if(lu_slope < -App.ADTrack.Slope_VPT
+ && ll_slope > App.ADTrack.Slope_VPT)
+ {
//BDC_STOP();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(Olu_diff1 > -(App.ADTrack.LeftUpVPT / 2)
+ && Oll_diff1 < (App.ADTrack.LeftLowVPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
}
- else if(O1_diff1 < (App.ADTrack.Ain1VPT / 2)
- && O2_diff1 > -(App.ADTrack.Ain2VPT / 2))
+ else if(App.RightRunFalg == true)
{
- //BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.StopCollDelay1mSCnt = 1000;
+ if(ru_slope < -App.ADTrack.Slope_VPT
+ && rl_slope > App.ADTrack.Slope_VPT)
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(Oru_diff1 > -(App.ADTrack.RightUpVPT / 2)
+ && Orl_diff1 < (App.ADTrack.RightLowVPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ }
+ }
+ else if(App.UpFlag == true)
+ {
+ if(App.LeftRunFalg == true)
+ {
+ if(lu_slope > App.ADTrack.Slope_VPT
+ && ll_slope < -App.ADTrack.Slope_VPT)
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(Olu_diff1 < (App.ADTrack.LeftUpVPT / 2)
+ && Oll_diff1 > -(App.ADTrack.LeftLowVPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ }
+ else if(App.RightRunFalg == true)
+ {
+ if(ru_slope > App.ADTrack.Slope_VPT
+ && rl_slope < -App.ADTrack.Slope_VPT)
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(Oru_diff1 < (App.ADTrack.RightUpVPT / 2)
+ && Orl_diff1 > -(App.ADTrack.RightLowVPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
}
}
- if (result1_K.peaks_positive
- && result1_K.valleys_negative
- && A1_diff[0] < App.ADTrack.Slope_VPT / 2
- && A1_diff[0] > -App.ADTrack.Slope_VPT / 2
- && A1_diff[1] < App.ADTrack.Slope_VPT / 2
- && A1_diff[1] > -App.ADTrack.Slope_VPT / 2
- && A1_diff[2] < App.ADTrack.Slope_VPT / 2
- && A1_diff[2] > -App.ADTrack.Slope_VPT / 2
- && result2_K.peaks_positive
- && result2_K.valleys_negative
- && A2_diff[0] < App.ADTrack.Slope_VPT / 2
- && A2_diff[0] > -App.ADTrack.Slope_VPT / 2
- && A2_diff[1] < App.ADTrack.Slope_VPT / 2
- && A2_diff[1] > -App.ADTrack.Slope_VPT / 2
- && A2_diff[2] < App.ADTrack.Slope_VPT / 2
- && A2_diff[2] > -App.ADTrack.Slope_VPT / 2)
+ if (lu_K.peaks_positive
+ && lu_K.valleys_negative
+ && lu_diff[0] < App.ADTrack.Slope_VPT / 2
+ && lu_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && lu_diff[1] < App.ADTrack.Slope_VPT / 2
+ && lu_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && lu_diff[2] < App.ADTrack.Slope_VPT / 2
+ && lu_diff[2] > -App.ADTrack.Slope_VPT / 2
+ && ll_K.peaks_positive
+ && ll_K.valleys_negative
+ && ll_diff[0] < App.ADTrack.Slope_VPT / 2
+ && ll_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && ll_diff[1] < App.ADTrack.Slope_VPT / 2
+ && ll_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && ll_diff[2] < App.ADTrack.Slope_VPT / 2
+ && ll_diff[2] > -App.ADTrack.Slope_VPT / 2
+ && ru_K.peaks_positive
+ && ru_K.valleys_negative
+ && ru_diff[0] < App.ADTrack.Slope_VPT / 2
+ && ru_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && ru_diff[1] < App.ADTrack.Slope_VPT / 2
+ && ru_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && ru_diff[2] < App.ADTrack.Slope_VPT / 2
+ && ru_diff[2] > -App.ADTrack.Slope_VPT / 2
+ && rl_K.peaks_positive
+ && rl_K.valleys_negative
+ && rl_diff[0] < App.ADTrack.Slope_VPT / 2
+ && rl_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && rl_diff[1] < App.ADTrack.Slope_VPT / 2
+ && rl_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && rl_diff[2] < App.ADTrack.Slope_VPT / 2
+ && rl_diff[2] > -App.ADTrack.Slope_VPT / 2)
{
if(App.StopFlag == true && App.StopCollDelay1mSCnt <= 0){
- App.ADTrack.Ain1_Org_AdZero = Ain1_ad[0];
- App.ADTrack.Ain2_Org_AdZero = Ain2_ad[0];
+ App.ADTrack.LeftUp_Org_AdZero = lu_ad[0];
+ App.ADTrack.LeftLow_Org_AdZero = ll_ad[0];
+ App.ADTrack.RightUp_Org_AdZero = ru_ad[0];
+ App.ADTrack.RightLow_Org_AdZero = rl_ad[0];
}
else if(App.StopFlag == false)
{
@@ -224,8 +364,10 @@ void SupportControlHandle(int32_t *Ain1_ad, int32_t *Ain2_ad)
{
App.EvenRunning = false;
App.EvenRunDelay1mSCnt = 0;
- App.ADTrack.Ain1_Org_AdZero = Ain1_ad[0];
- App.ADTrack.Ain2_Org_AdZero = Ain2_ad[0];
+ App.ADTrack.LeftUp_Org_AdZero = lu_ad[0];
+ App.ADTrack.LeftLow_Org_AdZero = ll_ad[0];
+ App.ADTrack.RightUp_Org_AdZero = ru_ad[0];
+ App.ADTrack.RightLow_Org_AdZero = rl_ad[0];
}
}
#endif
@@ -250,6 +392,8 @@ static void AppInit(void)
App.Status = APP_STATUS_WAIT;
App.TD1mSDelayCnt = 2000;
App.RStatus = READ_STATUS_START;
+
+ App.WaitFlag = false;
}
static void ReadLoopHandler(void)
{
@@ -337,13 +481,10 @@ static void ReadLoopHandler(void)
if(App.LeftUpCS1237ReadEndFlag == true &&
App.LeftLowCS1237ReadEndFlag == true &&
App.RightUpCS1237ReadEndFlag == true &&
- App.RightLowCS1237ReadEndFlag == true)
+ App.RightLowCS1237ReadEndFlag == true &&
+ App.WaitFlag == true)
{
- App.LeftUpCS1237ReadEndFlag = false;
- App.LeftUpCS1237ReadEndFlag = false;
- App.RightUpCS1237ReadEndFlag = false;
- App.RightLowCS1237ReadEndFlag = false;
- //SupportControlHandle(App.Ain1_TrendArray, App.Ain2_TrendArray);
+ SupportControlHandle(App.LeftUpCS1237_TrendArray, App.LeftLowCS1237_TrendArray, App.RightUpCS1237_TrendArray, App.RightLowCS1237_TrendArray);
}
App.RStatus = READ_STATUS_START;
break;}
@@ -368,6 +509,7 @@ static void AppLoopHandler(void)
case APP_STATUS_WAIT:{
if(App.TD1mSDelayCnt <= 0)
{
+ App.WaitFlag = true;
App.UpFlag = false;
App.DownFlag = false;
App.StopFlag = true;