微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zigbee定时PM2睡眠唤醒发数据

zigbee定时PM2睡眠唤醒发数据

时间:10-02 整理:3721RD 点击:

我在Sample那个Progects中,终端程序中加入编译选项POWER_SAVING, 接收器设置FALSE,POLL_RATE设置成0,去掉按键注册以及其他,修改成只有给协调器定时发送数据(单播),用的是事件定时函数  osal_start_timerEx,当定时10s、20s时,终端会定时睡眠唤醒给协调器发送数据,但是,当定时30s(30000)时,终端会在1分钟多才会给协调器发数据,而且1分钟多这个时间不是固定数值,定时1分钟时,2分钟或3分钟多才会发数据,我只做了这4个时间的实验,请问可能是什么原因导致的?是不是我休眠方式设置的不对,?

我用不休眠的终端定时发,定时的30s挺准确的,为什么休眠就不行呢?

Thanks in advance!

jiao

您可以给我讲下在组王中怎么唤醒发送嘛!我看文献有点没看懂!谢谢你,要是有例程可以给借鉴就更好了,发到349945787@qq.com,谢谢了

你好,最近一直没登陆,我这就给你发一份

Hua Jiao,

你的osal_start_timerEx放在哪里?能把程序贴出来吗?

在SampleApp.c那个文件里啊,位置没变,就是入网后有个状态值,在哪里填了一个,然后在定时事件里填了一个啊,贴程序的话,得晚上了,谢谢

你好,我上传附件了,是终端SampleApp.c,我修改过的,我直接复制到这上面的话,格式就变了,不条理,不好看

里面就是关闭LED,然后设置单播,定时事件发送数据等

 

我觉得问题可能在void halSleep( uint16 osal_timeout )这个函数中,osal_start_timerEx最终不就是调用这个函数么

这个函数中有一句timeout = HAL_SLEEP_MS_TO_320US(osal_timeout);,这句是HAL_SLEEP_MS_TO_320US(ms)---(((((uint32) (ms)) * 100) + 31) / 32)

假如20s,数值就是20000ms,  (20000*100+31)/32 = 62500   ,这个值接近65535 ,也就是说只要换算过来小于这个值就准确,大于就不准确

但不设置低功耗的话,都是准确的,

这个函数后面看了,有部分也看不懂,也不知道错误在哪,不知道时间链表中的时间数据是怎么减的,没有找到这一部分

谢谢

 

你把发送数据前的HalLedBlink去掉,再试一下

谢谢,试过了,不行

我暂时的解决方法是:如定时1分钟,发一次数据,我就计数三次定时20s,这样组成1分钟发一次数据

VV大神,我也遇到楼主所说的问题,大于20s后睡眠时间不准的问题。大于20s后仍然会有定时事件,但是很多次睡眠结束后进入了其他事件而没有进入Sampple事件。请VV大神给进一步梳理一下,拜谢。

我们最新的协议栈,osal的timer已经改成32位了,所以不会存在这个问题了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top