This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28035中断响应时间大

28035芯片,60M时钟频率,代码全部在FLASH中,使用外部中断这一个中断函数,通过示波器观察触发中断到响应中断延时为2.4uS(外部中断引脚设置6个采样频率),而观察触发中断到响应中断延时为2.2uS(外部中断输入设置为同步到时钟),这个延时也太长了吧,不是说差不多10个时钟频率吗,应该几百ns才对呀。

准备使用外部中断功能实现电力电子设备的保护功能,对保护响应时间有要求。

示波器A通道为外部中断输入信号,外部中断设置下降沿有效,B通道为外部中断响应函数里面操作的GPIO拉低语句;

  • 我测试的没有延迟,你把程序精简,只写测试这一个点
  • 根据你的描述,应该是测试的外部中断信号产生,到MCU控制GPIO拉低的时间对吗?具体使用的是哪个中断?
    另外,E2E上有介绍用CCS测试ISR时间的方法,你可以参考一下:e2e.ti.com/.../3262277
  • 使用的是外部中断1,图中,A为外部中断的输入引脚信号,下降沿有效,在外部中断响应函数中,将GPIO引脚拉低(即图中B),可以看到从A线的下降沿到B线的下降沿,需要2.4us的时间。
    外部中断响应函数如下:
    interrupt void xint1_isr(void) // xint1
    {
    // Insert ISR Code here
    GpioDataRegs.GPACLEAR.bit.GPIO17 = 1;
    //延时
    for(i_testXint2=0;i_testXint2<20;i_testXint2++);

    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
    }
    系统中只对这个一个中断使能了,其他中断使能没开。
  • 对于外部中断,进入ISR的最小延迟应为16个周期。请仔细检查GPIO输入引脚配置是否正确。应该是这样的:

    GpioCtrlRegs.GPACTRL.all  = 0x00000000;  // QUALPRD = SYSCLKOUT for all group A GPIO
    GpioCtrlRegs.GPAQSEL1.all = 0x00000000;  // No qualification for all group A GPIO 0-15
    GpioCtrlRegs.GPAQSEL2.all = 0x00000000;  // No qualification for all group A GPIO 16-31

  • 经过测试,不是端口、时钟等设置问题,是程序仿真位置原因,把中断程序移至RAM,延时时间缩小至500ns以下