From 815ea18d897111c4bf70861277acf94201ccf60a Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期五, 14 十月 2022 16:25:59 +0800
Subject: [PATCH] V1.72 增加滤波器 增加频率可调

---
 源码/核心板/Src/application/dw_app.c |   28 +++++++++++++++++++++-------
 1 files changed, 21 insertions(+), 7 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
index 61a2ad7..72fcfc2 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
@@ -1,6 +1,6 @@
 #include "dw_app.h"
 #include "ADC.h"
-#define TDFILTER
+//#define TDFILTER
 enum enumtagstate
 {
 	DISCPOLL,
@@ -319,6 +319,7 @@
 u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0,rec_extratag_battary;
 u16 temp_sync_timer1,temp_sync_timer2,rec_extratag_id,success_ancid;
 int32_t rec_extratag_dist;
+uint8_t usart_send_array[5][21],usart_array_num;
  void NearPoll(void)
 {
 	static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
@@ -494,7 +495,8 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										UART_PushFrame(usart_send,21);
+										//UART_PushFrame(usart_send,21);
+                                        memcpy(&usart_send_array[usart_array_num++],usart_send,21);
                                         usartoutput_count++;
 										#endif
 									
@@ -511,7 +513,8 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										UART_PushFrame(usart_send,21);
+                                         memcpy(&usart_send_array[usart_array_num++],usart_send,21);
+										//UART_PushFrame(usart_send,21);
 										#endif
 									}
                                 }
@@ -566,7 +569,8 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										UART_PushFrame(usart_send,21);
+										//UART_PushFrame(usart_send,21);
+                                         memcpy(&usart_send_array[usart_array_num++],usart_send,21);
                                         usartoutput_count++;
 										#endif
                                     
@@ -593,7 +597,8 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										UART_PushFrame(usart_send,21);
+                                        memcpy(&usart_send_array[usart_array_num++],usart_send,21);
+										//UART_PushFrame(usart_send,21);
 										#endif
 									}
                                 }
@@ -934,6 +939,7 @@
 u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,getrange_success=0;
 int32_t filter_dist,filter_speed;
 u8 newmeasure,recpoll_len;
+float fiter_p;
 u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
 {
 	u8 motorstate;
@@ -969,7 +975,10 @@
                 if(tagnewdist_list[taglist_pos])
                 {
                     tagnewdist_list[taglist_pos] = 0;
-				memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
+                    memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
+                }else{
+                     int32_t nodistvalue = 0x1ffff;
+                     memcpy(&tx_nearresp_msg[DIST_IDX], &nodistvalue, 4);
                 }
 			}
             tx_nearresp_msg[GROUP_ID_IDX] = group_id;
@@ -1071,7 +1080,12 @@
                         //filter_speed = vel_predict[taglist_pos];
                         newmeasure = 1;
 						#else
-						filter_dist=hex_dist/10;
+                        if(tagdist_list[taglist_pos]>0&&tagdist_list[taglist_pos]<50000)
+						{
+                            filter_dist=(hex_dist/10)*fiter_p+(1-fiter_p)*tagdist_list[taglist_pos];
+                        }else{
+                            filter_dist = hex_dist/10;
+                        }
 						#endif
 						misdist_num[taglist_pos]=0;
 					tagdist_list[taglist_pos] = filter_dist;

--
Gitblit v1.9.3