搜索
bottom↓
回复: 4

CC1100 如何退出WOR模式

[复制链接]

出0入0汤圆

发表于 2011-12-13 20:41:36 | 显示全部楼层 |阅读模式
现在可以进入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模式
    }
}

出0入0汤圆

发表于 2011-12-19 22:35:47 | 显示全部楼层
再次进入WOR模式时,WOR定时器需要重新复位。因为WOR有最短时间要求。

出0入0汤圆

发表于 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[0]==cc1100_address) && (cc1100_rxbuf[1]==0x1f) &&
        (cc1100_rxbuf[2]==0x2e) && (cc1100_rxbuf[3]==0x3d))
      {
       LED_ON;
       CC1100_Strobe(CC1100_SPWD);//进入低功耗状态
       GetTemp();
       battery_voltage();
       temperature = (int)(Temper*10);
       cc1100_txbuf[0] = 0x01;
       cc1100_txbuf[1] = (temperature & 0xff00)>>8;
       cc1100_txbuf[2] = temperature & 0x00ff;
       cc1100_txbuf[3] = (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模式。

出0入0汤圆

 楼主| 发表于 2011-12-20 12:49:33 | 显示全部楼层
回复【2楼】chengyabcd chengyabcd
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2012-1-6 16:27:51 | 显示全部楼层
正好在调试cc2500,考虑做WOR,可是主管说WOR不可靠,还是想尝试一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 11:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表