motodefy 发表于 2014-5-14 20:51:56

来请教下关于ZigBee休眠与唤醒的问题


最近再调一个ZigBee的小玩意,碰到点问题特来请教下·····

就是我需要一个节点采集后休眠一小时后醒来继续采集,然后再休眠···不知道有什么比较好的方案么,
看了下貌似内部休眠最高只有510000ms啊,完全到不了这么久···


还有个问题如果我要采集一个波形的频率可以通过开定时器和中断采集然后通过计算来实现么,在协议栈上跑

求指点下迷津

motodefy 发表于 2014-5-17 19:47:12

{:sweat:}没人回··是这个问题比较低端么·····初学伤不起,今天解决了捕捉问题,

贴个代码吧

void InitT1(void)
{   
      P0DIR &= ~(1<<6);//P0_6定义为输入
      P0SEL |=(1<<6);
      P2SEL |=(1<<3);//timer1优先
      P2SEL |=(0<<4);   
//      IRCON|= 0x02;
      T1IF = 0;   
      T1IE = 1;                   //开总中断和T3中断   
      T1CTL = 0x00;
      T1CTL |= 0x0c;//128分频   
      T1CTL |=0x01;   //0x0000-0xffff            
      T1CCTL4=0x00;
      T1CCTL4|=1<<6; //enable interrupt
      T1CCTL4|=0<<2;//捕捉模式
      T1CCTL4|=0x01;//上升沿         
      IEN1|= 0x02;    //TIMER1 enable               
      EA = 1;
}

HAL_ISR_FUNCTION(time1,T1_VECTOR)
{
IRCON = 0x00;                  //清中断标志, 也可由硬件自动完成
      if(T1STAT&0x10)
      {
          T1STAT=0;
          a = T1CC4H ;      //get value
          b = T1CC4L ;
          inttime=a<<8|b;
         T1CNTH = 0;   //clear count
          T1CNTL = 0;
      
      }
}

jerry840922 发表于 2014-5-17 20:35:54

你完全可以每次醒来以后记个数,然后检查是否到时间,没到接着睡,到了就工作

motodefy 发表于 2014-5-17 21:46:24

jerry840922 发表于 2014-5-17 20:35
你完全可以每次醒来以后记个数,然后检查是否到时间,没到接着睡,到了就工作 ...

我想靠一小时给终端发个信号来从深度睡眠唤醒然后传次数据再睡眠不知道可行否。。求指教,那个计数的方法也想过。。如果这个方法不行的话只能计数了

jerry840922 发表于 2014-5-18 20:52:57

motodefy 发表于 2014-5-17 21:46
我想靠一小时给终端发个信号来从深度睡眠唤醒然后传次数据再睡眠不知道可行否。。求指教,那个计数的方法 ...

用你的办法的前提是必须你的单片机支持外部中断唤醒,只要支持就没问题,这样功耗也可以做的更低。
页: [1]
查看完整版本: 来请教下关于ZigBee休眠与唤醒的问题