我的板子使用输入捕捉中断IC5来接收红外,可是我测试的时候一旦我按下红外以后,中断不断的进入,还有使用定时器读取到的值好像也有问题,请大牛们帮我看看我的程序,看看哪里有问题。 void __ISR(_INPUT_CAPTURE_5_IRQ, ipl4) IRIntHandler( void ) //void __ISR(_EXTERNAL_1_IRQ, ipl1) IRIntHandler( void ) { irtimes++; // irIntEdgeSwitch(); ir_interupt();
mIC5ClearIntFlag(); }
void ir_init(void ) { irReset(); INTEnableSystemMultiVectoredInt(); PORTSetPinsDigitalIn(IOPORT_D, BIT_12);
// Setup Timer 3 //OpenTimer23(T23_ON | T23_PS_1_16, 1000000); ConfigIntCapture5( IC_INT_ON | IC_INT_PRIOR_4 ); OpenCapture5( IC_EVERY_FALL_EDGE | IC_INT_1CAPTURE | IC_TIMER3_SRC | IC_FEDGE_FALL | IC_ON ); mIC5ClearIntFlag(); mIC5IntEnable(1);
// // CloseCapture1(); // CloseTimer3(); }
int main(void) { ir_init(); while(TRUE) { ; } } 每次进入中断我都已经清除了中断标志了。为什么我读取到的定时器的计数值才600多,比我按机器周期算的36*9*1000 算出的计数值差了太多太多了。
|