From 7d13fbde75b58ff4c9deaef95ca0c03a1083f8e8 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 29 八月 2025 10:26:55 +0800
Subject: [PATCH] 1.9,加入电量新计算方法 测试电池能干多久问题   目前1s检测一下adc

---
 keil/uwb_tag.c |   64 ++++++++++++++++++++++++--------
 1 files changed, 48 insertions(+), 16 deletions(-)

diff --git a/keil/uwb_tag.c b/keil/uwb_tag.c
index b692897..42dc9ad 100644
--- a/keil/uwb_tag.c
+++ b/keil/uwb_tag.c
@@ -29,7 +29,7 @@
 #define POLL_DELAY  100U //yuan100U
 
 /* Receive response timeout */
-#define RESP_RX_TIMEOUT_US 10000 //Yuan500 10mssuccess 300jixian
+#define RESP_RX_TIMEOUT_US 1000 //Yuan500 10mssuccess 300jixian
 
 /* Field index in frame */
 #define MSG_SEQ_NUM_IDX 2
@@ -568,7 +568,11 @@
 //                        }
                     }
 }
+extern int16_t fVoltage_mv;
 uint8_t readgcom_flag1;
+uint32_t current_count11,current_count22,current_count33,current_count44,current_count55;
+uint16_t adc_caiji;
+uint8_t adc_one;
 void DiscPoll2(void)
 {
     uint32_t temp1,temp2,dw_systime,mindist_slavebaseid,mindist;
@@ -616,7 +620,7 @@
     recbase_num=0;
     phy_timer_open(1, IRQ_PRIORITY_HIGH);
     mac_register_process_handler(tx_int_callback, rx_int_callback);
-    tx_near_msg[BATTARY_IDX] = bat_percent;
+    tx_near_msg[BATTARY_IDX] = (fVoltage_mv-1000)/10;;
 //    tx_near_msg[BUTTON_IDX] = 0/*userkey_state|stationary_flag<<1|gotosleep_flag<<2|motor_flag<<5*/;
     tx_near_msg[SEQUENCE_IDX] = frame_seq_nb;
 //    tx_near_msg[SEQUENCEH_IDX] = (frame_seq_nb++)>>8;
@@ -639,6 +643,18 @@
 
     poll_tx_ts_i64 = ranging_tx_time_correct(poll_tx_en_start_u32 + phy_shr_duration());//修正时间戳
     temp_tag_count1=phy_timer_count_get();
+    adc_caiji++;
+    if(adc_caiji>30&&adc_one==0)
+    {
+    adc_one=1;  
+    adc_caiji=0;  
+    MinuteTask();
+    }
+    else if(adc_one==1&&adc_caiji>3600)
+    {
+    adc_caiji=0;  
+    MinuteTask(); 
+    }
     while(mac_is_busy());//等待发送完成
     
     tx_near_msg[TAGCONFIGSUCCESS_INDEX] =0;
@@ -648,21 +664,21 @@
     flag_getresponse=0;
     
     temp_tag_count2=phy_timer_count_get();
-    resp_rx_en_start_u32 =  poll_tx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
+    resp_rx_en_start_u32 =  temp_tag_count2+ US_TO_PHY_TIMER_COUNT(600);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
     temp_resp=resp_rx_en_start_u32;
-    //tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时
-    tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US);
+    tempflag=uwb_rx(1,resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);
+//    tempflag=uwb_rx(0,0, 15000);
     receive_flag =0;
 	start_receive_count=phy_timer_count_get();
-	poll_timeout=nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS)+US_TO_PHY_TIMER_COUNT(30000);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss
+	poll_timeout=US_TO_PHY_TIMER_COUNT(600);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss
 	end_receive_count=start_receive_count+poll_timeout;
 	if(end_receive_count>=UINT32_MAX)
 	{end_receive_count-=UINT32_MAX;}
 	current_count=phy_timer_count_get();	
     mainbase_dist=100000;
     mainbase_lost_count++;
-    while(current_count<end_receive_count||current_count>end_receive_count+HALF_SECOND_TIME)//循环接受包体,若为124.8K则是+62400000
-    {
+//    while(current_count<end_receive_count||current_count>end_receive_count+HALF_SECOND_TIME)//循环接受包体,若为124.8K则是+62400000
+//    {
     
     current_count=phy_timer_count_get();//不断刷新当前计数器值
     temp_tag_count2=phy_timer_count_get();
@@ -685,7 +701,8 @@
             temp_dist = nearbase_distlist[rec_nearbasepos];
             if(rx_buf[0]==0xff)
             {xiaobiaoqian_flag=1;}
-            tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
+            current_count11=phy_timer_count_get();
+//            tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
         }
         else if(rx_buf[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG)
         {
@@ -693,9 +710,10 @@
         } 
         else
         {
+            current_count22=phy_timer_count_get();
             if(recbase_num!=nearbase_num+1)
             {
-            tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
+//            tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
             }
         }
     //gpio_pin_clr(IO_PIN_5);//测试
@@ -705,12 +723,14 @@
     {//接收出错
     receive_flag=0;
         ggggg++;
-    tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
+//    tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
+        current_count33=phy_timer_count_get();
     }
     //gpio_pin_clr(IO_PIN_5);//测试
-    }
+//    }
     delay_us(1);
     uwb_rx_force_off(1);
+    current_count44=phy_timer_count_get();
 //    if(readgcom_flag1==0)
 //    {
     CalculateDists(poll_tx_ts_i64); //计算距离并更新距离表
@@ -776,7 +796,7 @@
         motor_flag = 0;
     }
 
-    tx_near_msg[BATTARY_IDX] = bat_percent;
+    tx_near_msg[BATTARY_IDX] = (fVoltage_mv-1000)/10;
     tx_near_msg[BUTTON_IDX] = userkey_state|stationary_flag<<1|gotosleep_flag<<2|motor_flag<<5;
     tx_near_msg[SEQUENCE_IDX] = frame_seq_nb;
     tx_near_msg[SEQUENCEH_IDX] = (frame_seq_nb++)>>8;
@@ -801,6 +821,18 @@
 
     poll_tx_ts_i64 = ranging_tx_time_correct(poll_tx_en_start_u32 + phy_shr_duration());//修正时间戳
     temp_tag_count1=phy_timer_count_get();
+    adc_caiji++;
+    if(adc_caiji>30&&adc_one==0)
+    {
+    adc_one=1;  
+    adc_caiji=0;  
+    MinuteTask();
+    }
+    else if(adc_one==1&&adc_caiji>1)
+    {
+    adc_caiji=0;  
+    MinuteTask(); 
+    }
     while(mac_is_busy());//等待发送完成
     
     tx_near_msg[TAGCONFIGSUCCESS_INDEX] =0;
@@ -811,10 +843,10 @@
     recbase_num=0;
     
     temp_tag_count2=phy_timer_count_get();
-    resp_rx_en_start_u32 =  poll_tx_en_start_u32+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
+    resp_rx_en_start_u32 =  temp_tag_count2+ US_TO_PHY_TIMER_COUNT(600);//设置发送多少s后接收按target独立时间起点算+ US_TO_PHY_TIMER_COUNT(POLL_TX_TO_RESP_RX_DLY_US为发送后要多久开启接收时间
     temp_resp=resp_rx_en_start_u32;
-    //tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时
-    tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US);
+    tempflag=uwb_rx(1, resp_rx_en_start_u32, RESP_RX_TIMEOUT_US);//开启接受并设置接收超时
+//    tempflag=uwb_rx(0,0, RESP_RX_TIMEOUT_US);
     receive_flag =0;
 	start_receive_count=phy_timer_count_get();
 	poll_timeout=nearbase_num*US_TO_PHY_TIMER_COUNT(DELAY_BETWEEN_TWO_FRAME_UUS)+US_TO_PHY_TIMER_COUNT(RESP_RX_TIMEOUT_US);//多一个多0.4ms默认0.4ms计算为0.125*4*100000,默认开启1mss

--
Gitblit v1.9.3