From dbe67cd6a483817bfc234718c301ff419de6b4e7 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期日, 21 六月 2020 23:38:53 +0800
Subject: [PATCH] 测试完成,重改定时机制

---
 源码/核心板/Src/application/dw_app.c |   37 ++++++++++++++++++++++++++++++-------
 1 files changed, 30 insertions(+), 7 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 ac79717..acdbb09 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"
@@ -208,7 +208,24 @@
 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;
+void SetNextPollTime(u16 time)
+{
+	if(current_slotnum>=total_slotnum)
+		current_slotnum-=total_slotnum;
+	//time=5;
+	target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time);
+	if(target_time>=990&&target_time<1000)
+	{
+		current_slotnum++;
+	target_time+=g_com_map[COM_INTERVAL];
+	}	
+	if(target_time>=1000)
+	{target_time-=1000;}
+	if(target_time<0)
+	{target_time+=1000;}
 
+}
 u8 FindNearBasePos(u16 baseid)
 {
 	u8 i;
@@ -265,7 +282,7 @@
 {
 	u8 i,temp_value;
 	temp_value = GetRandomValue();
-	for(i=temp_value%32;i<max_slotpos;i++)
+	for(i=temp_value%max_slotpos;i<max_slotpos;i++)
 	{
 		if(((emptyslot>>i)&0x1)==0)
 		{
@@ -287,6 +304,7 @@
 u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0;
 u16 temp_sync_timer1,temp_sync_timer2;
 u32 rec_tagpos_binary;
+extern uint32_t tagpos_binary;
  void NearPoll(void)
 {
 	static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
@@ -491,7 +509,7 @@
 //					temp_adc=Get_ADC_Value();
 //					random_value=random_value|((temp_adc&0x01)<<i);
 //				}
-				tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
+				tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary);
 				tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;	
 			}
 		//	tyncpoll_time=0;
@@ -572,7 +590,7 @@
 //			}else{
 //				anclost_times=0;
 //			}
-
+dwt_forcetrxoff();
 	dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
 }
 u8 nearmsg_mainbase=0,rec_tagpos_emptylist[32];
@@ -622,6 +640,7 @@
 	}else{
 			tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
 	}
+	
 }
 
 void Tag_App(void)//发送模式(TAG标签)
@@ -629,6 +648,7 @@
 	//LED0_ON;
 	dwt_forcetrxoff();
 	g_Resttimer=0;
+		GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);	
 	switch(tag_state)
 	{
 		case DISCPOLL:
@@ -641,7 +661,9 @@
 				NearPoll();
 			break;
 	}
-
+	current_slotnum++;
+	SetNextPollTime(tyncpoll_time);
+	GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);	
 }
 
 int8_t correction_time,new_tagid=0;
@@ -867,7 +889,6 @@
 }
 uint32_t current_syncid=0xffffffff,synclost_timer;
 extern u8 flag_syncbase;
-extern uint32_t tagpos_binary;
 u8 tagpos_rec[50],tagpos_send[50],ancidlist_num;
 u16 ancidlist_rec[20],ancidlist_send[20];
 void Anchor_App(void)
@@ -877,15 +898,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_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;
 		float temp_tagpos;

--
Gitblit v1.9.3