paradoxfx

【原创】TI C2833x介绍---复位与中断(4)

0
阅读(3573)

 

经PIE控制的中断的操作顺序:

1)  外设级别

中断事件由外设产生。该事件所对应的中断控制寄存器中的中断标志位(IF )被置位。此时,如果相应的中断使能(IE )位被置位,则外设向PIE控制器发出中断请求。此时如果该中断在外设级别未被使能,则IF保持置位,直到它被软件操作清除;在被清除之前,如果中断被使能且中断标志被置位,此时中断请求被分配给PIE控制器。这样的一个机制可以保证在高优先级的中断发生时,低优先级的中断请求进入一个等待响应状态,而不至于被淹没掉。外设寄存器内的中断标志位必须被软件手动清除。

2)PIE级

PIE模块将最多可达96个的外部中断分为12个组,对应CPU的12个中断,例如PIE第一组的12个外部中断映射到INT1,而第12组的中断映射到CPU的INT12. 其余的中断源不由PIE控制,直接传递到对应的CPU中断源。

每一个PIE中断组都有它们对应的PIE中断标准寄存器PIEIFRx与中断使能寄存器PIEIERx,12个组分别对应x从1到12。每个寄存器对应的一个组中的8个中断,则各对应寄存器中的一个位,即PIEIFRx.y与PIEIERx.y,y的值为1-8. 此外,每个组还对应一个PIE组中断响应寄存器,即PIEACKx,12个PIE中断组对应x为1-12。

在PIE控制寄存器响应中断请求之后,对应的PIE中断标志位PIEIFRx.y被置位,此时如果PIE中断使能标志位PIEIERx.y也已置位,则PIE检测相应的中断响应寄存器PIEACKx以判断CPU是否已准备好响应该组的中断。如果对应的中断响应寄存器PIEACKx位被清零,则PIE向CPU发出中断请求;如果中断响应寄存器PIEACKx位是置位状态,则PIE控制器进入等待状态,在PIEACKx位被清零之后再向CPU发出INTx请求。所以在退出中断的时候我们要进行下面的操作以释放CPU,来响应更多的中断事件。

PieCtrlRegs.PIEACK.all = PIEACK_GROUPx;