我用飞思卡尔s12单片机输入捕捉中断,结果上升沿中断响应时间190us,下降沿响应时间位236us。
程序:void ICU_Init(void)
{
uint8 l_ICU_Init;
ERROR e;
//设置频率
TSCR1_PRNT = 0x01; //使用寄存器PTPSR的分频系数
PTPSR = ICU_ClockPrescaler - 1; //定时器的时钟分频
TSCR2_TOI = 0x01; //使能定时器溢出中断
//YX为调试程序临时关闭中断
//YX2改为:
//1 Disables the timer counter whenever the MCU is in freeze mode. This is useful for emulation.
//TSFRZ does not stop the pulse accumulator
TSCR1_TSFRZ = 0x01;
//TSCR1_TSFRZ = 0x00;
TSCR2_TCRE = 0x00; //禁止计数器复位,计数器自由运行
TSCR1_TFFCA = 0x00; //正常清除标志位
TTOV = 0x00; //禁止所有通道的输出比较溢出翻转
e = ICU_SetWorkMode(5, ICU_IC_AnyEdge);
OCPD |= (1 << 6);//仅仅使能输出比较中断,但不操作相应输出管脚
TSCR1_TEN = 0x01; //定时器使能
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt VectorNumber_Vtimch5 void ICU_Ch5Int(void)
{
UINT32 g_ICU_Tmp_CamTime;
static UINT16 tmp=0;
volatile UINT16 tmp2,tmp3,tmp4;
ERROR e;
LED_REV(2);
//EnableInterrupts;
//LED_ON(4);
TFLG1_C5F = 1;
}
#pragma CODE_SEG DEFAULT //清中断标志位
------解决方案--------------------
要么是晶振过低
要么是有其他什么中断在前面挡住了
没用过这个片子,不知道正常响应时间是多少