DSP原理与应用实验报告.docx

上传人:doc321 文档编号:12824844 上传时间:2021-12-06 格式:DOCX 页数:8 大小:199.77KB
返回 下载 相关 举报
DSP原理与应用实验报告.docx_第1页
第1页 / 共8页
DSP原理与应用实验报告.docx_第2页
第2页 / 共8页
DSP原理与应用实验报告.docx_第3页
第3页 / 共8页
DSP原理与应用实验报告.docx_第4页
第4页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《DSP原理与应用实验报告.docx》由会员分享,可在线阅读,更多相关《DSP原理与应用实验报告.docx(8页珍藏版)》请在三一文库上搜索。

1、DSP原理与应用定时器姓名班级0120808专业电子信息工程2011 年 12月DSP的定时器实验报告一、实验目的1. 通过实验熟悉 VC5509A的定时器;2. 掌握 VC5509A定时器的控制方法;3. 掌握 VC5509A 的中断结构和对中断的处理流程;4. 学会 C 语言中断程序设计,以及运用中断程序控制程序流程。二、实验设备计算机, ICETEK-VC5509-A实验箱(或 ICETEK 仿真器 +ICETEKVC5509-A 系统板 +相关连线及电源)。三、实验原理1. 通用定时器介绍及其控制方法TMS320VC5509A部有两个 20位通用定时器( GP):* 每个通用定时器包括

2、:-一个 16位的减计数的计数器一个 16位的定时器周期寄存器PRD;一个 16位的定时器控制寄存器TCR;-一个 16位的定时器预定标寄存器TIM ;PSCR;2. 中断响应过程外设事件要引起 CPU 中断,必须保证:IER 中相应使能位被使能, IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器 1 会引起 TINT 中断) ,程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。3. 中断程序设计- 程序中应包含中断向量表, VC5509A默认向量表从

3、程序区 0 地址开始存放,根据 IPVD 和 IPVH 的值确定向量表的实际地址。- 注意观察程序中 INTR_init() 函数的定义部分,其中 IPVD 和 IPVH 的值都为 0x0d0;同时观察配置文件 ICETEKVC5509-AE.cmd 中的 VECT 段描述中 o=0x0d000 。- 向量表中每项为 8 个字, 存放一个跳转指令, 跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即CPU复位操作完成后自动进入执行的程序入口。- 服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。4. 定时器中断实验程序流程图5.1定时器结构框图T=clo

4、ckin*(PRD+1)*(TDDR+1)5.2时钟部分定时器的工作时钟可以来自 DSP部的 CPU时钟,也可以来自从 TIN/OUT管脚输入的外部时钟。具体时钟源的选择和 TIN/TOUT脚的功能由控制寄存器 TCR中的 FUNC字段确定,如下图所示由表可见, C5509的定时器有 4 种工作模式: 当 FUNC=00时, TIN/TOUT为高阻态,时钟源为 CUP时钟。该模式为复位后的缺省模式。 当 FUNC=01时,TIN/TOUT为定时器输出,时钟源为 CPU时钟。此时,TIN/TOUT作为三个定时器事件中的一个,可以输出时钟信号或脉冲信号。 当 FUNC=10时,TIN/TOUT为通

5、用输出, 时钟源为 CPU时钟。此时,TIN/TOUT作为通用输出( General Output ),其电平有控制寄存器 TCR中的 DATOUT字段确定。 当 FUNC=11时, TIN/TOUT为时钟源输入,定时计数器将在其上升沿递减。5.3计数器部分C5509 定时器的计数器分为两类,一类用于定时器工作,一类用于 CUP设置定时长度。它的定时长度为 20bit :4bit 的预定标器和 16bit 的主计数器。其中, 4bit 的预定标值由预定寄存器 PRSC中的 TDDR定义;16bit 主计数器的值由定时周期寄存器 PRD定义。相关寄存器的格式如下表所示。假定定时器的工作时钟周期为

6、clockin ,则定时长度 T 可用下式计算:T=clockin*(PRD+1)*(TDDR+1)定时器主计数寄存器TIM预定标寄存器 PRSC定时器周期寄存器PRD定时控制寄存器TCR定时器配置 C 程序流程:四、实验流程1. 实验准备连接实验设备;关闭实验箱上扩展模块和信号电源开关。2. 设置 Code Composer Studio v3.3 在硬件仿真( emulator )方式下运行。3. 启动 Code Composer Studio v3.3 。选择菜单 DebugReset CPU。4. 编译、下载程序。5. 运行程序,观察结果。6. 退出 CCS。五、实验代码及结果#inc

7、lude "myapp.h"/ 定义指示灯寄存器地址和寄存器类型#define LBDS (*(unsigned int *)0x400001)void INTR_init( void );void TIMER_init(void);int nCount;int flag_time;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;v

8、oid INTR_init( void )IVPD=0xd0;/cpu将16bite 的中断矢量指针与 5bite 的矢量序号级联一起 1011 0000 00000 000/ 然后左移 3bite 形成中断适量地址 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

9、*prsc0;tim0 = (unsigned int *)0x1000;prd0 = (unsigned int *)0x1001;tcr0 = (unsigned int *)0x1002;prsc0 = (unsigned int *)0x1003;/ *tcr0 = 0x04f0;/定时器 0控制寄存器,关闭定时器,自动重载打开,定时器拷贝打开*tcr0 = 0x0Cf0;/定时器 0控制寄存器,关闭定时器,自动重载打开,定时器拷贝打开*tim0 = 0; *prd0 = 0x0ffff; *prsc0 = 2; *tcr0 = 0x00e0; / *tcr0 = 0x08e0;/定时器 0主计数器/定时器 0周期寄存器/定时器 0周期及计数寄存器/定时器 0控制寄存器 , 定时器启动/定时器 0控制寄存器 , 定时器启动六 实验心得通过这次实验,我更加熟悉了CCS开发环境以及设计运行调试过程,认识到模块的各个工作原理以及三者之间的关系,学会对模块的初始化怎么定义和编写的流程。使我对 DSP 产生了浓厚的兴趣,激发了我学习DSP 的积极性,从这次实验结果上来说,清晰的结果使我对书本上的知识应用到了实验中,很满足。最后,感老师、师兄、师姐的耐心指导!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1