数字信号控制器的中断系统分析与实现方法
中断设置除了包括上述三个过程外,还包括开放模块中断及设置中断优先级,具体流程如下:一是关闭总中断,目的是实现后续各个模块中断设置过程中不被外界干扰。二是开放模块中断,如果需要某个模块中断,可以使能该模块中断。三是设置各模块中断优先级,主要应用于多个中断请求的情况。在这种情况下,根据应用环境决定各个模块中断优先顺序,设置中断优先级,如果不设置优先级,则系统会自动产生默认的优先级。四是设置中断屏蔽,通过屏蔽一定级别的中断,使系统避免受其干扰。五是开放总中断,在上述设置步骤完成后,通过开放总中断,使其设置有效。
中断服务程序中的中断设置包括关闭总中断、设置中断屏蔽和开放总中断三个过程。关闭总中断和开放总中断过程同主函数,设置中断屏蔽过程与主函数类似,但需要注意的是,主函数与中断服务程序中的中断屏蔽设置应保证所需的中断不被屏蔽。
4 测试及其分析
4.1 测试条件与环境
现以MC56F8257中的QSCI模块中断及CAN模块中断为例,说明上述中断设置方法及实施过程,并对其过程进行分析。选用QSCI模块的QSCI0传输数据,波特率设为9 600 bps。CAN模块接收数据,CAN通信频率为800 kHz。程序编译调试环境为CodeWarrior 10.4,测试环境为串口调试工具SSCOM V2.0。
4.2 测试结果与分析
从不带中断优先级、带中断优先级和优先级嵌套三个方面,测试分析MC56F8257中断设置及实施过程。
(1) 不带中断优先级
开放QSCI0接收中断,不设置其中断优先级,采用系统默认优先级2,不屏蔽该级别中断,其主函数和中断服务程序中的中断代码略——编者注。
运行程序,从串口调试工具SSCOM V2.0发送字符“a”给MC56F8257,MC56F8257的QSCI0中断接收,并将接收的数据发送给PC机,最终接收到字符“a”。
如果屏蔽QSCI0接收中断的默认优先级为2,其主函数和QSCI接收中断服务程序中的中断代码有所不同,相关代码略——编者注。
测试条件同上,其结果为接收不到字符“a”。
(2) 带中断优先级
开放QSCI0接收中断,设置其中断优先级,不屏蔽该级别中断,其主函数和中断服务程序中的中断代码略——编者注。
测试结果同样也能接收到字符“a”。
如果屏蔽QSCI0接收中断的优先级0,其主函数和QSCI接收中断服务程序中的中断代码有所不同,具体相关代码略——编者注。
其测试结果同样是接收不到字符“a”。
(3) 优先级嵌套
同时开放QSCI0接收中断和CAN模块接收中断,并且前者优先级高于后者,其主函数和中断服务程序中的中断代码略——编者注。
运行程序,当仅有CAN接收中断请求时,CAN接收中断服务程序接收字符串“CANMessage”,并通过QSCI0将该字符发送给串口调试工具。如果在这个过程中,又有QSCI0接收中断请求,则CPU暂停CAN接收中断服务程序的执行,转向QSCI0接收中断服务程序处理,从串口调试工具窗口接收字符“a”,并发送给串口调试工具窗口。将QSCI0接收中断服务程序执行完成后,返回CAN接收中断服务程序继续执行。
如果开放QSCI0接收中断和CAN模块接收中断,并且前者优先级低于后者,其主函数和中断服务程序中的中断代码略——编者注。
运行程序,当仅有CAN接收中断请求时,CAN接收中断服务程序接收字符串“CANMessage”,并通过QSCI0将该字符发送给串口调试工具。如果在这个过程中,又有QSCI0接收中断请求,则CPU不会响应其请求,继续执行CAN接收中断服务程序,继续发送字符串“CANMessage” 给串口调试工具。
结语
本文以MC56F8257为例,分析DSC中断系统,该系统具有处理多达67个中断源的能力,并能够给这些中断源赋予不同的优先级,实现中断嵌套,并提供标准和快速中断处理两种模式,这些特点可使该系统被广泛应用。
上述特点也带来中断设置的灵活性,但是如果设置不当,会出现错误。本文在分析中断系统的同时给出其中断设置方法及过程,并详细分析中断优先级设置过程及注意事项。
最后,以MC56F8257中的QSCI模块中断及CAN模块中断为例,从不带中断优先级、带中断优先级和优先级嵌套三个方面,分析中断设置过程及响应结果,结果进一步验证了MC56F8257中断处理具有屏蔽及优先级可配置等特点。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)