| | |
| | | checksum = Checksum_u16(&hbsend[2],12); |
| | | memcpy(&hbsend[14],&checksum,2); |
| | | } |
| | | uint16_t vel_factor,pos_factor; |
| | | u16 tyncpoll_time; |
| | | u16 slottime,max_slotpos; |
| | | extern u8 module_power; |
| | | extern u16 total_slotnum; |
| | | void Program_Init(void) |
| | | { float temp; |
| | | u16 temp2; |
| | |
| | | save_com_map_to_flash(); |
| | | #endif |
| | | OUT485_ENABLE; |
| | | g_com_map[VERSION] = 0x010e; |
| | | if(g_com_map[COM_INTERVAL]==0) |
| | | { |
| | | g_com_map[COM_INTERVAL]=100; |
| | | } |
| | | g_com_map[VERSION] = 0x0121; |
| | | dev_id = g_com_map[DEV_ID]; |
| | | slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]/4)+4; |
| | | slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]*SLOT_SCALE)+3; |
| | | max_slotpos=g_com_map[COM_INTERVAL]/slottime; |
| | | tyncpoll_time=(g_com_map[DEV_ID]%max_slotpos)*slottime; |
| | | |
| | | module_power = g_com_map[POWER]; |
| | | total_slotnum = 1000/g_com_map[COM_INTERVAL]; |
| | | vel_factor=g_com_map[FILTER_COEFFICIENT]; |
| | | pos_factor=g_com_map[FILTER_COEFFICIENT]; |
| | | if(module_power>67) |
| | | { |
| | | module_power=67; |
| | | } |
| | | |
| | | if(g_com_map[DEV_ROLE]) |
| | | { |
| | |
| | | { |
| | | UART_PushFrame(hbsend,16); |
| | | } |
| | | uint16_t temp; |
| | | float dw_vbat; |
| | | void StartUpTest(void) |
| | | { |
| | | temp=dwt_readtempvbat(1); |
| | | dw_vbat=(float)((temp&0xff)-173)/173+3.3; |
| | | if(dw_vbat<2.8) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader |
| | | } |
| | | } |
| | | extern u8 g_start_sync_flag,usart_send_flag,anc_report_num; |
| | | u16 heartbeat_timer,poll_timer; |
| | | int16_t sync_timer; |
| | | extern u8 flag_newsecond, tagpos_rec[50], tagpos_send[50],ancidlist_num; |
| | | uint32_t tagpos_binary; |
| | | extern u16 ancidlist_rec[20],ancidlist_send[20]; |
| | | extern u16 target_time; |
| | | void IdleTask(void) |
| | | { |
| | | main_logic(); |
| | | |
| | | UART_CheckReceive(); |
| | | UART_CheckSend(); |
| | | |
| | | if(heartbeat_timer>1000) |
| | | { |
| | | heartbeat_timer=0; |
| | |
| | | } |
| | | if(flag_newsecond) |
| | | { |
| | | uint32_t temp23; |
| | | temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | if(temp23!=0x4A480022) |
| | | { |
| | | temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | if(temp23!=0x4A480022) |
| | | { |
| | | NVIC_SystemReset(); |
| | | } |
| | | } |
| | | flag_newsecond=0; |
| | | tagpos_binary=0; |
| | | memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2); |
| | |
| | | tagpos_rec[i] = 0; |
| | | } |
| | | } |
| | | |
| | | if(target_time>=1000) |
| | | {target_time-=1000;} |
| | | #ifdef USART_INTEGRATE_OUTPUT |
| | | if(g_com_map[DEV_ROLE]==0&&usart_send_flag) |
| | | {u16 checksum; |
| | | usart_send_flag=0; |
| | |
| | | UART_PushFrame(usart_send_anc,6+anc_report_num*6); |
| | | anc_report_num=0; |
| | | } |
| | | #endif |
| | | if(g_com_map[CNT_UPDATE]==1) |
| | | { |
| | | uint32_t result = 0; |
| | |
| | | // Delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader |
| | | } |
| | | if(g_com_map[CNT_REBOOT]==1) |
| | | { |
| | | g_com_map[CNT_REBOOT]=0; |
| | | g_com_map[MAP_SIGN_INDEX]=0; |
| | | save_com_map_to_flash(); |
| | | delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader |
| | | } |
| | | if(g_com_map[CNT_RESTART]==1) |
| | | { |
| | | g_com_map[CNT_RESTART]=0; |
| | | save_com_map_to_flash(); |
| | | delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader |
| | | } |
| | | if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //杞浣嶅洖鍒癰ootloader |
| | | } |
| | | |
| | | } |
| | | int main(void) |
| | | { |
| | | |
| | | Device_Init(); |
| | | //StartUpTest(); |
| | | Program_Init(); |
| | | Dw1000_Init(); |
| | | delay_ms(10); |