当前位置: 代码迷 >> 单片机 >> 飞思卡尔s12单片机输入捕杀中断响应时间过长
  详细解决方案

飞思卡尔s12单片机输入捕杀中断响应时间过长

热度:119   发布时间:2016-04-28 14:56:09.0
飞思卡尔s12单片机输入捕捉中断响应时间过长
我用飞思卡尔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 //清中断标志位
------解决方案--------------------
要么是晶振过低
要么是有其他什么中断在前面挡住了
没用过这个片子,不知道正常响应时间是多少
  相关解决方案