| | |
| | | |
| | | extern uint8_t g_start_send_flag; |
| | | u8 g_start_sync_flag; |
| | | void SyncPoll(u8 sync_seq,uint32_t sync_baseid) |
| | | void SyncPoll(u8 sync_seq) |
| | | {u8 result; |
| | | g_start_sync_flag=1; //ä¸ææ¨¡å¼ï¼éåºç»ç«¯åï¼éè¦éæ°æ¥è¿ |
| | | dwt_forcetrxoff(); //å
³éæ¥æ¶ï¼ä»¥é²å¨RX ON ç¶æ |
| | | |
| | | |
| | | tx_sync_msg[SYNC_SEQ_IDX]=sync_seq; |
| | | memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&sync_baseid,4); |
| | | memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&dev_id,4); |
| | | dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//å°Pollå
æ°æ®ä¼ ç»DW1000ï¼å°å¨å¼å¯åéæ¶ä¼ åºå» |
| | | dwt_writetxfctrl(sizeof(tx_sync_msg), 0);//设置è¶
宽带åéæ°æ®é¿åº¦ |
| | | dwt_starttx(DWT_START_TX_IMMEDIATE); |
| | |
| | | u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase 1 first near_base |
| | | { |
| | | u8 motorstate; |
| | | time_monitor[0] = sync_timer*1000+TIM3->CNT; |
| | | tmp_time=TIM3->CNT; |
| | | memcpy(&tx_nearresp_msg[ANCTIMEMS],&sync_timer,2); |
| | | memcpy(&tx_nearresp_msg[ANCTIMEUS],&tmp_time,2); |
| | |
| | | resp_tx_ts = get_tx_timestamp_u64();//è·å¾responseåéæ¶é´T3 |
| | | final_rx_ts = get_rx_timestamp_u64();//è·å¾finalæ¥æ¶æ¶é´T6 |
| | | |
| | | dwt_setrxtimeout(0);//è®¾å®æ¥æ¶è¶
æ¶æ¶é´ï¼0使²¡æè¶
æ¶æ¶é´ |
| | | dwt_rxenable(0);//æå¼æ¥æ¶ |
| | | // dwt_setrxtimeout(0);//è®¾å®æ¥æ¶è¶
æ¶æ¶é´ï¼0使²¡æè¶
æ¶æ¶é´ |
| | | // dwt_rxenable(0);//æå¼æ¥æ¶ |
| | | |
| | | final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//仿¥æ¶æ°æ®ä¸è¯»åT1ï¼T4ï¼T5 |
| | | final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_NEARBASE_IDX+ancrec_nearbasepos*4], &resp_rx_ts); |
| | |
| | | distance = tof * SPEED_OF_LIGHT;//è·ç¦»=å
é*é£è¡æ¶é´ |
| | | dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //è·ç¦»åå»ç«æ£ç³»æ° |
| | | dist_cm = dist_no_bias * 100; //dis 为åä½ä¸ºcmçè·ç¦» |
| | | // dwt_readdiagnostics(&d1); |
| | | dwt_readdiagnostics(&d1); |
| | | // time_monitor[2] = sync_timer*1000+TIM3->CNT; |
| | | // LOS(&d1); |
| | | // time_monitor[3] = sync_timer*1000+TIM3->CNT; |
| | | LOS(&d1); |
| | | time_monitor[3] = sync_timer*1000+TIM3->CNT; |
| | | /*--------------------------以ä¸ä¸ºéæµè·é»è¾------------------------*/ |
| | | //dist_cm=33000; |
| | | |
| | | GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_RESET); |
| | | LED0_BLINK; //æ¯æå䏿¬¡é讯åéªç䏿¬¡ |
| | | dis_after_filter=dist_cm; |
| | | hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]; |
| | |
| | | memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); |
| | | usart_send[13] = battary; |
| | | usart_send[14] = button; |
| | | usart_send[15] = firstpath_power; |
| | | usart_send[16] = (rx_power-firstpath_power)*10; |
| | | checksum = Checksum_u16(&usart_send[2],17); |
| | | memcpy(&usart_send[19],&checksum,2); |
| | | UART_PushFrame(usart_send,21); |
| | |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); |
| | | } |
| | | } |
| | | extern u16 synclost_count; |
| | | uint32_t current_syncid=0xffffffff,synclost_timer; |
| | | extern u8 flag_syncbase; |
| | | extern u8 flag_syncbase,waitsync_flag; |
| | | u8 tagpos_rec[50],tagpos_send[50],ancidlist_num; |
| | | u16 ancidlist_rec[20],ancidlist_send[20]; |
| | | void Anchor_App(void) |
| | |
| | | if (status_reg & SYS_STATUS_RXFCG)//æåæ¥æ¶ |
| | | { u16 tag_recv_interval; |
| | | float temp_tagpos; |
| | | |
| | | time_monitor[0] = sync_timer*1000+TIM3->CNT; |
| | | g_Resttimer=0; |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//æ¸
餿 å¿ä½ |
| | | frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//è·å¾æ¥æ¶æ°æ®é¿åº¦ |
| | |
| | | break; |
| | | case SYNC: |
| | | memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4); |
| | | if(rec_syncid<current_syncid) |
| | | { |
| | | current_syncid=rec_syncid; |
| | | if(anc_id_recv==g_com_map[SYNCBASEID]) |
| | | { |
| | | synclost_count = 0; |
| | | flag_syncbase=0; |
| | | sync_seq=rx_buffer[SYNC_SEQ_IDX]+1; |
| | | TIM3->CNT = sync_seq*325%1000+15; |
| | | sync_timer = sync_seq*325/1000; |
| | | TIM3->CNT = (sync_seq*325%1000)-80; |
| | | sync_timer = (sync_seq*325/1000); |
| | | synclost_timer=0; |
| | | //SyncPoll(sync_seq,rec_syncid); |
| | | }else if(rec_syncid==current_syncid) |
| | | { |
| | | if(rx_buffer[SYNC_SEQ_IDX]<sync_seq) |
| | | { |
| | | flag_syncbase=0; |
| | | sync_seq=rx_buffer[SYNC_SEQ_IDX]+1; |
| | | TIM3->CNT = sync_seq*325%1000+5; |
| | | sync_timer = sync_seq*325/1000+995; |
| | | synclost_timer=0; |
| | | //SyncPoll(sync_seq,rec_syncid); |
| | | } |
| | | |
| | | } |
| | | if(g_com_map[BASESYNCSEQ]==2) |
| | | SyncPoll(sync_seq); |
| | | } |
| | | break; |
| | | case NEAR_MSG: |
| | | if(anc_id_recv==dev_id) |
| | |
| | | } |
| | | break; |
| | | |
| | | case NEAR_POLL: |
| | | case NEAR_POLL: |
| | | // GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); |
| | | memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); |
| | | taglist_pos=CmpTagInList(tag_id_recv); |
| | | if(taglist_pos==taglist_num) |
| | |
| | | |
| | | if(anc_id_recv==dev_id) |
| | | { |
| | | GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); |
| | | Anchor_RecNearPoll(0); |
| | | }else{ |
| | | |
| | |
| | | memcpy(&tempid,&rx_buffer[NEARBASEID_INDEX+i*2],2); |
| | | if(tempid==dev_id) |
| | | { |
| | | |
| | | seize_anchor=0; //鿢å ãå·²åå¨åè¡¨ä¸ |
| | | Anchor_RecNearPoll(i+1); |
| | | break; |
| | |
| | | // } |
| | | |
| | | |
| | | break; |
| | | break; |
| | | default: |
| | | |
| | | break; |
| | | } |
| | | }else{ |
| | | #ifdef DEBUG_INF |