微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > TMS320F24x的实时多中断任务处理

TMS320F24x的实时多中断任务处理

时间:04-02 来源:互联网 点击:
表1 TMS320F240 INT3级中断控制向量表
中断源名称DSP内核中断级向量地址外设向量寄存器地址外设向量偏移地址是否可屏蔽控制器模块中断功能
TPINT2INT3(0006H)

事件管理器中断组B
EVIVRB(7433H)002AHEV.GPT2定时器2周期中断
TCINT2002CHEV.GPT2定时器2比较中断
TUFINT2002DHEV.GPT2定时器2下溢中断
TOFINT2002EHEV.GPT2定时器2上溢中断
TPINT3002FHEV.GPT3定时器3周期中断
TCINT30030HEV.GPT3定时器3比较中断
TUFINT30031HEV.GPT3定时器3下溢中断
TOFINT30032HEV.GPT3定时器3上溢中断

2 TMS320F240实时多中断任务处理的软件实现

由于F240器件采用了多个中断源共享内核同一中断级的中断方式,不仅提供了更多的中断源,而且使得用户能方便地处理各种中断源的中断请求。

如图5所示,当系统有多中断任务产生时,一旦有中断任务被响应,则CPU终止当前正在执行的程序代码,转移至中断服务子程序并执行。中断服务子程序主要分两个步骤完成。



①转移至通用中断服务子程序(GISR-G功Interrupt Service Routine)。当中断级中的某一个中断被响应时,CPU将转移至相应的向量地址,并根据该地址转移至GISR。例如,若INT3中的一个中断被响应,则程序计数器(PC)值被存入栈顶,然后PC机中装入程序寄存器地址0006h。地址0006h和0007h中包含一条转移指令。该指令使CPU转移至 GISR。

②转移至特定中断服务子程序(SISR-Special Interrupt Service Routine)。当一个外设中断请求被响应时,外设产生一个相应于该特定中断事件的向量地址偏移量。该偏移量通常被锁存在系统中断向量寄存器(SYSIVR)或事件管理中断向量寄存器(EVIVRA/EVIVRB/EVIVRC)中。GISR必须读取存储在IVR中的值,确定具体的子中断源,并据此产生转移至SISR的转移目标地址,然后进行特定的中断处理。

在对SISR进行处理完毕之后,ISR以一条返回指令RET结束。该指令将把返回地址从堆栈弹出。然后,CPU继续执行被中断的代码序列。
如果对于某一中断级,并没有多中断源共享的情况,则直接在GISR中进行中断处理即可。此时,没有必要进入SISR进行子中断源的判断。另外,进入中断后,INTM位自动置1,以防止其它的可屏蔽中断。若想允许中断嵌套,则要在ISR中清除INTM位(CLRC INTM),在全局上重新使能可屏蔽中断,使得新的ISR得以嵌套。

下面结合一个具体的机器人DSP控制程序,给出DSP实时多中断任务处理的实例。在本机器人DSP控制程序中,一共要完成四个中断实时处理任务,并且涉及到了多个中断源共享DSP内核同一中断级的中断方式。中断服务程序结构框图如图6所示。



串行中断SCI占用了INT1第一级中断,完成DSP与上位机的通信任务。定时器T1中断占用了INT2第二级中断,完成传感器的位置信息采集和PID控制任务。而定时器T2中断和定时器T3中断则共用了INT3第三级中断,完成产生两路PWM波形的任务。定时器T2和定时器T3各自周期中断的向量偏移地址分别为002BH和002FH。当有INT3级中断申请时,在对应的中断服务程序(ISR)中判断中断的向量偏移地址,以此来确定具体是产生了定时器T2中断还是定时器T3中断,再转入定时器T2/T3相应的子中断服务程序。在中断服务程序中,需要根据在中断程序中对各种寄存器的使用情况,编写中断保护和中断恢复代码,即在进入ISR时,要对这些寄存器变量进行堆栈保护;在ISR完成时,要对这些寄存器变量进行堆栈恢复。另外,在编写中断服务程序时,要注意对各寄存器的中断标志位和中断屏蔽位进行适当的处理,为进入下一次中断做准备。以下即为给出的机器人中断服务程序的核心代码,主要对两个定时器中断源共享INT3中断级的中断处理进行详尽地阐述。对于INT1和 INT2这两个中断任务,由于无多中断源共享的问题,在进行中断处理时比较简单,直接进入相应的ISR即可。相应的中断处理程序请见网络补充版。

结语

在利用DSP进行数字化控制的过程中,必然要使用到较多的中断才能圆满完成对复杂控制系统的控制任务。F240作为DSP TMS320F24x系列的典型代表,掌握F240的中断处理方法,对TMS320F24x系列的TMS320F241/F243/C242以及 TMS320LF2406/LF2407等芯片同样具有参考意义。因此,这种处理方法还具有一定的通用性。笔者将该处理方法应用到基于 TMS320F240的主从遥控作业机器人控制系统的软件开发中。经实践证明,这能够满足机器人的实时多中断任务处理的要求,并取得了良好的实际效果。

参考文献

1. TMS320F/C24x DSP Controllers Reference Guide-CPU and Instruction Set 1999
2. 武汉力源电子股份有限公司 TMS320C2XX 数字信号处理器用户指南 2000
3. 章云.谢莉萍.熊红艳 DSP 控制器及其应用 2001
4. 张雄伟 DSP 芯片的原理与开发应用 1997

作 者:武汉化工学院 张琴 华中科技大学 向先波  
来 源:单片机与嵌入式系统应用 2003(12)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top