DSP实验:定时器实验

上传人:豆浆 文档编号:10387745 上传时间:2017-10-07 格式:DOC 页数:3 大小:37.50KB
返回 下载 相关 举报
DSP实验:定时器实验_第1页
第1页 / 共3页
DSP实验:定时器实验_第2页
第2页 / 共3页
DSP实验:定时器实验_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

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

1、DSP实验二 定时器实验一、实验目的 1、熟悉C54X定时器的基本结构;2、掌握定时器的控制方法; 3、掌握使用定时器中断方式控制程序的流程。二、实验设备 计算机、CCS2.0版软件,DSP仿真器、实验箱。 三、实验系统相关资源 1、通过对I/0口8001H发送数据来控制LED灯(LED6-LED13)2、系统时钟频率设定为20MHz。STM #0xF7FF, CLKMD ; set C5402 DSP clock to 10MHz3、定时器中断周期=T CLK*(TDDR+1)*(PRD+1)其中T CLK是时钟周期,在本系统中,T CLK=1/10MHz=100ns,TDDR 和PRD 分

2、别表示定时器初始化时TCR相应位(0-3)和PDR的值。4、定时器的初始化(1) 将TCR中的TSS位置1,停止定时器。(2) 加载PRD。(3) 重新加载TCR以初始化TDDR。(4) 重新启动定时器。TSS位为0,TRB位为l, 以重载定时器周期值,使能定时器。5、定时器中断的设置(1)初始化PMST中的中断向量指针,在本实验中设IPTR =001111111B,即中断向量表为3F80H起始的128个存储单元。(2)intt中断号为19,在中断向量表中对应的位置设置一条跳转指令,转向定时器中断服务程序。6、中断服务程序的设计包括保护现场、执行中断服务程序和恢复现场三个步骤,在本实验中,使用

3、C 函数编写定时器中断子程序,保护现场和恢复现场有C函数自动实现。四、实验步骤1、用仿真机将计算机与数字信号处理实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。2、打开工程文件Exp2.pjt,编译、链接生成可执行代码,装载到目标板,运行程序并记录实验结果。3、查看工程源程序,分析C语言各函数以及汇编语言子程序之间的调用关系。4、查看initial.asm的源代码,求出定时器初始化时PDR和TDDR的取值,计算定时器中断周期。答:由stm 410h,tcr ;stop timer和stm 420h,tcr ;start timer这两行代码可知PDR的取值:TDDR=0由代

4、码stm 4e1fh,prd ;set prd=4e1fh 知:PDR=19999所以,定时器中断周期为: msnsPRDTCLK 2)19(10)()1( 5、查看exp2.c的源代码,分析timer子程序,求出LED灯状态改变的理论时间间隔,并与实验执行结果相比较。答:理论时间间隔:2ms*1000=2s实际时间间隔:约2s6、修改initial.asm的initial子程序,使得LED灯状态改变的时间间隔为原来的2倍。 (要求:不改变PRD的值)答:把stm 420h,tcr ;start timer改为:stm 421h,tcr ;start timer五、思考题1、分析该工程各函数和

5、子程序之间的调用关系。提示:main、timer in exp2.c; initial in initial.asm; porta, portb in port.asm分析timer在何时被调用。答:(1)程序开始,进入main,接着调用initial;(2)进入initial.asm;(3)返回main函数,进入while死循环等待中断发出;(4)计数溢出引发中断,程序转到main中的interrupt void timer(),当累加中断次数满1000时,判断flag是否为0,若是,则执行porta;若flag不为0,则执行portb。 当执行initail中的ssbx 1,11;set

6、ST1.INTM=1,stop all interrupt时,timer被调用。2、本实验如何设置,使得定时器中断服务程序入口指向timer子程序,计数器何时被清零。答:在initial.asm中,由x3FA0, PMST; vectors at 3F80h ,使定时器中断服务程序入口指向timer子程序,由timer函数中的if(counter=1000)知,当累加中断次数满1000时,counter被清零。3、若定时时间不变,要使得定时更为准确,程序应该如何修改?为什么?(提示:修改PRD,TDDR以及题目timer子程序计数值)。答:把initial.asm中 stm 410h,tcr ;stop timer stm 4e1fh,prd ;set prd=4e1fhstm 420h,tcr ;start timer改为:stm 410h,tcr ;stop timer stm 9c3fh,prd ;set prd=9c3fhstm 424h,tcr ;start timer把timer函数中的if(counter=1000)改为:if(counter=100)原因:尽量减少timer函数循环的次数,即避免执行中断的次数,这样可以使得定时更准确。

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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