From 4a13529748c983ff0d5627a28365ad7737141016 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期五, 18 二月 2022 09:31:49 +0800
Subject: [PATCH] V1.62

---
 源码/核心板/Src/application/dw_app.c |   68 +++++++++++-----------------------
 1 files changed, 22 insertions(+), 46 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
index 8a69306..741a0fe 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c"
@@ -9,7 +9,7 @@
 	NEARPOLL,
 }tag_state=NEARPOLL;
 static dwt_config_t config = {
-	5,               /* Channel number. */
+	2,               /* Channel number. */
 	DWT_PRF_64M,     /* Pulse repetition frequency. */
 	DWT_PLEN_128,    /* Preamble length. */
 	DWT_PAC8,        /* Preamble acquisition chunk size. Used in RX only. */
@@ -128,8 +128,9 @@
 
     /* Configure DW1000. See NOTE 6 below. */
     dwt_configure(&config);//配置DW1000
-	 //dwt_setinterrupt(DWT_INT_TFRS | DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
- 
+	
+
+	
     /* Apply default antenna delay value. See NOTE 1 below. */
     dwt_setrxantennadelay(RX_ANT_DLY);		//设置接收天线延迟
     dwt_settxantennadelay(0);		//设置发射天线延迟
@@ -186,7 +187,6 @@
 	dwt_forcetrxoff();   	//关闭接收,以防在RX ON 状态
 	
 	
-	tx_sync_msg[GROUP_ID_IDX] = group_id;
 	tx_sync_msg[SYNC_SEQ_IDX]=sync_seq;
 	memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&sync_baseid,4);
 	dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
@@ -216,13 +216,13 @@
 u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
 int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM],true_exsistbase_list[MAX_NEARBASE_NUM];
 uint8_t trygetnearmsg_times;
-u16 current_slotnum,total_slotnum,target_time,last_time,record_time[10],record_i;
+u16 current_slotnum,total_slotnum,target_time,last_time;
 u32 rec_tagpos_binary;
 extern uint32_t tagpos_binary;
 void SetNextPollTime(u16 time)
 {
 	current_slotnum++;
-	if(current_slotnum>=total_slotnum)
+	if(current_slotnum==total_slotnum)
 		current_slotnum-=total_slotnum;
 	//time=5;
 	target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time);
@@ -239,11 +239,7 @@
 	{target_time-=1000;}
 	if(target_time<0)
 	{target_time+=1000;}
-record_time[record_i++]=target_time;
-	if(record_i>=10)
-	{
-		record_i=0;
-	}
+
 }
 u8 FindNearBasePos(u16 baseid)
 {
@@ -426,7 +422,7 @@
 									memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2);
 									
 									
-									//if(g_com_map[DEV_ROLE]!=0)
+									if(g_com_map[DEV_ROLE]!=0)
 									{
 									sync_timer=temp_sync_timer1;
 ////									memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2);		
@@ -469,10 +465,10 @@
 									dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000
 									dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度
 									memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
-								if(temp_dist!=0x1ffff)
+								if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1)
 									{
 										g_Resttimer=0;
-                    IWDG_Feed();
+                                        IWDG_Feed();
 										#ifdef USART_SINGLE_OUTPUT
 										usart_send[2] = 1;//正常模式
 										usart_send[3] = 17;//数据段长度
@@ -490,7 +486,6 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										if(g_com_map[MODBUS_MODE]!=1)
 										UART_PushFrame(usart_send,21);
 										#endif
 
@@ -522,7 +517,7 @@
 									LED0_BLINK;
 //									memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
 //									tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
-									if(temp_dist!=0x1ffff)
+									if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1)
 									{
 										#ifdef USART_SINGLE_OUTPUT
 										usart_send[2] = 1;//正常模式
@@ -541,7 +536,6 @@
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
-										if(g_com_map[MODBUS_MODE]!=1)
 										UART_PushFrame(usart_send,21);
 										#endif
 
@@ -723,7 +717,6 @@
 {
 	//LED0_ON;
 	dwt_forcetrxoff();
-	 dwt_setinterrupt(DWT_INT_TFRS | DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
 		GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);	
 	switch(tag_state)
 	{
@@ -746,7 +739,7 @@
 int8_t correction_time,new_tagid=0;
 extern uint8_t sync_seq;
 u16 taglist_num=0,taglist_pos;
-u16 tagid_list[TAG_NUM_IN_SYS],tagstate_list[TAG_NUM_IN_SYS];
+u16 tagid_list[TAG_NUM_IN_SYS],tagstate_list[TAG_NUM_IN_SYS];;
 u8 tagofflinetime[TAG_NUM_IN_SYS];
 int32_t tagdist_list[TAG_NUM_IN_SYS];
 void TagListUpdate(void)
@@ -1027,7 +1020,6 @@
 					memcpy(&usart_send[19],&checksum,2);
 					if(g_com_map[MODBUS_MODE]!=1)
 					UART_PushFrame(usart_send,21);
-					tagstate_list[taglist_pos] = button<<8|battary;
 				#else		
 					memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2);
 					memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4);
@@ -1058,7 +1050,6 @@
 						Modbus_HoldReg[i*4+1] = tagstate_list[i];
 						memcpy(&Modbus_HoldReg[i*4+2],&tagdist_list[i],4);
 					}
-					
 					}else{
 					//	printf("%d",hex_dist);
 						misdist_num[taglist_pos]++;
@@ -1074,19 +1065,6 @@
 extern u8 flag_syncbase;
 u8 tagpos_rec[50],tagpos_send[50],ancidlist_num;
 u16 ancidlist_rec[20],ancidlist_send[20],rec_ancidlist[20],rec_ancdistlist[20];
-void Anchor_Start(void)
-{
-	
-dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
-	g_start_sync_flag=0;
-dwt_setinterrupt(DWT_INT_TFRS | DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1);
-	dwt_setrxtimeout(1000);//设定接收超时时间,0位没有超时时间
-	dwt_rxenable(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();
-//	};
-}
 void Anchor_App(void)
 {
 	
@@ -1094,19 +1072,17 @@
 	u16 tempid;
 	uint32_t rec_syncid;
 	
-//	dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
-//	g_start_sync_flag=0;
+	dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
+	g_start_sync_flag=0;
 
-//	dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
-//	dwt_rxenable(0);//打开接收
-////	GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);	
-//	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();
-//	};
-	dwt_setinterrupt(DWT_INT_TFRS | DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0);
-	status_reg = dwt_read32bitreg(SYS_STATUS_ID);
+	dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
+	dwt_rxenable(0);//打开接收
+//	GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);	
+	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();
+	};
 //GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);	
 	if (status_reg & SYS_STATUS_RXFCG)//成功接收
 	{ u16 tag_recv_interval;

--
Gitblit v1.9.3