实验五 定时器中断方式实验

上传人:灯火****19 文档编号:144141943 上传时间:2020-09-06 格式:PPT 页数:24 大小:757.50KB
返回 下载 相关 举报
实验五 定时器中断方式实验_第1页
第1页 / 共24页
实验五 定时器中断方式实验_第2页
第2页 / 共24页
实验五 定时器中断方式实验_第3页
第3页 / 共24页
实验五 定时器中断方式实验_第4页
第4页 / 共24页
实验五 定时器中断方式实验_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《实验五 定时器中断方式实验》由会员分享,可在线阅读,更多相关《实验五 定时器中断方式实验(24页珍藏版)》请在金锄头文库上搜索。

1、实验五 定时器中断方式实验,一、实验目的 二、实验原理 三、实验内容 四、实验思考题,一、实验目的,1掌握5402 DSP中断和中断的处理过程; 2. 掌握5402 DSP中断向量地址的修改; 3. 学习中断初始化编写方法 4. 学习中断向量表的编写,1.DSP中断 2.中断处理过程 3.中断向量地址的重新安排 4.DSP定时器中断的初始化方法 5.中断向量表的编写,二、实验原理,中断是由硬件或软件驱动的信号,使DSP暂停主程序而执行中断服务程序(ISR)。 软件驱动:来自程序指令(由INTR、TRAP或RESET产生) 硬件驱动:来自外部硬件中断; 或片上外设的内部硬件中断。 当多个硬件中断

2、同时触发时,DSP按照优先级别响应。,1.DSP中断,中断按可屏蔽性分类: 第一类:可屏蔽性中断,可以用软件进行屏蔽。 C54DSP最多支持16个用户可屏蔽中断,见IMR内容。 第二类:非屏蔽性中断。 包括所有的软件中断或两个外部硬件中断RS#和NMI#(这两中断也可以使用软件进行中断),1.DSP中断(续),IFR和IMR都是MMR寄存器。 IFR:当出现中断时,IFR相应中断标志位置1。 有4中情况中断标志位清0: (1)DSP复位(RS#为低电平); (2)中断得到处理; (3)将1写如IFR中的相应位(则相应位变成0),中断没有处理完就被清除。 (4)利用适当的中断号执行INTR指令,

3、相应的中断 标志清0。,中断标志寄存器IFR和中断屏蔽寄存器IMR,IMR:屏蔽外部或内部中断。 如果ST1中的INTM=0,IMR寄存器某位为1,就开放相应的中断。(INTM:中断模式,屏蔽或使能所有中断,INTM=0所有非屏蔽中断使能,INTM=1所有可屏蔽中断无效),中断标志寄存器IFR和中断屏蔽寄存器IMR,IFR和IMR寄存器位定义,详见:TMS320C54x DSP Reference Set:CPU and Peripherals SPRU131G.pdf,54x DSP处理中断分3个阶段: 第一个阶段:接受中断请求 第二个阶段:响应中断 第三个阶段:执行中断服务程序,2.中断处

4、理的过程:三个阶段,(1)当硬件或软件指令请求中断时,IFR中的相应位置1 (2)硬件中断名称见IFR,软件中断:INTR、TRAP和RESET。 INTR K:可用来执行任何一个中断服务程序。 K是中断向量位置,属不可屏蔽中断不受ST1的INTM影响。CPU响应INTR时,INTM置1关闭其他可屏蔽中断。 TRAP K:区别于INTR在于,不影响INTM。 RESET:不可屏蔽,影响ST0和ST1,不影响PMST。,第一个阶段:接受中断请求,对于软件中断或其他非屏蔽中断 ,CPU立即响应。 对于可屏蔽中断,只有满足如下条件才能响应: (1)优先级最高(同时出现的中断) (2)ST1中INTM

5、=0(所有非屏蔽中断使能) (3)IMR中相应位=1(开放相应的中断) CPU相应中断时,PC转向适当的地址取出中断向量,并发出中断响应信号IACK#,清除相应的中断标志。,第二个阶段:响应中断,响应中断后,CPU执行如下动作: (1)入栈。将PC值(返回地址)存储到数据存储器堆栈的栈顶; (2)将中断向量的地址加载到PC中; (3)在中断向量地址上取指,执行分支指令转到中断服务程序,并执行中断服务程序; (4)出栈。中断返回,从堆栈中弹出返回地址到PC。 (5)继续执行被中断了的程序。 C语言中断服务程序中(1)(3)由C编译器自动完成。,第三个阶段:执行中断服务程序,中断操作的流程图,本实

6、验中的C语言编写定时器中断服务程序:,2.中断处理的过程(续),interrupt void timer0_isr(void) if (xf_flag) asm( SSBX XF); xf_flag=0; asm( RSBX XF); xf_flag=1; ,2.中断处理的过程(续),count+; if (count= =50)/50*10=500ms board_led_toggle(BRD_LED0);/LED0 flash every 500ms count=0; ,2.中断处理的过程(续),将上述C程序编写的中断服务程序进行反汇编,可以看得出,在中断服务程序中加入了22个MMR寄存器

7、的保存(压栈)和恢复(出栈)指令。其中包括状态寄存器ST1。,DSP复位后,中断向量地址是可以更改的。 54x中断向量地址组成: 中断向量地址由IPTR(中断向量指针,9位,在PMST中)和左移2位后的中断向量序号(031,左移2位变成7位)组成。见131.pdf第189页Table 626. TMS320C5402 Interrupt Locations and Priorities。,3.中断向量地址的重新安排,中断向量地址的重新安排(续),例如:如果IPTR=0001h,DSP响应INT0#,PC得到的中断向量地址计算。 由于INT0#的序号为16(10h),左移2位后变为40h, 所以

8、中断向量地址0000 0000 1 100 0000B,即00C0h,根据中断处理的过程(三个阶段),可以对定时器中断进行初始化。一般包括以下步骤: (1)清除中断标志寄存器IFR中的中断标志; (2)设置中断屏蔽寄存器IMR中的相应屏蔽位为1,开放相应的中断; (3)如果需要,重新设置处理器工作模式寄存器PMST中的中断指针IPTR进行中断向量的重新定位; (4)设置INTM=0,开放全部可屏蔽中断。,4. DSP定时器中断的初始化方法,void interrupt_init(void) IFR|=0 x0ffff; /clear all interrupt flag IMR|=0 x000

9、8; /enable timer0 interrupt PMST=0 x4020;/set IPTR,new interrupt entry=0 x4000 asm( RSBX INTM ); /enable all interrupt ,4. DSP定时器中断的初始化方法(续),C语言编写Timer0的中断初始化,5.中断向量表的编写,中断向量表是DSP中断程序的重要组成部分,当有中断发生并且处于允许处理状态时,PC跳转到中断向量表中对应的中断地址。由于中断服务程序一般较长,通常中断向量表存放的是一个跳转指令,指向实际的中断服务程序。 5402 DSP共有30个中断向量,每个向量占4个字的位

10、置。使用的向量处一般用一条跳转指令转到相应的中断服务程序,其余的空位用NOP填充;未使用的向量直接用RETE中断返回指令返回,是为了防止意外进入未用中断,同样其余的空位用NOP填充。,本实验中使用的中断向量表,放在汇编文件vectors.asm中,5.中断向量表的编写(续),vectors.asm说明: .sect “.vectors”;定义的中断向量段,中断向量表即 ;放在此段当中。 .ref _c_int00 ;定义C语言的初始化入口地址。 .ref _timer0_isr;定义定时器0中断服务程序的入口地址 .align 0 x80;中断向量表必须对齐128字的页边界。 同时需要重新定义

11、中断向量指针IPTR和.CMD链接命令文件 (可查看.cmd文件)。,三、实验内容,1.组合给定内容的程序,利用示波器测量XF或LED0管脚的信号频率。 2.修改定时器中断服务程序,使三个发光二极管每隔1秒钟轮流点亮一次。 3.将中断向量地址安排在4080h,修改相关文件,并进行调试。 4.试编写外部中断1(INT1)的中断程序,使LED2伴随INT1脚输入的信号频率而闪烁(提高)。,1.5402复位时,IPTR=1FFh,查阅SPRU131G.pdf第189页 Table626,硬件复位后PC从哪个地址开始执行程序? 2.如果希望硬件复位后中断向量被移到0080h单元,则 IPTR应该赋值为多少? 3.利用定时器中断方式,周期地给XF位置1或清0,利用 示波器检测XF管脚,XF管脚能输出周期方波吗?为什么?如何解决?,四、实验思考题,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 中学实验

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号