打印

关于2812的PIE中断及中断嵌套的理解,请教高手指点

[复制链接]
8221|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hhuguodong|  楼主 | 2013-3-9 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在用2812编程,遇到一个问题,想请教各位高手,我先说一下自己的一点理解请教高手指点。    PIE一般用到的中断组是INT1-INT12。我们知道他们的优先级顺序是INT1>INT2>INT3…INT11>INT12。在开所有中断使能的前提下,如果不同组(如INT1组的TINT0和INT2组的T1CINT)的中断同时向PIE发出中断请求,
那么PIE会放中断优先级较高(INT1.TINT0)的中断过去。同样的在如果是同组的中断请求同时到达的话(如INT2组的),那么也同样按照PIE中断向量表查看同组优先级,CPU响应优先级较高的中断。
    我的理解是,
(1)不同组之间的中断可以实现中断嵌套。如INT1组的TINT0和INT2组的T1CINT。当CPU正在响应INT2组的T1CINT中断服务程序这时如果产生了INT1组的TINT0中断的话那么CPU便会产生中断嵌套,先停下T1CINT转而去执行TINT0,
当TINT0中断服务程序执行完之后再去执行剩余没有执行网的INT1中断服务程序。
(2)同组之间的中断不可以实现中断嵌套。如果同样是INT1组的两个中断比如ADCINT和TINT0。当CPU正在响应INT1的中断服务程序时,这时如果产生了ADCINT,尽管ADCINT在INT1组中的优先级比TINT0的优先级高,还是不会产生中断嵌套。
因为同组的中断在向CPU发出中断请求之前先要经过PIE中的应答位PIEACK验证,如果PIEACK为1说明此时正有改组的中断正在响应,PIE不会放响应该发出中断请求的中断源通过,只有等到正在响应的中断服务程序执行完才会去响应刚刚
发出中断请求的中断服务程序。这也就是为什么,我们在中断服务程序的后面都要加上一句PieCtrl.PIEACK.bit.ACKx=1;就是为了让应答位清零,可以响应同组的其他中断。
以上两点是我对2812中断嵌套的一点理解,尤其是提到的第(2)点,万望高手不吝指导。

相关帖子

沙发
hhuguodong|  楼主 | 2013-3-10 09:12 | 只看该作者
木有人给评论么。。。呜呜

使用特权

评论回复
板凳
refee| | 2013-3-10 11:32 | 只看该作者
可能分太少了 高手们不感兴趣 ;P
话说偶没玩过2812 纯帮顶来的

使用特权

评论回复
地板
挂剑空垄| | 2014-6-11 20:52 | 只看该作者
刚学习DSP2812不久,今天我也在想这个问题。楼主说的很对。但是如果我在正在运行的中断服务程序中首先将本组PIEACK清零,是否可以实现同组的中断嵌套呢?如:系统有第一组中断TINT0请求,并且中断允许,系统响应该中断,进入TINT0中断服务程序中,在该中断服务程序一开始便将PIEACK1清零,此时有中断ADCINT产生,那么CPU会响应ADCINT吗?期待高手解惑!有机会做个验证看看。

使用特权

评论回复
5
NWPU_CHEN| | 2014-6-16 15:42 | 只看该作者
挂剑空垄 发表于 2014-6-11 20:52
刚学习DSP2812不久,今天我也在想这个问题。楼主说的很对。但是如果我在正在运行的中断服务程序中首先将本 ...

面对你这个我想说三点:首先,一开始便清除中断响应位,你的中断屁事都没干,就算嵌套了,又有什么意义?脱裤子放屁的事还是不要干;其次即使这么做还是不能响应同组中断,因为你没有开全局中断,三级中断中INTM在响应计数器0中断过程中已经置为1,不能响应其他任何中断,若手动不清零,CPU级别中断”总开关”没开,还是屁事不顶!最后,想要明白中断,好好研究DSP的三级中断外设级别、pie级别和cpu级别,12组外设可屏蔽中断怎么进入CPU被响应,响应过程发生什么,各标志位是自动清除还是手动清除等等,你想法挺多的,学习精神也很大,不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

12

帖子

0

粉丝