CC2640 IO中断故障问题
时间:10-02
整理:3721RD
点击:
我用cc2640做中断,对外面的反应做处理,但是现在我在IO上用逻辑分析仪捕捉的信号是(25Mhz采样,上下跳变均出现,而软件输出并不对应):

而在CCS中debug中输出的信息是(与逻辑分析仪捕捉到的不一致,逻辑分析仪25Mhz采样并未出现干扰,逻辑分析仪中高有效为2.8V,1v以上的都测过,都没有毛刺或干扰):

/*
*
*/
static uint32_t InterruptCnt = 0;
static uint32_t InterruptHighCnt = 0;
static uint32_t InterruptLowCnt = 0;
Q_Touch_PAD_STATE Q_Touch_PadState = Q_Touch_PAD_END;
__STATIC_INLINE void Q_Touch_InterruptCallBackFxn(PIN_Handle handle, PIN_Id pinId)
{
uint_t PinValue;
CPUdelay(100); // 100
PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
if(PinValue == 1) // high voltage , touched
{
CPUdelay(100); // 100
PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
if(PinValue == 1) // high voltage , touched
{
#ifdef Qting_DEBUGInterruptHighCnt++;System_printf("InterruptHighCnt = %lu\n\n", (ULong)InterruptHighCnt);System_flush();
#endifQ_Touch_PadState = Q_Touch_PAD_TOUCHED;
}
else;
}
else if(PinValue == 0) // low voltage , not touch
{
CPUdelay(1); // 100
PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
if(PinValue == 0) // low voltage , not touch
{
#ifdef Qting_DEBUGInterruptLowCnt++;System_printf("InterruptLowCnt = %lu\n", (ULong)InterruptLowCnt);System_flush();
#endifQ_Touch_PadState = Q_Touch_PAD_REMOVED;
//if(InterruptLowCnt != InterruptHighCnt)// System_printf("Cnt Error! \n");
}
}
else
;
#ifdef Q_DEBUG
InterruptCnt++;
//System_printf("InterruptCnt = %lu\n\n", (ULong)InterruptCnt);
//System_flush();
#endif
}
是否有有人遇到此类问题,或是TI工程师帮忙看看,谢谢了
Rex Kung,
首先问一下你的中断触发是上升沿还是下降沿触发的?
双边触发的
