EDN China > 设计实例 > 微处理器与DSP > DSP应用 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

数字信号控制器中断系统及其设置方法

林志贵?? 姚芳琴?? 李敏?? 刘颖?? 天津工业大学?? 单片机与嵌入式系统应用?? 2015年06月15日 ?? 收藏0

4.MC56F8257中断设置过程

MC56F8257中断设置主要包括关闭总中断、设置中断屏蔽和开放总中断三个过程。中断的设置过程在主函数和中断服务程序中都得体现,但二者中设置过程有所差异。

主函数中的中断设置过程除了包括上述三个过程外,还包括开放模块中断及设置中断优先级,具体流程如下:一是关闭总中断,目的是实现后续各个模块中断设置过程中不被外界干扰;二是开放模块中断,如果需要某个模块中断,可以使能该模块中断;三是设置各模块中断优先级,主要应用于多个中断请求的情况。在这种情况下,根据应用环境决定各个模块中断优先顺序,设置中断优先级。如果不设置优先级,系统会自动产生默认的优先级;四是设置中断屏蔽,通过屏蔽一定级别的中断,使系统避免受其干扰;五开放总中断,在上述设置步骤完成后,通过开放总中断,使其设置有效。

中断服务程序中的中断设置包括关闭总中断、设置中断屏蔽和开放总中断三个过程。关闭总中断和开放总中断过程同主函数,设置中断屏蔽过程与主函数类似,但需要注意的是主函数与中断服务程序中的中断屏蔽设置中应保证所需的中断不被屏蔽。

5.测试及其分析

5.1 测试条件与环境

现以MC56F8257中的QSCI模块中断及CAN模块中断为例,说明上述中断设置方法及实施过程,并对其过程进行分析。选用QSCI模块的QSCI0传输数据,波特率设为9600。CAN模块接收数据,CAN通信频率为800KHz。程序编译调试环境为CodeWarrior 10.4。测试环境为串口调试工具SSCOM V2.0。

5.2 测试结果与分析

从不带中断优先级、带中断优先级和优先级嵌套三个方面,测试分析MC56F8257中断设置及实施过程。

(1)不带中断优先级

开放QSCI0接收中断,不设置其中断优先级,采用系统默认优先级2,不屏蔽该级别中断,其主函数和中断服务程序中的中断代码如表3所示。

表3  不带中断优先级且非屏蔽的QSCI0

从表3看出,代码DisableInterrupt()在主函数和中断服务程序中都有,但作用不一样。在主函数中的作用是禁止所有中断,为后续中断设置提供良好环境;中断服务程序中的作用是禁止其他中断,防止中断的嵌套。EnableQSCIReInt(0)使能QSCI0接收中断。EnInt(2)使能2,3级别的中断。主函数和中断服务程序中的EnableInterrupt()作用是开放总中断。

运行程序,从串口调试工具SSCOM V2.0发送字符“a”给MC56F8257,MC56F8257的QSCI0中断接收,并将接收的数据发送给PC机,显示串口调试工具窗口中,具体结果如图2(a)所示。

如果屏蔽QSCI0接收中断的默认优先级2,其主函数和QSCI接收中断服务程序中的中断代码有所不同,具体见表4所示。

表4  不带中断优先级且屏蔽的QSCI0接收中断相关代码

从表4看出,代码EnInt(3)屏蔽了中断优先级0、1和2,只允许优先级为3的中断,无法响应优先级为2的QSCI0接收中断。测试条件同上,其结果如图4(b)所示。从图4(b)看出,接收不到字符“a”。

(a)不屏蔽QSCI0接收中断的结果
(a)不屏蔽QSCI0接收中断的结果

(b) 屏蔽QSCI0接收中断的结果
(b) 屏蔽QSCI0接收中断的结果

图4 不带中断优先级的QSCI0中断接收结果

(2)带中断优先级

开放QSCI0接收中断,设置其中断优先级,不屏蔽该级别中断,其主函数和中断服务程序中的中断代码如表5所示。

表5  带中断优先级且非屏蔽的QSCI0接收中断相关代码

从表5看出,代码Qsci Priority的作用是设置QSCI0接收中断优先级为0;EnInt(0)使能0,1,2,3级别的中断。测试条件同上,其结果如图3(a)所示。从图3(a)看出,同样也能接收到字符“a”。

如果屏蔽QSCI0接收中断的优先级0,其主函数和QSCI接收中断服务程序中的中断代码有所不同,具体见表6所示。

表6  带中断优先级且屏蔽的QSCI0接收中断相关代码

从表6看出,代码EnInt(1) 屏蔽了中断优先级0,允许优先级为1,2,3的中断,因此QSCI0接收中断被屏蔽,其测试结果如图5(b)所示。从图5(b)看出,同样接收不到字符“a”。

(a)不屏蔽QSCI0接收中断的结果
(a)不屏蔽QSCI0接收中断的结果

 (b) 屏蔽QSCI0接收中断的结果
(b) 屏蔽QSCI0接收中断的结果

图5 带中断优先级的QSCI0中断接收结果

(3)优先级嵌套

同时开放QSCI0接收中断和CAN模块接收中断,并且前者优先级高于后者,其主函数和中断服务程序中的中断代码如表7所示。

表7 QSCI0接收中断优先级高于CAN模块接收中断

从表7看出,代码Qsci Priority设定QSCI0接收中断的优先级为1,CANPriority 设定CAN接收中断的优先级为0,即QSCI0接收中断的优先级高于CAN接收中断。

运行程序,当仅有CAN接收中断请求时,CAN接收中断服务程序接收字符串“CANMessage”,并通过QSCI0将该字符发送给串口调试工具,如图6(a)所示。如果在这个过程中,又有QSCI0接收中断请求,CPU则暂停CAN接收中断服务程序的执行,转向QSCI0接收中断服务程序处理,从串口调试工具窗口接收字符“a”,并发送给串口调试工具窗口。将QSCI0接收中断服务程序执行完成后,返回CAN接收中断服务程序继续执行,其结果如图6(a)所示。

如果开放QSCI0接收中断和CAN模块接收中断,并且前者优先级低于后者,其主函数和中断服务程序中的中断代码如表8所示。

表8 QSCI0接收中断优先级低于CAN模块接收中断的相关代码

从表8看出,代码Qsci Priority设定QSCI0接收中断的优先级为0,CANPriority设定CAN接收中断的优先级为1,即QSCI0接收中断的优先级低于CAN接收中断。

运行程序,当仅有CAN接收中断请求时,CAN接收中断服务程序接收字符串“CANMessage”,并通过QSCI0将该字符发送给串口调试工具,如图6(b)所示。如果在这个过程中,又有QSCI0接收中断请求,CPU则不会响应其请求,继续执行CAN接收中断服务程序,继续发送字符串“CANMessage” 给串口调试工具,如图6(b)所示。

(a) QSCI0接收中断优先级高于CAN模块接收中断
(a) QSCI0接收中断优先级高于CAN模块接收中断

 (b) QSCI0接收中断优先级低于CAN模块接收中断
(b) QSCI0接收中断优先级低于CAN模块接收中断

图6 优先级嵌套时中断处理结果

6.总结

本文以MC56F8257为例,分析DSC中断系统,该系统具有处理多达67个中断源的能力,并能够给这些中断源赋予不同的优先级,实现中断嵌套,并提供标准和快速中断处理两种模式,这些特点促进其广泛被应用。

上述特点也带来中断设置的灵活性,但是如果设置不当,会出现错误。本文在分析中断系统的同时给出其中断设置方法及过程,并详细分析中断优先级设置过程及注意事项。

最后,以MC56F8257中的QSCI模块中断及CAN模块中断为例,从不带中断优先级、带中断优先级和优先级嵌套三个方面,分析中断设置过程及响应结果,结果分析进一步验证MC56F8257中断处理具有屏蔽及优先级可配置等特点。

【分页导航】


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

状态寄存器? 控制寄存器? DSP? CPU?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈