sisai 发表于 2011-12-13 20:41:36

CC1100 如何退出WOR模式

现在可以进入WOR模式,并且成功接收到数据,但是希望每次接收到数据后先返回空闲模式, 处理一些数据和任务后,在重新进入WOR,但是不知道怎么退出WOR模式,请指教;
尝试过不加最后2句halSpiStrobe(CCxxx0_SCAL);//开启快速启动halSpiStrobe(CCxxx0_SWOR);//进入WOR模式,但是此时CC1100不能收也不能发

#pragma vector=PORT2_VECTOR
__interrupt void RFReceive(void)   //无线接收中断
{
    if(P2IFG&BIT7)
    {
      P2IFG &= ~BIT7;                     //清除中断标志
      _BIC_SR_IRQ(LPM3_bits);      //退出低功耗   
      halSpiStrobe(CCxxx0_SIDLE);//进入空闲模式
      if(halRfReceivePacket(CC1100_Data_Buff,&CC1100_leng))   //接收数据并判断,不同数据显示不同效果
      {
         CC1100_Receive_Data();
         P2OUT ^= BIT3;
      }
         halSpiStrobe(CCxxx0_SCAL);//开启快速启动
         halSpiStrobe(CCxxx0_SWOR);//进入WOR模式
    }
}

mtbf 发表于 2011-12-19 22:35:47

再次进入WOR模式时,WOR定时器需要重新复位。因为WOR有最短时间要求。

chengyabcd 发表于 2011-12-20 09:01:46

不是吧。。。好像CC1100收到数据包后就自动退出WOR模式了吧。。。
#pragma vector=PORT2_VECTOR
__interrupt void port2_ISR (void)
{
unsigned char i;
signed int temperature;
if(CC1100GDO0_INT) //GDO0
{
   start_clock(); //等待外部晶振工作稳定
   while(CC1100GDO0_STAT);
   if(RFReceivePacket(cc1100_rxbuf,4))
    {
   //接收到定时唤醒命令
   if((cc1100_rxbuf==cc1100_address) && (cc1100_rxbuf==0x1f) &&
      (cc1100_rxbuf==0x2e) && (cc1100_rxbuf==0x3d))
      {
       LED_ON;
       CC1100_Strobe(CC1100_SPWD);//进入低功耗状态
       GetTemp();
       battery_voltage();
       temperature = (int)(Temper*10);
       cc1100_txbuf = 0x01;
       cc1100_txbuf = (temperature & 0xff00)>>8;
       cc1100_txbuf = temperature & 0x00ff;
       cc1100_txbuf = (unsigned char)(u_battery);
       for(i=0;i<4;i++) cc1100_rxbuf = 0;
       LED_OFF;
       CC1100_WriteBurstReg(CC1100_PATABLE, paTable, 8);//Write PATABLE,设置发射功率为+10dB
       RFSendPacket(cc1100_txbuf,4);
       CC1100_Strobe(CC1100_SWOR);//进入WOR状态
       LED_OFF;
      }
我的一段程序,这是CC1100在WOR模式下收到数据后,给CPU中断信号后的处理程序,在数据处理完毕后,给主站发送信息后,重新返回WOR模式。

sisai 发表于 2011-12-20 12:49:33

回复【2楼】chengyabcd chengyabcd
-----------------------------------------------------------------------

1.我这边的流程和楼上的差不多,我也是接收到数据后,处理下,在回复给上一个节点,在CC1100_Receive_Data(); 函数中执行了, 然后在进入WOR, 我希望的是在执行完CC1100_Receive_Data函数后, 不进WOR, 先进空闲模式,还需要连续发送数据给下一个节点,但是我现在在中断中不进入WOR的话, 他就收不到数据了

sqcjustin 发表于 2012-1-6 16:27:51

正好在调试cc2500,考虑做WOR,可是主管说WOR不可靠,还是想尝试一下
页: [1]
查看完整版本: CC1100 如何退出WOR模式