| | |
| | | extern uint16_t sync_timer; |
| | | u16 tmp_time; |
| | | extern float dw_vbat; |
| | | extern u16 slottime,max_slotnum,current_slotpos,tyncpoll_time; |
| | | void Tag_App(void)//å鿍¡å¼(TAGæ ç¾) |
| | | { |
| | | uint32_t frame_len; |
| | |
| | | u8 bat_percent; |
| | | //LED0_ON; |
| | | dwt_forcetrxoff(); |
| | | g_Resttimer=0; |
| | | dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); //设置åéåå¼å¯æ¥æ¶ï¼å¹¶è®¾å®å»¶è¿æ¶é´ |
| | | dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); |
| | | tag_succ_times = 0; |
| | |
| | | { |
| | | g_Tagdist[anc_id_recv]= hex_dist2; |
| | | g_flag_Taggetdist[anc_id_recv]=0; |
| | | |
| | | // g_Resttimer=0; |
| | | if(!g_com_map[MODBUS_MODE]) |
| | | { |
| | | hex_dist2 = hex_dist2; |
| | |
| | | // memcpy(&Modbus_HoldReg[anc_id_recv*2],&hex_dist,4); |
| | | /* Poll DW1000 until TX frame sent event set. See NOTE 8 below. */ |
| | | if(result==0) |
| | | {while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//䏿æ¥è¯¢è¯çç¶æç´å°åé宿 |
| | | { |
| | | |
| | | while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//䏿æ¥è¯¢è¯çç¶æç´å°åé宿 |
| | | { }; |
| | | } |
| | | /* Clear TXFRS event. */ |
| | |
| | | // deca_sleep(10); |
| | | } |
| | | // dwt_entersleep(); |
| | | // if(tag_succ_times<g_com_map[MIN_REPORT_ANC_NUM]) |
| | | // { |
| | | // //poll_timer +=time32_incr&0x7+3; |
| | | // } |
| | | if(tag_succ_times<1) |
| | | { |
| | | tyncpoll_time=(current_slotpos--%max_slotnum)*slottime; |
| | | } |
| | | |
| | | /* Execute a delay between ranging exchanges. */ |
| | | |
| | |
| | | #define TDFILTER |
| | | //#define CHECK_UID |
| | | extern uint8_t UID_ERROR; |
| | | extern u16 dist_threshold; |
| | | u8 misdist_num[TAG_NUM_IN_SYS]; |
| | | void Anchor_App(void) |
| | | { |
| | | uint32_t frame_len; |
| | | uint32_t resp_tx_time; |
| | | static u8 misdist_num; |
| | | /* Clear reception timeout to start next ranging process. */ |
| | | dwt_setrxtimeout(0);//è®¾å®æ¥æ¶è¶
æ¶æ¶é´ï¼0使²¡æè¶
æ¶æ¶é´ |
| | | |
| | |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag&&!g_start_sync_flag)//䏿æ¥è¯¢è¯çç¶æç´å°æ¥æ¶æåæè
åºç°é误 |
| | | { |
| | | IdleTask(); |
| | | g_Resttimer=0; |
| | | }; |
| | | |
| | | if (status_reg & SYS_STATUS_RXFCG)//æåæ¥æ¶ |
| | |
| | | /*--------------------------以ä¸ä¸ºéæµè·é»è¾------------------------*/ |
| | | LED0_BLINK; //æ¯æå䏿¬¡é讯åéªç䏿¬¡ |
| | | g_UWB_com_interval = 0; |
| | | |
| | | // g_Resttimer=0; |
| | | hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]*10; |
| | | if(tag_id_recv-TAG_ID_START<=TAG_NUM_IN_SYS) |
| | | { |
| | | if(hex_dist-his_dist[tag_id_recv-TAG_ID_START]<15000||misdist_num>4) |
| | | {int32_t filter_dist; |
| | | misdist_num=0; |
| | | if(abs(hex_dist-his_dist[tag_id_recv-TAG_ID_START])<dist_threshold||misdist_num[tag_id_recv-TAG_ID_START]>4) |
| | | { |
| | | int32_t filter_dist; |
| | | misdist_num[tag_id_recv-TAG_ID_START]=0; |
| | | if(hex_dist<1000000&&hex_dist>-10000) |
| | | { |
| | | #ifdef TDFILTER |
| | |
| | | //dis_after_filter = LP_Frac_Update(p_Dis_Filter, dist_cm); |
| | | } |
| | | |
| | | }else{ |
| | | misdist_num++; |
| | | } |
| | | else{ |
| | | misdist_num[tag_id_recv-TAG_ID_START]++; |
| | | } |
| | | } |
| | | } |