已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三:dsp 的定时器和外中断定时器:一实验目的1通过实验熟悉vc5509a 的定时器;2掌握vc5509a 定时器的控制方法;3掌握vc5509a 的中断结构和对中断的处理流程;4学会c 语言中断程序设计,以及运用中断程序控制程序流程。二实验设备计算机,icetek-vc5509-a 实验箱(或icetek 仿真器+icetekvc5509-a 系统板+相关连线及电源)。三实验原理1通用定时器介绍及其控制方法(详见spru595b.pdf):tms320vc5509a 内部有两个20 位通用定时器(gp):* 每个通用定时器包括:- 一个16 位的减计数的计数器tim;- 一个16 位的定时器周期寄存器prd;- 一个16 位的定时器控制寄存器tcr;- 一个16 位的定时器预定标寄存器pscr;* pscr 寄存器说明:15 10 9 6 5 4 3 0reserved psc reserved tddrpsc: 4 位的预定标值,与tim 共同组成20 位的定时计数器.tddr: 预定标周期寄存器(在需要时重装入psc 的值)tcr 寄存器说明(详见spru595b.pdf)2中断响应过程(详见spru595b.pdf):外设事件要引起cpu 中断,必须保证:ier 中相应使能位被使能,ifr 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1 会引起tint中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。3中断程序设计:- 程序中应包含中断向量表,vc5509a 默认向量表从程序区0 地址开始存放,根据ipvd 和ipvh 的值确定向量表的实际地址。- 注意观察程序中intr_init()函数的定义部分,其中ipvd 和ipvh 的值都为0x0d0;同时观察配置文件icetekvc5509-ae.cmd 中的vect 段描述中o=0x0d000。- 向量表中每项为8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即cpu 复位操作完成后自动进入执行的程序入口。- 服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务5实验程序分析:本实验设计的程序是在上实验3.1 基础上修改得来,由于实验3.1 控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。实验程序的工程中包含了两种源代码,主程序采用c 语言编制利于控制,中断向量表在vector.asm 汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。实验程序的c 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制dsp 状态时的方法,同样的方法也能提高c 语言部分程序的计算效率四实验步骤1实验准备:连接实验设备:请参看本书第三部分、第一章、二。关闭实验箱上扩展模块和信号源电源开关。2设置code composer studio 3.1 在硬件仿真(emulator)方式下运行:请参看本书第三部分、第一章、四、2。3启动code composer studio 3.1:请参看本书第三部分、第一章、五、2。选择菜单debugreset cpu。4打开工程文件:打开菜单“project”的“open”项;选择c:icetekvc5509aevc5509aelab0303-timer目录中的“timer.pjt”。在项目浏览器中,双击main.c,激活main.c 文件,浏览该文件的内容,理解各语句作用。打开icetekvc5509-ae.cmd,对照vector.asm 源程序学习中断向量表的写法。5编译、下载程序。6运行程序,观察结果。7改变timer_init()函数里*prd0 = 0x0ffff 为 “=0x0fff ”;重复步骤5,6 观察实验现象。五实验代码#include myapp.h/ 定义指示灯寄存器地址和寄存器类型#define lbds (*(unsigned int *)0x400001)void intr_init( void );void timer_init(void);int ncount;main()ncount=0;pll_init(40);sdram_init();lbds=0;intr_init();timer_init();while ( 1 )void interrupt timer()ncount+; ncount%=16;if ( ncount=0 )lbds=1;void intr_init( void )ivpd=0xd0;ivph=0xd0;ier0=0x10;dbier0 =0x10;ifr0=0xffff;asm( bclr intm);void timer_init(void) ioport unsigned int *tim0; ioport unsigned int *prd0; ioport unsigned int *tcr0; ioport unsigned int *prsc0; tim0 = (unsigned int *)0x1000;prd0 = (unsigned int *)0x1001;tcr0 = (unsigned int *)0x1002;prsc0 = (unsigned int *)0x1003; *tcr0 = 0x04f0; *tim0 = 0; *prd0 = 0x0ffff; *prsc0 = 2; *tcr0 = 0x00e0;六实验结果- 指示灯在定时器的定时中断中按照设计定时闪烁。- 使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如dsp 定时启动a/d 转换,日常生活中的计时器计数、空调的定时启动和关闭等。- 在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。外部中断:一实验目的1通过实验熟悉vc5509a 的中断响应过程。2学会c 语言中断程序设计,以及运用中断程序控制程序流程。二实验设备计算机,icetek-vc5509-a 实验箱(或icetek 仿真器+icetekvc5509-a 系统板+相关连线及电源)。三实验原理1中断及中断处理过程:中断简介:中断是一种由硬件或软件驱动的信号,dsp 在接到此信号时,将当前程序悬挂起来,转去执行另外一个任务,这个任务我们称为中断服务程序(isr)。tms320c55(c55x) dsp可支持32 个isr,可由硬件或软件触发。所有的c55x 中断,可以分成可屏蔽中断和不可屏蔽中断两种,软件中断是不可屏蔽的。dsp 处理中断的步骤:接收中断请求。请求由软件或硬件发出。响应中断请求。对于可屏蔽中断,需要满足若干条件,才发生响应;而对于不可屏蔽中断,则立即响应。准备执行中断服务程序。- 完成当前正在执行的指令;将进入流水线但还未解码的指令清除。- 自动保存若干寄存器的值到数据堆栈和系统堆栈。- 取得用户定义的中断向量表中当前中断向量,中断向量指向中断服务程序入口。执行中断服务程序。中断服务程序包含中断返回指令,这样返回时可以出栈以前保存的关键寄存器数据,从而恢复中断服务程序执行前的现场。中断向量表:中断向量表的构成请参见ti 的文档sprs295d.pdf 之3.11。中断向量表的地址可以由用户指定。外中断:tms320c5509 可以响应int0-int4 五个外中断。2icetek-ctr 板的键盘接口:显示/控制模块icetek-ctr 通过接口p8 连接小键盘,接收小键盘传送的扫描码,并在每个扫描码结束后保存,同时向dsp 的int2 发送中断信号;当dsp 读键盘时将扫描码送到数据总线上。小键盘上每次按下一个键将产生2 个扫描码、2 次中断。3程序编制:由一个不含中断处理程序的工程通过改写加入中断处理程序部分大致需要如下操作(假设使用int2): 编制中断服务程序:可以用c 语言程序实现(参见实验程序),编写单独的一个函数xint,此函数使用interrupt 修饰,没有参数和返回值。 构造中断向量表:可以用汇编语言构造,编写一个汇编语言模块程序vector.asm,在程序头上声明段名为“.vectors”;定义外部标号_xint,由于汇编语言要使用c 语言程序中定义的标号xint,需要在这个标号前加底线;在中断向量表该中断对应位置(int2)写汇编语言语句跳转语句。 修改连接命令文件:在memory 小节中开辟单独的地址段用以存放中断向量表;在sections 小节中指定.vectors 段到前步开设的内存段中。 主程序中进行初始化设置:定位中断向量表,使能中断,清中断等。四实验步骤1实验准备: 连接实验设备:请参看本书第三部分、第一章、二。 连接实验箱附带的键盘的ps2 插头到icetek-ctr 的“键盘接口”p8。 将icetek-ctr 板的供电电源开关拨动到“开”的位置。开关位置请参见第二部分、第一章、三、“扩展模块电源开关及其指示灯”。2设置code composer studio 3.1 在硬件仿真(emulator)方式下运行:请参看本书第三部分、第一章、四、2。3启动code composer studio 3.1:请参看本书第三部分、第一章、五、2:选择菜单debugreset cpu。4打开工程文件:工程目录:c:icetekvc5509aes60vc5509aelab0304-xintv60xint.pjt。浏览main.c 文件的内容,理解各语句作用。打开icetekvc5509-ae.cmd,对照vector.asm 源程序学习中断向量表的写法。5编译、下载程序。6运行程序,观察结果:运行程序,按一下小键盘上任意一个键,注意观察icetek-ctr 板上指示灯闪烁的情况。7观察中断函数的执行:选择“debug”菜单中“halt”暂停运行程序,在xint 程序中的语句上加软件断点,重新运行程序(选择“debug”菜单中“run”),观察何时程序停留在断点上。五实验代码#include myapp.h#include icetek-vc5509-edu.h#include scancode.hvoid initmcbsp();void intr_init( void );void time_init(void);int ncount;main()ncount=0;ncount=*(int *)0x10000;asm( nop );pll_init(20);sdram_init();intr_init();initmcbsp();initctr();ctrlr=0xc8;/ 使能io/ctrclkey=0;while ( 1 )void initmcbsp()/ iopin: mcbsp1.fsx s15 /spcr2.xrst_=0,pcr.xioen=1,pcr.fsxm=1,pcr.fsxp=0/1spcr2_1&=0x0f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度农田水利建设土方运输合同2篇
- 2024年度软件开发合同含社保缴纳及技术支持3篇
- 2024年度饲料原料知识产权保护与购销合同3篇
- 2024年度租赁合同:商业地产长期租赁与合作2篇
- 2024年商业广告牌制作安装合同3篇
- 2024年度土地流转金融服务合同协议书3篇
- 2024年度租赁合同中的维修责任与义务2篇
- 2024年度XX单位员工劳动争议处理与和解合同3篇
- 2024年标准版垫资借款合同范本版
- 2024年保险居间代理协议3篇
- 离子束加工教学课件
- 阅读理解真题汇编(30篇)Ⅴ-江苏地区2022-2023八年级英语上学期期末备考(含答案解析)
- 刺猬养殖研究报告-中国刺猬养殖行业市场分析及发展前景研究报告2024年
- 2024领导力培训课程ppt完整版含内容
- 初中语文部编版九年级上册期末综合性学习专项练习(2022秋)(附参考答案和解析)
- 工程项目监理技术创新与应用研究
- 纸质文物保护修复的传统及现代技术研究
- 中国心力衰竭病人高钾血症管理专家共识解读
- 148个常用偏旁及含义
- 湖南省六年级上册数学期末试卷(含答案)
- 私人影院管理制度
评论
0/150
提交评论