TI中文支持网
TI专业的中文技术问题搜集分享网站

ZigBee低功耗遇到的问题

低功耗原理我可不可以这样理解,在这个函数osal_pwrmgr_powerconserve()会检测Timer时间链表中next Timeout最小的值,这个最小值就是睡眠的最小单位,假设最小的Timeout为Nms,系统检测到没有事件需要处理时,CPU则进入休眠模式N个毫秒(前提定义POWER_SAVING),等休眠时间到了就会启动检测并处理处理Timer事件需要处理,这样就可以达到省电的目的。

 

nextTimeout = OSAL_TIMERS_MAX_TIMEOUT;

// 寻找Timer链表中最小的值

while ( srchTimer != NULL )     {      

         if (srchTimer->timeout < nextTimeout)       {        

        nextTimeout = srchTimer->timeout;      

         }      

        // Check next timer      

       srchTimer = srchTimer->next;    

 }

 

 

// 得到下一个最小时间

 next = osal_next_timeout();

// 处理器进入休眠(休眠时间为next)

OSAL_SET_CPU_INTO_SLEEP( next );

 再有就是 最大的睡眠时间是固定的510s  其实这也就够了。

#define MAX_SLEEP_TIME                   510000     ms       

 

 

 

现在遇到的问题是 系统可以进入睡眠模式PM2

但是逐步调试发现任务一(nwk_init( taskID++ );)中有个定时期,定时时间特别短,导致系统不断休眠与唤醒。并且这个任务还不开放 这该怎么做呢  。希望得到TI 高手给出建议。谢谢~

 

注:我用的版本是ZigBee2007 DZIGBEEPRO 版本(ZStack-CC2530-2.5.1a)

heng ma1:

请问你的问题解决没  我也遇到累死的问题    

bo gu:

回复 heng ma1:

http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx     参考上面链接  上面说的跟清楚

bo gu:

回复 heng ma1:

http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx   上面的连接  说的很清楚哈哈

heng ma1:

回复 bo gu:

OnBoard.h

#define OSAL_SET_CPU_INTO_SLEEP(timeout) halSleep(timeout); /* Called from OSAL_PwrMgr */

这里调用了halSleep   是不是每次最新的nexttimer  在这里睡眠

Min Chen6:

回复 bo gu:

实力很清楚,可我还是不懂

赞(0)
未经允许不得转载:TI中文支持网 » ZigBee低功耗遇到的问题
分享到: 更多 (0)