请教CC1100E的同步字检测中断的设置问题:
试验发现,采用以下的中断设置和函数,当TI_CCxxx0_IOCFG2=0x07、即接收到CRC_OK时产生中断,程序能正常地待机和接收到数据;但当TI_CCxxx0_IOCFG2=0x06、即设置为接收到同步字时产生中断,则会不断地进入中断,而此时并没有模块在发送,即很容易地误触发同步字中断。
请问如果需要采用检测到同步字时才产生中断,应该如何设置(包括各相关的寄存器的设置)?
//====================== GDO2的外部中断设置 ====================
void GDO2_ISR(void)
{
TI_CC_GDO2_PxSEL &=~TI_CC_GDO2_PIN; // 普通IO
TI_CC_GDO2_PxDIR &=~TI_CC_GDO2_PIN; // input
TI_CC_GDO2_PxREN |= TI_CC_GDO2_PIN; //
TI_CC_GDO2_PxOUT &=~TI_CC_GDO2_PIN; // Set P2.1 as pull-Down resistance
TI_CC_GDO2_PxIES &=~TI_CC_GDO2_PIN; // P2.1 Lo->Hi edge
TI_CC_GDO2_PxIFG &=~TI_CC_GDO2_PIN; // P2.1 IFG cleared
TI_CC_GDO2_PxIE |= TI_CC_GDO2_PIN; // P2.1 interrupt enabled,GDO2
}
//*******************以下为中断函数**************************
// P2.1 GDO2中断服务(Lo->Hi上升沿中断)
#pragma vector = PORT2_VECTOR
__interrupt void port2_ISR (void)
{
if(P2IFG & TI_CC_GDO2_PIN) // Command received from RF
{ // RX active
P2IFG &= ~TI_CC_GDO2_PIN; // Clear Receive flag
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
TACCTL0 &= ~CCIE; // Disable timer Interrupt
P2IFG &= ~BIT1; // P2.1 IFG cleared
P2IE &= ~BIT1; // P2.1 interrupt disabled,GDO2
}
}
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG2, 0x07);
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG0, 0x06);