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模式
}
} 再次进入WOR模式时,WOR定时器需要重新复位。因为WOR有最短时间要求。 不是吧。。。好像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模式。 回复【2楼】chengyabcd chengyabcd
-----------------------------------------------------------------------
1.我这边的流程和楼上的差不多,我也是接收到数据后,处理下,在回复给上一个节点,在CC1100_Receive_Data(); 函数中执行了, 然后在进入WOR, 我希望的是在执行完CC1100_Receive_Data函数后, 不进WOR, 先进空闲模式,还需要连续发送数据给下一个节点,但是我现在在中断中不进入WOR的话, 他就收不到数据了 正好在调试cc2500,考虑做WOR,可是主管说WOR不可靠,还是想尝试一下
页:
[1]