| | |
| | | #include <stdio.h> |
| | | #include "beep.h" |
| | | #include "modbus.h" |
| | | |
| | | //#define DEBUG_OUTPUT |
| | | /*------------------------------------ Marcos ------------------------------------------*/ |
| | | /* Inter-ranging delay period, in milliseconds. */ |
| | | #define RNG_DELAY_MS 100 |
| | |
| | | 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; |
| | |
| | | * set by dwt_setrxaftertxdelay() has elapsed. */ |
| | | dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//å¼å¯åéï¼åé宿åçå¾
䏿®µæ¶é´å¼å¯æ¥æ¶ï¼çå¾
æ¶é´å¨dwt_setrxaftertxdelayä¸è®¾ç½® |
| | | start_poll = time32_incr; |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("På
åé,åºç«ID: %d .\r\n",i); |
| | | #endif |
| | | /* We assume that the transmission is achieved correctly, poll for reception of a frame or error/timeout. See NOTE 8 below. */ |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//䏿æ¥è¯¢è¯çç¶æç´å°æåæ¥æ¶æè
åçé误 |
| | | { if(time32_incr - start_poll>20) |
| | |
| | | dwt_writetxfctrl(sizeof(tx_final_msg), 0);//设å®åéæ°æ®é¿åº¦ |
| | | result=dwt_starttx(DWT_START_TX_DELAYED);//设å®ä¸ºå»¶è¿åé |
| | | |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("Få
åé,åºç«ID: %d .\r\n",i); |
| | | #endif |
| | | |
| | | tag_succ_times++; |
| | | |
| | | LED0_BLINK; |
| | | |
| | | g_Resttimer=0; |
| | | memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); |
| | | if(hex_dist2!=0xffff) |
| | | { |
| | | g_Tagdist[anc_id_recv]= hex_dist2; |
| | | g_flag_Taggetdist[anc_id_recv]=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. */ |
| | |
| | | } |
| | | else |
| | | { |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("Rå
失败é误信æ¯: %x .\r\n",status_reg); |
| | | #endif |
| | | /* Clear RX error events in the DW1000 status register. */ |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); |
| | | random_delay_tim = DFT_RAND_DLY_TIM_MS; |
| | |
| | | #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) |
| | | { |
| | |
| | | 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)//æåæ¥æ¶ |
| | |
| | | frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; |
| | | /* We assume that the transmission is achieved correctly, now poll for reception of expected "final" frame or error/timeout. |
| | | * See NOTE 7 below. */ |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("æ¶å°POLLå
ï¼æ ç¾ID: %d .\r\n",tag_id_recv); |
| | | #endif |
| | | if(result==0) |
| | | { |
| | | while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///䏿æ¥è¯¢è¯çç¶æç´å°æ¥æ¶æåæè
åºç°é误 |
| | |
| | | // dist[TAG_ID] = LP(dis, TAG_ID); //LP 为ä½é滤波å¨ï¼è®©æ°æ®æ´ç¨³å® |
| | | |
| | | /*--------------------------以ä¸ä¸ºéæµè·é»è¾------------------------*/ |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("æ¶å°FINALå
ï¼æ ç¾ID: %d .\r\n",tag_id_recv); |
| | | #endif |
| | | 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(abs(hex_dist-his_dist[tag_id_recv-TAG_ID_START])<15000||misdist_num[tag_id_recv-TAG_ID_START]>4) |
| | | 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; |
| | |
| | | } |
| | | }else{ |
| | | /* Clear RX error events in the DW1000 status register. */ |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("Få
失败é误信æ¯: %x .\r\n",status_reg); |
| | | #endif |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); |
| | | } |
| | | }else if(rx_buffer[MESSAGE_TYPE_IDX] == SYNC) |
| | |
| | | } |
| | | else |
| | | { |
| | | #ifdef DEBUG_OUTPUT |
| | | printf("På
失败é误信æ¯: %x .\r\n",status_reg); |
| | | #endif |
| | | /* Clear RX error events in the DW1000 status register. */ |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); |
| | | } |