DSPF28069——外设中断扩展(PIE)记录3

外设中断扩展模块将多个中断源复用为一组较小的中断输入。

PIE支持96个独立的中断,这些中断又被分为12组,每组中有八个独立的中断,

1-12组对应于INT1 to INT12

每一个独立的中断可以被PIE模块使能或者禁用。

中断一般看来可分为三个级别分别是:外设模块级、PIE级、CPU级

中断过程分析:

1、外设级

一个外设模块产生一个中断事件。对应于该事件的特定寄存器中的中断标志位将置位。如果对应的中断使能位已置位,,则外设模块就向PIE控制器发出一个中断请求。如果对应的外设模块中断没有使能,则中断标志位保持置位,直到被软件清零。

2、PIE级

PIE模块将8个外设模块和外部引脚的中断组合到一个CPU中断。这些中断分为12组:PIE组1~PIE组12。

一个组的中断组合到一个CPU中断。

一旦向PIE控制器发出中断请求后,对应的PIED的中断标志位(PIEIFRx.y)置1。如果对应的PIE中断使能位(PIEIERx.y)也为1,则PIE将检查对应的PIEACKx位,确定CPU是否做好主备来响应改组的一个中断。如果该组的PIEACKx位为0,那么PIE将向CPU发出中断请求。如果PIEACKx位为1,那么PIE将等待CPU,直到PCU清零PIEACKx位时,才能再次发出请求INTx。

3、CPU级

一旦中断请求送到CPU上,对应于INTx的CPU级中断标志位(IFR)将置位。标志锁存到IFR后,只要相应的CPU中断使能(IER)或仿真中断使能寄存器(DBGIER)使能,而且全局中断屏蔽位也使能,则CPU就会相应此中断。

一旦发出中断请求,并且又使能了,CPU就会准备执行相应的中断服务程序。在开始阶段,CPU会将相应的IFR和IER位清除,清除EALLOW和LOOP,置位INTM和DBGM,清空流水线,保存返回地址并且自动保存上下文信息。然后从PIE模块取出ISR向量。如果该中断是组合的,则PIE模块将由PIEIERx和PIEIEFRx寄存器给出相应的中断服务程序入口地址。

将要执行的中断服务程序的入口地址直接从PIE中断向量表中取得。PIE中的96个中断的每一个中断都有一个对应的32位向量。PIE模块中的中断标志位(PIEIFRx,.y)在取回中断向量后,硬件自动清零。

为了从PIE中接收更多的中断,PIED中断应答位必须用户程序清零。

中断过程的如图所示

INTM 和 DBGIER

中断向量表映射

PIE中断源和外部中断

PIE中断向量表如下:(数字越小优先级越高,右上角的优先级最高)

猜你喜欢

转载自blog.csdn.net/weixin_41949409/article/details/96481991
pie
今日推荐