TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335 外部中断响应时间

中断处理程序:我只是用来翻转IO口电平(论坛的代码编辑器是不是有问题,一用插入代码就全乱码了)

interrupt void xint1_isr(void) //GPIO15是int1的入口
{
// GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low

GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1; //翻转电平

// Acknowledge this interrupt to get more from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

是这样,我用1MHz方波输入到外部中断映射到的GPIO15,设置下降沿触发,然后在中断服务子程序中翻转

GPIO0的电平,以此来测试外部中断从输入,到响应中断,到处理完压栈这些工作所花费的时间,结果发现需要210ns

(用的是F28335,150MHz/6.67ns一个时钟周期)

我的问题:210ns的响应时间对于我来说太慢了,我能否通过什么方法降低进入中断以及压桟等所花费的时间?另:我觉得可能需要深入了解C2000的汇编指令,相关的文档在TI官网如何查找?

chunyu chen1:

这是用示波器观察的,黄线为输入1MHz方波以引起外部中断,蓝线为在中断处理函数中实现的GPIO0的电平的翻转,由图2可以看出,延时有210ns

中断处理程序:我只是用来翻转IO口电平(论坛的代码编辑器是不是有问题,一用插入代码就全乱码了)

interrupt void xint1_isr(void) //GPIO15是int1的入口
{
// GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low

GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1; //翻转电平

// Acknowledge this interrupt to get more from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

是这样,我用1MHz方波输入到外部中断映射到的GPIO15,设置下降沿触发,然后在中断服务子程序中翻转

GPIO0的电平,以此来测试外部中断从输入,到响应中断,到处理完压栈这些工作所花费的时间,结果发现需要210ns

(用的是F28335,150MHz/6.67ns一个时钟周期)

我的问题:210ns的响应时间对于我来说太慢了,我能否通过什么方法降低进入中断以及压桟等所花费的时间?另:我觉得可能需要深入了解C2000的汇编指令,相关的文档在TI官网如何查找?

Johnson Chen1:

正常应该是9-13的周期进入到中断函数入口,210ns有点长,你可以看一下中断服务函数的反汇编查一下原因, xint1_isr是否已经放在RAM里面执行?

如果想要中断响应快的话,可以将中断ISR用汇编函数来写。

赞(0)
未经允许不得转载:TI中文支持网 » F28335 外部中断响应时间
分享到: 更多 (0)