| | |
| | | DISCPOLL, |
| | | GETNEARMSG, |
| | | NEARPOLL, |
| | | SINGLEPOLL, |
| | | SINGLEPOLL, |
| | | }tag_state=STARTPOLL; |
| | | static dwt_config_t config = { |
| | | 2, /* Channel number. */ |
| | |
| | | 9, /* RX preamble code. Used in RX only. */ |
| | | 1, /* Use non-standard SFD (Boolean) */ |
| | | DWT_BR_6M8, /* Data rate. */ |
| | | DWT_PHRMODE_STD, /* PHY header mode. */ |
| | | DWT_PHRMODE_EXT, /* PHY header mode. */ |
| | | (129 + 8 - 8) /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */ |
| | | }; |
| | | static uint8_t tx_poll_msg[20] = {0}; |
| | |
| | | |
| | | } |
| | | } |
| | | u32 last_mindist_slavebaseid; |
| | | void NearPoll(void) |
| | | { |
| | | |
| | |
| | | if (status_reg & SYS_STATUS_RXFCG)//如果成功接收 |
| | | { |
| | | dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位 |
| | | frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK; //获得接收到的数据长度 |
| | | frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023; //获得接收到的数据长度 |
| | | dwt_readrxdata(rx_buffer, frame_len, 0); //读取接收数据 |
| | | test2 = dwt_readcarrierintegrator(); |
| | | dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 |
| | |
| | | mainbase_dist=temp_dist; |
| | | nearbase_distlist[0] = temp_dist; |
| | | base_mindist = temp_dist; |
| | | if((rx_buffer[MOTORSTATE_INDEX]&0xf)!=3) |
| | | motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf; |
| | | // if((rx_buffer[MOTORSTATE_INDEX]&0xf)!=3) |
| | | // motor_state=rx_buffer[MOTORSTATE_INDEX]&0xf; |
| | | if(frame_len==38) |
| | | { |
| | | memcpy(&rec_maxrangelen,&rx_buffer[MAXRANGE_DISTANCE],2); |
| | |
| | | #ifdef SWITCHBASE_DIST |
| | | if(salvebase_mindist<mainbase_dist- THRESHOLD_CHANGE_MAINBASE_DIST ) |
| | | { |
| | | changemainbase_count++; |
| | | if(mindist_slavebaseid==last_mindist_slavebaseid) |
| | | { |
| | | changemainbase_count++; |
| | | if(changemainbase_count>2) |
| | | { |
| | | changemainbase_count = 0; |
| | |
| | | tag_state = GETNEARMSG; |
| | | trygetnearmsg_times = 0; |
| | | GetNearMsg(); |
| | | }} |
| | | else{ |
| | | changemainbase_count = 1; |
| | | last_mindist_slavebaseid = mindist_slavebaseid; |
| | | } |
| | | }else{ |
| | | changemainbase_count = 0; |
| | |
| | | // Poll(); |
| | | break; |
| | | } |
| | | delay_ms(100); |
| | | // dwt_forcetrxoff(); |
| | | FZNearPoll(); |
| | | dwt_forcetrxoff(); |
| | | userkey_state = !GET_USERKEY; |