zigbee定时PM2睡眠唤醒发数据
我在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位了,所以不会存在这个问题了。