From 451d480321fd775084c0faf5d1877ed83f21d59b Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期三, 22 九月 2021 18:00:33 +0800 Subject: [PATCH] V1.57 --- 源码/核心板/Src/algorithm/TrackingDiff.c | 2 源码/核心板/Src/application/dw_app.h | 2 源码/核心板/Src/main.c | 8 ++-- 源码/核心板/Src/application/beep_logic_app.c | 6 +- 源码/核心板/MDK-ARM/Project.uvoptx | 36 +++++++++++++++++- 源码/核心板/Src/application/dw_app.c | 45 ++++++++++++++-------- 6 files changed, 71 insertions(+), 28 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" index a52c991..861a99b 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" @@ -125,7 +125,7 @@ <SetRegEntry> <Number>0</Number> <Key>DLGUARM</Key> - <Name></Name> + <Name>d</Name> </SetRegEntry> <SetRegEntry> <Number>0</Number> @@ -164,7 +164,7 @@ <Type>0</Type> <LineNumber>60</LineNumber> <EnabledFlag>1</EnabledFlag> - <Address>134261482</Address> + <Address>134261534</Address> <ByteObject>0</ByteObject> <HtxType>0</HtxType> <ManyObjects>0</ManyObjects> @@ -175,6 +175,38 @@ <ExecCommand></ExecCommand> <Expression>\\UWB_Projects\../Src/application/global_param.c\60</Expression> </Bp> + <Bp> + <Number>1</Number> + <Type>0</Type> + <LineNumber>1115</LineNumber> + <EnabledFlag>1</EnabledFlag> + <Address>134242240</Address> + <ByteObject>0</ByteObject> + <HtxType>0</HtxType> + <ManyObjects>0</ManyObjects> + <SizeOfObject>0</SizeOfObject> + <BreakByAccess>0</BreakByAccess> + <BreakIfRCount>1</BreakIfRCount> + <Filename>E:\GIT\UWB_SmallModule\濠ф劗鐖淺Src\application\dw_app.c</Filename> + <ExecCommand></ExecCommand> + <Expression>\\UWB_Projects\../Src/application/dw_app.c\1115</Expression> + </Bp> + <Bp> + <Number>2</Number> + <Type>0</Type> + <LineNumber>1120</LineNumber> + <EnabledFlag>1</EnabledFlag> + <Address>0</Address> + <ByteObject>0</ByteObject> + <HtxType>0</HtxType> + <ManyObjects>0</ManyObjects> + <SizeOfObject>0</SizeOfObject> + <BreakByAccess>0</BreakByAccess> + <BreakIfRCount>0</BreakIfRCount> + <Filename>..\Src\application\dw_app.c</Filename> + <ExecCommand></ExecCommand> + <Expression></Expression> + </Bp> </Breakpoint> <WatchWindow1> <Ww> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/TrackingDiff.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/TrackingDiff.c" index 17f2a5f..480be79 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/TrackingDiff.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/algorithm/TrackingDiff.c" @@ -33,7 +33,7 @@ void NewTrackingDiffUpdate(u8 channel, float target) { float error; - if(g_Tagdist[channel]==0xffff) + if(g_Tagdist[channel]==0x1ffff) { pos_predict[channel]=target; } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" index 171a26c..89a10f2 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" @@ -13,7 +13,7 @@ #define ONTIME3 5 // 500ms #define OFFTIME3 5 // 500ms -uint16_t min_dist1,min_dist2; +int32_t min_dist1,min_dist2; extern u16 JDQ_time; void Relay1Task(u16 min_dist) { @@ -141,8 +141,8 @@ if(beep_judge_cnt++ >= 100) { beep_judge_cnt = 0; - min_dist1=0xffff; - min_dist2=0xffff; + min_dist1=0x1ffff; + min_dist2=0x1ffff; for(i = 0; i < 255;i++) { if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) 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 9412bb3..7c3db08 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" @@ -48,7 +48,7 @@ uint32_t g_UWB_com_interval = 0; float dis_after_filter; //当前距离值 LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 -uint16_t g_Tagdist[TAG_NUM_IN_SYS]; +int32_t g_Tagdist[TAG_NUM_IN_SYS]; uint8_t g_flag_Taggetdist[256]; static uint64_t get_tx_timestamp_u64(void) @@ -110,12 +110,12 @@ g_flag_Taggetdist[i]++; if(g_flag_Taggetdist[i]>=2) { - g_Tagdist[i]=0xffff; + g_Tagdist[i]=0x1ffff; } } } } -extern u16 g_commap_antdelay; +extern int16_t g_commap_antdelay; void Dw1000_Init(void) { /* Reset and initialise DW1000. @@ -132,7 +132,7 @@ /* Apply default antenna delay value. See NOTE 1 below. */ dwt_setrxantennadelay(RX_ANT_DLY); //设置接收天线延迟 - dwt_settxantennadelay(g_commap_antdelay); //设置发射天线延迟 + dwt_settxantennadelay(0); //设置发射天线延迟 /* Set expected response's delay and timeout. See NOTE 4 and 5 below. * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */ @@ -347,15 +347,17 @@ memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2); for(i=0;i<nearbase_num;i++) { memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX+nearbase_num*2+i*2],&nearbase_distlist[i],2);} - + + memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX+nearbase_num*4],&g_commap_antdelay,2); + for(i=0;i<MAX_NEARBASE_NUM;i++) { nearbase_distlist[i]=0x1ffff; } tx_nearpoll_msg[MESSAGE_TYPE_IDX] = NEAR_POLL; memcpy(&tx_nearpoll_msg[ANCHOR_ID_IDX],&mainbase_id,2); - dwt_writetxdata(13+4*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(13+4*nearbase_num, 0);//设置超宽带发送数据长度 + dwt_writetxdata(15+4*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(15+4*nearbase_num, 0);//设置超宽带发送数据长度 dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置 flag_finalsend=0; @@ -462,7 +464,7 @@ dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000 dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度 memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4); - if(temp_dist!=0x1ffff) + if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1) { g_Resttimer=0; IWDG_Feed(); @@ -514,7 +516,7 @@ LED0_BLINK; // memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4); // tagslotpos=GetRandomSlotPos(rec_tagpos_binary); - if(temp_dist!=0x1ffff) + if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1) { #ifdef USART_SINGLE_OUTPUT usart_send[2] = 1;//正常模式 @@ -764,6 +766,7 @@ uint32_t frame_len; uint32_t resp_tx_time; uint8_t rec_nearbase_num,anc_report_num; +int16_t rec_antdelay; void Anchor_RecPoll(void) { tmp_time=TIM3->CNT; @@ -787,6 +790,8 @@ battary = rx_buffer[BATTARY_IDX]; button = rx_buffer[BUTTON_IDX]; + + frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; if(result==0) { @@ -841,7 +846,7 @@ extern u16 dist_threshold; u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,getrange_success=0; int32_t filter_dist,filter_speed; -u8 newmeasure; +u8 newmeasure,recpoll_len; u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase 1 first near_base { u8 motorstate; @@ -943,16 +948,15 @@ LED0_BLINK; //每成功一次通讯则闪烁一次 dis_after_filter=dist_cm; hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10; - for(si=0;si<10;si++) - { - if(smallcar_idlist[si]==tag_id_recv) + + if(recpoll_len==rec_nearbase_num*4+15) { - hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10-(int16_t)g_com_map[NOMOVESLEEP_TIME]*10; + hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10-rec_antdelay*10; } - } + g_flag_Taggetdist[taglist_pos]=0; - if(hex_dist>-1000&&hex_dist<2000000) + if(hex_dist>-100000&&hex_dist<2000000) { if(abs(hex_dist-his_dist[taglist_pos])<dist_threshold||misdist_num[taglist_pos]>3) { @@ -970,7 +974,12 @@ misdist_num[taglist_pos]=0; tagdist_list[taglist_pos] = filter_dist; his_dist[taglist_pos]=hex_dist; - g_Tagdist[taglist_pos]=hex_dist/10; + if(hex_dist>0) + { + g_Tagdist[taglist_pos]=hex_dist/10; + }else{ + g_Tagdist[taglist_pos]= 1; + } #ifdef USART_SINGLE_OUTPUT usart_send[2] = 1;//正常模式 usart_send[3] = 17;//数据段长度 @@ -1031,6 +1040,7 @@ dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位 frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 + recpoll_len = frame_len; dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 @@ -1092,6 +1102,7 @@ memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); memcpy(&rec_ancidlist,&rx_buffer[NEARBASEID_INDEX],2*rec_nearbase_num); memcpy(&rec_ancdistlist,&rx_buffer[NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num); + memcpy(&rec_antdelay,&rx_buffer[NEARBASEID_INDEX+nearbase_num*4],2); #ifdef USART_ALL_OUTPUT usart_send[2] = 0x0c;//正常模式 usart_send[3] = 8+rec_nearbase_num*4;//数据段长度 diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" index 26826fa..70ce920 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" @@ -134,7 +134,7 @@ void Tag_App(void); void Anchor_App(void); void tag_sleep_configuraion(void); -extern uint16_t g_Tagdist[TAG_NUM_IN_SYS]; +extern int32_t g_Tagdist[TAG_NUM_IN_SYS]; extern uint8_t g_flag_Taggetdist[256]; extern void TagDistClear(void); void Dw1000_App_Init(void); diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" index 803e9d4..0883c2c 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" @@ -100,7 +100,7 @@ {dist_threshold = 15000;} } u16 JDQ_time; -u16 g_commap_antdelay; +int16_t g_commap_antdelay; void Program_Init(void) { float temp; u16 temp2; @@ -145,10 +145,10 @@ OUT485_ENABLE; ComMapCheck(); - g_com_map[VERSION] = 0x0138; + g_com_map[VERSION] = 0x0139; FLASH_Read(FLASH_HARDWARE_FLAG, (uint8_t*)&g_com_map[HARDWAREFLAG_INDEX], 16); dist_threshold = (g_com_map[SPEEDFILTER_THRES]*10)/(1000/g_com_map[COM_INTERVAL]); - g_commap_antdelay = (float)g_com_map[ANT_LENGTH]*5.8; + g_commap_antdelay = g_com_map[ANT_LENGTH]; JDQ_time = g_com_map[WAR_JDQ_TIME]*10; g_com_map[SW_TYPE] = SW_FANGZHUANG; dev_id = g_com_map[DEV_ID]; @@ -185,7 +185,7 @@ for(i=0;i<255;i++) { - g_Tagdist[i]=0xffff; + g_Tagdist[i]=0x1ffff; } } -- Gitblit v1.9.3