DSP

F2812 外部中断及其中断问题

2019-07-13 15:52发布

    F2812的外部中断,只有三个外接引脚,分别是XINT1、2、13,每个中断都可以选择上升沿触发或者是下降沿触发,同时还可以选择使能/禁止状态。书上是这样描述这三个中断的:F2812支持3个隐藏的外部中断(XINT1,2,13),XINT13还和一个没有隐藏的外部中断(XNMI)连接在一起,他们一起组成的信号称为XNMI-XINT13。疑问:为什么称这三个外部中断为隐藏的中断呢?这三个中断对应的三个引脚是XINT1->149,XINT2->151,XINT13->150。          为了防止CPU的误操作,许多寄存器都通过EALLOW来保护,中断向量列表寄存器就是其中之一,中断向量列表(PIE Vector Table)。中断向量列表寄存器包括哪一些东西详见《TMS320F2812原理及其C语言程序开发》一书。当然有讲F2812的书或者是其他应用文档手册里都应该能找到。        PIE是什么,翻译成中文确切的是什么我也不知道,当作外设中断扩展模块来理解吧,反正是和中断有关的一个名词来理解吧。书上的东西讲的比较全面,但是实际用起来和理解起来都感觉非常不方便,我就凭着自己的理解和书上的内容,写一下最相关的外部中断部分吧。再在实践中来修正和加深理解。       PIE一共有96个独立的中断,分成12组,每一组8个,从PIE的向量列表中可以查阅到每一个存放中断服务程序的地址。中断服务程序(ISR)。可以看到这些中断的地址和作用在中断向量列表中已经一一对应了,包括EV事件,SCI,SPI,ECAN等,还有众多的保留端口,由于我还没有用过,就不讨论这些端口的作用了。只关注要用的部分,我准备做一个上升沿触发的中断,所接受的信号来自前端器件。       我选择了外部中断1(XINT1),其对应的PIE列表中的位置为第1组的第4位,向量ID号为35,地址为0x0000 0D46,占用空间为32bit,CPU优先级为5,PIE分组优先级为4.       中断分为外设级中断,PIE级中断和CPU级中断,刚看的时候感觉云里雾里的,多看了两遍之后才有一点点明白。有一个中断来了,是什么样的中断,外设中断还是外部中断?好,先到了外设级中断,在PIE中竖起了标志(PIEIFRx.y),将该中断位使能(PIEIERx.y),硬件置位(PIEACKx),然后就将中断请求发送到了CPU,进行CPU级的中断处理了。在CPU中也是线树立标志(IFRx),使能(IERx),还要树立一个全局中断屏蔽位(INTM),以防止其他的中断产生,这些链路都建立起来之后,好的可以相应中断了。从我的理解上是这样的,实际上呢?还会不会有什么出入,待定,等做了试验之后再来补充吧。