打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DSPF28335---中断系统

28335的中断系统

中断概述

   通过硬件或软件驱动的信号,使CPU将当前的程序挂起,执行另一个称为中断服务子程序称为中断。28335内部有16根中断线,其中有两个不可屏蔽中断(RESETNMI)与16个可屏蔽中断(INT1-14RTOSINTDLOGINT),这里主要说明INT1-14

     28335中,CPU定时器12一般预留给实时操作系统使用,中断线单独分配给INT13INT14。其余12个可屏蔽中断直接连接在外设中断扩展模块PIE上,供外部中断和处理器内部单元使用。这就有一个问题,28335内部有很多个外设模块,这些外设都有自己的中断而且有很多个,那么剩余12个中断怎么够用。为了解决这个问题所有引入PIE模块。PIE通过12根线与28335核的12个中断线相连。而PIE的另外一侧有12*8=96根线分别连接到外设,如ADSPIEXINT等等。

说明:PIECPU的中断标志寄存器由硬件来清零;但外部中断的标志位要通过软件来清零。

一.三级中断

1.外设级中断

    如果有外设产生中断事件,则寄存器中相应的中断标志位被置一,如果相应的中断使能为(IE)被置位,那么外设就像PIE发出一个中断请求。如果外设使能位没有被置位,那么中断标志(IF)位将保持为1直到软件清除。

2.PIE中断

    对于复用的中断源,PIE模块有相应的标志寄存器[PIEIFR(x,y) x=1-12,y=1-8]和中断使能寄存器PIEIER(x,y) ;对于每一个PIE中断组来说还有一个中断应答寄存器PIEACKx。当有中断请求进入PIE模块的时候,如果相应的PIE中断标志位PIEIFRx.y)和中断使能寄存器PIEIER(x,y)1;这是PIE控制器就会检查PIEACKx标志位看CPU是否已经准备好接收这个PIE中断组的中断。

说明:如果PIEACKZx被清零,PIE会把这个中断请求送到CPU级的INTx。如果PIEACKx位置1,那么PIE就会等待直到这个标志位清零然后发送中断请求给CPU级的INTx中断过程中需要向PIEACKx寄存器 1清零。

3.CPU级中断

一旦中断请求到达CPU级,CPUINTx的中断标志位置1,如果CPU中断使能寄存器、调试中断允许寄存器(DBGIER:软件仿真模式时起作用)和全局中断屏蔽位(INTM)使能的话CPU才会执行这个中断申请。

    下面详细介绍中断请求的具体步骤

中断请求的流程(重点

步骤1PIE组中的任何外设或外部中断都可以产生一个中断。如果在该外设模块被使能,则这个中断请求就被送到PIE模块。

步骤2PIE识别PIEx内的y中断(INT(x.y))发出的请求,相应的中断标志位被锁定(PIEIFR(x.y)=1)。

步骤3为将中断请求从PIE发送到CPU,需要满足两个条件:

l  相应的中断使能位被使能(PIEIER(x.y)=1);

l  中断组中的应答寄存器的为被清零(PIEACKx=0)。

步骤4如步骤3中的条件均满足要求,则中断请求被送到CPU级,并且对应得应答再次置1PIEACKx=1),此时,中断请求进入CPU的通道被切断,这种状态一直保持直到用户清除此位。

步骤5CPU中断标志位被置1CPUIFRx=1),表明有一个CPU级中断等待被执行。

步骤6:如果CPU级中断被使能(CPU IERx=1DBGIER BIT x=1),且全局中断屏蔽被清0(INTM=0),则CPU将去执行INTx服务子程序。

步骤7CPU执行来自PIE级的中断后,自动完成现场保护,清除IER位,INTM位置1,并且清除EALLOW,然后准备执行中断服务子程序。

步骤8CPUPIE中调用相应的向量。

步骤9对于复用中断,PIE模块用PIEIERxPIEIFRx寄存器中的当前值去确定中断向量的地址。中断向量确定后,PIEIFRx.y被清零,CPU跳转到由从PIE取回的中断向量确定的服务程序入口地址执行。

二.PIE中断向量表

1  PIE中断向量表

 

INTx.8

INTx.7

INTx.6

INTx.5

INTx.4

INTx.3

INTx.2

INTx.1

INT1.y

WAKEINT

TINT0

ADCINT

XINT2

XINT1

 

SEQ2IN

SEQ1INT

INT2.y

 

 

EPWM6_TZINT

EPWM5_TZINT

EPWM4_TZINT

EPWM3_TZINT

EPWM2_TZINT

EPWM1_TZINT

INT3.y

 

 

EPWM6_ INT

EPWM5_INT

EPWM4_INT

EPWM3_INT

EPWM2_INT

EPWM1_INT

INT4.y

 

 

ECAP6_ INT

ECAP5_INT

ECAP4_INT

ECAP3_INT

ECAP2_INT

ECAP1_INT

INT5.y

 

 

 

 

 

 

EQEP2_INT

EQEP1_INT

INT6.y

 

 

MXINTA

MRINTA

MXINTB

MRINTB

SPITXINTA

SPIRXINTA

INT7.y

 

 

DINTCH6

DINTCH5

DINTCH4

DINTCH3

DINTCH2

DINTCH1

INT8.y

 

 

SCITXINTC

SCIRXINTC

 

 

I2CINT2A

I2CINT1A

INT9.y

ECAN1INTB

ECAN0INTB

ECAN1INTA

ECAN0INTA

SCITXINTB

SCIRXINTB

SCITXINTA

SCIRXINTA

INT10.y

 

 

 

 

 

 

 

 

INT11.y

 

 

 

 

 

 

 

 

INT12.y

LUF

LVF

 

XINT7

XINT6

XINT5

XINT4

XINT3

说明:空格是保留的。

 

三.正确使用PIE中断步骤:

步骤1:禁止全局中断(INTM=1)。

步骤2:清除PIEIERx.y)位,禁止特定外设的中断,可以禁止一个或同一组的多个中断。

步骤3:等待5个周期,这个延时是保证向CPU发出任何中断都可以在CPU IFR寄存器中断标志。

步骤4:清除外设中断组中的CPU IFRx位,这是在CPUIFR寄存器的安全操作。

步骤5:清除外设中断中的PIEACKx位。

步骤6:使能全局中断(INTM=0

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
F28027第三节课
【博文连载】PCIe扫盲——中断机制介绍(INTx)
CPU执行一条指令的简单过程(用红线动画指示各寄存器数据传送过程)
c++玫瑰花
CPU 指令
32位CPU的寄存器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服