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

求专业解答 28335进入中断后IFRx=0, IERx=0,如果IERx=0,那么后面的中断怎么进入?

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

rookiecalf:

这种主要是进入低级中断,不想妨碍高级中断的做法,可以进入中断直接清零中断应答位,使能全局中断

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

Travel Zhou:

回复 rookiecalf:

我知道可以进入中断直接清零中断应答位,使能全局中断,实现中断嵌套,但是我纠结的是:

IERx被CPU自动清零,好像在中断程序中没有手动使能,但是下次中断还是能正常进入,我可不可以这样理解,是CPU将其做了保护处理,中断结束后,恢复了现场。

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

rookiecalf:

回复 Travel Zhou:

You Zhou2

我知道可以进入中断直接清零中断应答位,使能全局中断,实现中断嵌套,但是我纠结的是:

IERx被CPU自动清零,好像在中断程序中没有手动使能,但是下次中断还是能正常进入,我可不可以这样理解,是CPU将其做了保护处理,中断结束后,恢复了现场。

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

Travel Zhou:

回复 rookiecalf:

在TI官方文档TMS320x2833x, 2823x System Control and Interrupts里,115页

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

rookiecalf:

回复 Travel Zhou:

You Zhou2

在TI官方文档TMS320x2833x, 2823x System Control and Interrupts里,115页

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

rookiecalf:

回复 rookiecalf:

看了一下下面描述:

The address for the interrupt service routine that is executed is fetched directly from the PIE interruptvector table. There is one 32-bit vector for each of the possible 96 interrupts within the PIE. Interrupt flagswithin the PIE module (PIEIFRx.y) are automatically cleared when the interrupt vector is fetched. The PIEacknowledge bit for a given interrupt group, however, must be cleared manually when ready to receivemore interrupts from the PIE group.

这边描述是对的,只有上面的框图是错的,不能完全相信文档,要自己做实践

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

Travel Zhou:

回复 rookiecalf:

 嗯,但是你上面的那段描述是PIE级,而IER是在CPU级,其实我就想探讨一下

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

user78960159:

回复 Travel Zhou:

手册中并没有写错,进入中断后IERx的确是被清0了,是CPU responds。

但是手册里没有写明IERx如何恢复成1,从跟踪结果看,退出中断函数后,IERx自动变成1,感觉这个动作应该也是CPU responds。

再有就是进入中断后INTM置1,退出中断后INTM也是自动至0,并不需要在退出中断函数前添加EINT语句。

根据TI官方的文档,28335进入中断后 CPU responds  IFRx=0, IERx=0  INTM=1, EALLOW=0  如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。

求专业解答

Martin Yu:

回复 rookiecalf:

C2000默认是不支持中断嵌套的,因此如果需要中断嵌套,则需要手动打开总中断使能,如果嵌套的中断来源于同一个PIEX组,则还需要打开IERX,并且还要清除PIEACKX等。

赞(0)
未经允许不得转载:TI中文支持网 » 求专业解答 28335进入中断后IFRx=0, IERx=0,如果IERx=0,那么后面的中断怎么进入?
分享到: 更多 (0)