《实验五 定时器中断方式实验.pptx》由会员分享,可在线阅读,更多相关《实验五 定时器中断方式实验.pptx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、实验目的一、实验目的1 1掌握掌握5402 5402 DSPDSP中断和中断的处理过程;中断和中断的处理过程;2.2.掌握掌握5402 5402 DSPDSP中断向量地址的修改;中断向量地址的修改;3.3.学习中断初始化编写方法学习中断初始化编写方法4.4.学习中断向量表的编写学习中断向量表的编写第1页/共24页1.1.DSPDSP中断中断2.2.中断处理过程中断处理过程3.3.中断向量地址的重新安排中断向量地址的重新安排4.4.DSPDSP定时器中断的初始化方法定时器中断的初始化方法 5.5.中断向量表的编写中断向量表的编写 二、实验原理二、实验原理第2页/共24页 中断是由硬件或软件驱
2、动的信号,使中断是由硬件或软件驱动的信号,使DSPDSP暂停主程序暂停主程序而执行中断服务程序而执行中断服务程序(ISR)ISR)。软件驱动:软件驱动:来自程序指令来自程序指令(由由INTRINTR、TRAPTRAP或或RESETRESET产生产生)硬件驱动:硬件驱动:来自外部硬件中断;来自外部硬件中断;或片上外设的内部硬件中断。或片上外设的内部硬件中断。当多个硬件中断同时触发时,当多个硬件中断同时触发时,DSPDSP按照优先级别响应。按照优先级别响应。1.1.DSPDSP中断中断第3页/共24页中断按可屏蔽性分类:中断按可屏蔽性分类:第一类:第一类:可屏蔽性中断可屏蔽性中断,可以用软件进行屏
3、蔽。,可以用软件进行屏蔽。C54DSP C54DSP最多支持最多支持1616个用户可屏蔽中断,见个用户可屏蔽中断,见IMRIMR内容。内容。第二类:第二类:非屏蔽性中断非屏蔽性中断。包括所有的软件中断或两个外部硬件中断包括所有的软件中断或两个外部硬件中断RS#RS#和和NMI#(NMI#(这两中断也可以使用软件进行中断这两中断也可以使用软件进行中断)1.1.DSPDSP中断中断(续续)第4页/共24页IFRIFR和和IMRIMR都是都是MMRMMR寄存器。寄存器。IFRIFR:当出现中断时,当出现中断时,IFRIFR相应中断标志位置相应中断标志位置1 1。有有4 4中情况中断标志位清中情况中断
4、标志位清0 0:(1)(1)DSPDSP复位复位(RS#RS#为低电平为低电平);(2)(2)中断得到处理;中断得到处理;(3)(3)将将1 1写如写如IFRIFR中的相应位中的相应位(则相应位变成则相应位变成0)0),中断,中断没有处理完就被清除。没有处理完就被清除。(4)(4)利用适当的中断号执行利用适当的中断号执行INTRINTR指令,相应的中断指令,相应的中断标志清标志清0 0。中断标志寄存器中断标志寄存器IFRIFR和中断屏蔽寄存器和中断屏蔽寄存器IMRIMR第5页/共24页IMRIMR:屏蔽外部或内部中断。屏蔽外部或内部中断。如果如果ST1ST1中的中的INTM=0INTM=0,I
5、MRIMR寄存器某位为寄存器某位为1 1,就开放,就开放相应的中断。相应的中断。(INTM(INTM:中断模式,屏蔽或使能所有中中断模式,屏蔽或使能所有中断,断,INTM=0INTM=0所有非屏蔽中断使能,所有非屏蔽中断使能,INTM=1INTM=1所有可屏所有可屏蔽中断无效蔽中断无效)中断标志寄存器中断标志寄存器IFRIFR和中断屏蔽寄存器和中断屏蔽寄存器IMRIMR第6页/共24页IFRIFR和和IMRIMR寄存器位定义寄存器位定义详见:详见:TMS320C54x DSP Reference Set:CPU and Peripherals SPRU131G.pdfTMS320C54x DS
6、P Reference Set:CPU and Peripherals SPRU131G.pdf第7页/共24页54x DSP54x DSP处理中断分处理中断分3 3个阶段:个阶段:第一个阶段:接受中断请求第一个阶段:接受中断请求第二个阶段:响应中断第二个阶段:响应中断第三个阶段:执行中断服务程序第三个阶段:执行中断服务程序 2.2.中断处理的过程:三个阶段中断处理的过程:三个阶段第8页/共24页(1)(1)当硬件或软件指令请求中断时,当硬件或软件指令请求中断时,IFRIFR中的相应位置中的相应位置1 1(2)(2)硬件中断名称见硬件中断名称见IFRIFR,软件中断:软件中断:INTRINTR
7、、TRAPTRAP和和RESETRESET。INTR KINTR K:可用来执行任何一个中断服务程序。可用来执行任何一个中断服务程序。K K是中断向量位置,属不可屏蔽中断不受是中断向量位置,属不可屏蔽中断不受ST1ST1的的INTMINTM影响。影响。CPUCPU响应响应INTRINTR时,时,INTMINTM置置1 1关闭其他可屏蔽中断。关闭其他可屏蔽中断。TRAP KTRAP K:区别于区别于INTRINTR在于,不影响在于,不影响INTMINTM。RESETRESET:不可屏蔽,影响不可屏蔽,影响ST0ST0和和ST1ST1,不影响不影响PMSTPMST。第一个阶段:接受中断请求第一个阶
8、段:接受中断请求第9页/共24页对于对于软件中断或其他非屏蔽中断软件中断或其他非屏蔽中断 ,CPUCPU立即响应。立即响应。对于对于可屏蔽中断可屏蔽中断,只有满足如下条件才能响应:,只有满足如下条件才能响应:(1)(1)优先级最高优先级最高(同时出现的中断同时出现的中断)(2)(2)ST1ST1中中INTM=0(INTM=0(所有非屏蔽中断使能所有非屏蔽中断使能)(3)(3)IMRIMR中相应位中相应位=1(=1(开放相应的中断开放相应的中断)CPU CPU相应中断时,相应中断时,PCPC转向适当的地址取出中断向量,转向适当的地址取出中断向量,并发出中断响应信号并发出中断响应信号IACK#IA
9、CK#,清除相应的中断标志。清除相应的中断标志。第二个阶段:响应中断第二个阶段:响应中断第10页/共24页响应中断后,响应中断后,CPUCPU执行如下动作:执行如下动作:(1)(1)入栈。将入栈。将PCPC值值(返回地址返回地址)存储到数据存储器堆栈存储到数据存储器堆栈的栈顶;的栈顶;(2)(2)将中断向量的地址加载到将中断向量的地址加载到PCPC中;中;(3)(3)在中断向量地址上取指,执行分支指令转到中断在中断向量地址上取指,执行分支指令转到中断服务程序,并执行中断服务程序;服务程序,并执行中断服务程序;(4)(4)出栈。中断返回,从堆栈中弹出返回地址到出栈。中断返回,从堆栈中弹出返回地址
10、到PCPC。(5)(5)继续执行被中断了的程序。继续执行被中断了的程序。C C语言中断服务程序中语言中断服务程序中(1)(3)(1)(3)由由C C编译器自动完成。编译器自动完成。第三个阶段:执行中断服务程序第三个阶段:执行中断服务程序第11页/共24页中断操作的流程图中断操作的流程图第12页/共24页本实验中的本实验中的C C语言编写定时器中断服务程序:语言编写定时器中断服务程序:2.2.中断处理的过程中断处理的过程(续续)interrupt interrupt voidvoid timer0_isr(timer0_isr(voidvoid)if(xf_flag)if(xf_flag)asm
11、(asm(SSBX XF SSBX XF););xf_flag=0;xf_flag=0;asm(asm(RSBX XF RSBX XF););xf_flag=1;xf_flag=1;第13页/共24页2.2.中断处理的过程中断处理的过程(续续)count+;count+;if(count=50)if(count=50)/50*10=500ms/50*10=500ms board_led_toggle(BRD_LED0);board_led_toggle(BRD_LED0);/LED0 flash every 500ms/LED0 flash every 500mscount=0;count=0
12、;第14页/共24页2.2.中断处理的过程中断处理的过程(续续)将将上上述述C C程程序序编编写写的的中中断断服服务务程程序序进进行行反反汇汇编编,可可以以看看得得出出,在在中中断断服服务务程程序序中中加加入入了了2222个个MMRMMR寄寄存存器器的的保保存存(压压栈栈)和和恢恢复复(出出栈栈)指指令令。其其中中包包括括状状态态寄寄存存器器ST1ST1。第15页/共24页DSPDSP复位后,中断向量地址是可以更改的。复位后,中断向量地址是可以更改的。54x54x中断向量地址组成:中断向量地址组成:中断向量地址由中断向量地址由IPTR(IPTR(中断向量指针,中断向量指针,9 9位,在位,在P
13、MSTPMST中中)和左移和左移2 2位后的中断向量序号位后的中断向量序号(031(031,左移,左移2 2位变成位变成7 7位位)组成。见组成。见131.131.pdfpdf第第189189页页Table 626.TMS320C5402 Interrupt Locations and Priorities。3.3.中断向量地址的重新安排中断向量地址的重新安排第16页/共24页中断向量地址的重新安排中断向量地址的重新安排(续续)例如:例如:如果如果IPTR=0001hIPTR=0001h,DSPDSP响应响应INT0#INT0#,PCPC得到的中得到的中断向量地址计算。断向量地址计算。由于由于
14、INT0#INT0#的序号为的序号为16(1016(10h)h),左移左移2 2位后变为位后变为4040h h,所以中断向量地址所以中断向量地址0000 0000 1 100 00000000 0000 1 100 0000B B,即即0000C0hC0h第17页/共24页根据中断处理的过程根据中断处理的过程(三个阶段三个阶段),可以对定时器中断,可以对定时器中断进行初始化。一般包括以下步骤:进行初始化。一般包括以下步骤:(1)(1)清除中断标志寄存器清除中断标志寄存器IFRIFR中的中断标志;中的中断标志;(2)(2)设设置置中中断断屏屏蔽蔽寄寄存存器器IMRIMR中中的的相相应应屏屏蔽蔽位
15、位为为1 1,开开放相应的中断;放相应的中断;(3)(3)如如果果需需要要,重重新新设设置置处处理理器器工工作作模模式式寄寄存存器器PMSTPMST中的中断指针中的中断指针IPTRIPTR进行中断向量的重新定位;进行中断向量的重新定位;(4)(4)设置设置INTM=0INTM=0,开放全部可屏蔽中断。开放全部可屏蔽中断。4.4.DSPDSP定时器中断的初始化方法定时器中断的初始化方法 第18页/共24页void void interrupt_init(void)interrupt_init(void)IFR|=0 x0ffff;IFR|=0 x0ffff;/clear all interrup
16、t flag/clear all interrupt flag IMR|=0 x0008;IMR|=0 x0008;/enable timer0 interrupt/enable timer0 interrupt PMST=0 x4020;PMST=0 x4020;/set IPTR/set IPTR,new interrupt entry=0 x4000new interrupt entry=0 x4000 asmasm(RSBX INTM RSBX INTM););/enable all interrupt/enable all interrupt 4.4.DSPDSP定时器中断的初始化方
17、法定时器中断的初始化方法(续续)C C语言编写语言编写Timer0Timer0的中断初始化的中断初始化第19页/共24页5.5.中断向量表的编写中断向量表的编写 中中断断向向量量表表是是DSPDSP中中断断程程序序的的重重要要组组成成部部分分,当当有有中中断断发发生生并并且且处处于于允允许许处处理理状状态态时时,PCPC跳跳转转到到中中断断向向量量表表中中对对应应的的中中断断地地址址。由由于于中中断断服服务务程程序序一一般般较较长长,通通常常中中断断向向量量表表存存放放的是一个跳转指令,指向实际的中断服务程序。的是一个跳转指令,指向实际的中断服务程序。5402 5402 DSPDSP共共有有3
18、030个个中中断断向向量量,每每个个向向量量占占4 4个个字字的的位位置置。使使用用的的向向量量处处一一般般用用一一条条跳跳转转指指令令转转到到相相应应的的中中断断服服务务程程序序,其其余余的的空空位位用用NOPNOP填填充充;未未使使用用的的向向量量直直接接用用RETERETE中中断断返返回回指指令令返返回回,是是为为了了防防止止意意外外进进入入未未用用中中断断,同同样样其其余余的的空空位位用用NOPNOP填充。填充。本实验中使用的中断向量表,放在汇编文件本实验中使用的中断向量表,放在汇编文件vectors.asmvectors.asm中中 第20页/共24页5.5.中断向量表的编写中断向量
19、表的编写(续续)vectors.asmvectors.asm说明:说明:.sectsect “.vectors.vectors”;定义的中断向量段,中断向量表即定义的中断向量段,中断向量表即 ;放在此段当中。;放在此段当中。.refref _c_int00 _c_int00 ;定义定义C C语言的初始化入口地址。语言的初始化入口地址。.refref _timer0_isr _timer0_isr;定义定时器定义定时器0 0中断服务程序的入口地址中断服务程序的入口地址.alignalign 0 x80 0 x80;中断向量表必须对齐中断向量表必须对齐128128字的页边界。字的页边界。同时需要重
20、新定义中断向量指针同时需要重新定义中断向量指针IPTRIPTR和和.CMDCMD链接命令文件链接命令文件(可查看可查看.cmdcmd文件文件)。第21页/共24页三、实验内容三、实验内容1.1.组组合合给给定定内内容容的的程程序序,利利用用示示波波器器测测量量XFXF或或LED0LED0管脚的信号频率。管脚的信号频率。2.2.修修改改定定时时器器中中断断服服务务程程序序,使使三三个个发发光光二二极极管管每每隔隔1 1秒钟轮流点亮一次。秒钟轮流点亮一次。3.3.将中断向量地址安排在将中断向量地址安排在40804080h h,修改相关文件,并修改相关文件,并进行调试。进行调试。4.4.试编写外部中
21、断试编写外部中断1(1(INT1)INT1)的中断程序,使的中断程序,使LED2LED2伴随伴随INT1INT1脚输入的信号频率而闪烁脚输入的信号频率而闪烁(提高提高)。第22页/共24页1.1.54025402复位时,复位时,IPTR=1FFhIPTR=1FFh,查阅查阅SPRU131G.pdfSPRU131G.pdf第第189189页页Table6Table62626,硬件复位后硬件复位后PCPC从哪个地址开始执行程序?从哪个地址开始执行程序?2.2.如果希望硬件复位后中断向量被移到如果希望硬件复位后中断向量被移到00800080h h单元,则单元,则IPTRIPTR应该赋值为多少?应该赋值为多少?3.3.利用定时器中断方式,周期地给利用定时器中断方式,周期地给XFXF位置位置1 1或清或清0 0,利用,利用示波器检测示波器检测XFXF管脚,管脚,XFXF管脚能输出周期方波吗?为什么管脚能输出周期方波吗?为什么?如何解决?如何解决?四、实验思考题四、实验思考题第23页/共24页谢谢您的观看!第24页/共24页
限制150内