打开源程序LED.c阅读程序,理解程序内容。 c) 编译、下载程序。
d) 运行程序,观察结果。 e) 退出CCS
五.实验结果分析
1)程序运行后,D3-D6指示灯发生什么现象? 2) 如何延长或减少灯闪烁时间?
3) 如何控制灯亮的数量?依次循环亮1个、2个、3个LED
六.问题与思考
ICETEK-VC5416-AE评估板上的指示灯控制寄存器是可读可写的,请问用什么办法可以回读指示灯状态?
3.2:拨码开关输入
一.实验目的
1.了解ICETEK-VC5416-AE板在TMS320VC5416DSP外部扩展存储空间上的扩展。 2.了解ICETEK-VC5416-AE板上拨码开关扩展原理。 3.熟悉在C语言中使用扩展的控制寄存器的方法。
二.实验设备
计算机,ICETEK-VC5416AE-S60实验箱
三.实验原理
1.I/O空间的扩展及使用: 2.拨码开关扩展原理 扩展图如下
15
四、实验内容
a) 实验程序流程图 开始 读取拨码开关控制寄存器并送指示灯控制寄存器
b) 打开工程文件
工程文件为:C:\\ICETEK\\VC5416AES60\\VC5416AES60\\Lab0302-DIP\\DIP.pjt 打开源程序DIP.c阅读程序,理解程序内容。 d) 编译、下载程序。 e) 运行程序,观察结果。
f) 拨动拨码开关U20的各位,观察指示灯D3-D8的显示。 g) 退出CCS
五.实验结果分析
1)说明拨码开关的状态(on或off)与指示灯亮或灭(on或Off)的关系
2)映射在扩展存储器空间地址上的拨码开关控制寄存器中哪几位数据对应拨码开关六.问题与思考
修改程序使拨码开关拨到Off时指示灯亮。
16
实验4、定时器实验
一、 实验目的
1. 通过实验熟悉DSP5416定时器 2. 掌握5416定时器的控制方法
3.掌握5416的中断结构及对中断的处理方法 4.学会C语言的中断程序设计
二.实验设备
计算机,ICETEK-VC5416AE-S60实验箱
三.说明
1.I/O空间的扩展及使用和指示灯扩展原理
同实验4说明
2. 通用定时器介绍及其控制方法
片内定时器是一个软件可编程定时器,可以用来产生周期的中断信号。 定时器主要由3个寄存器所组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。这3个寄存器都有映象寄存器,它们在数据存储器中的地址分别为24H、25H和26H。TIM是一个递减计数器;PRD中存放计数值;
TCR中有定时器的控制位和状态位:
15—12 保留
11--10 soft free
9—6 PSC 定时器预定标计数器
5 TRB 定时器重新加载位,用来复位片内定时器 4 TSS 定时器停止状态位,用于停止或启动定时器 3—0 TDDR 定时器分频系数
在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。
复位后,定时器控制寄存器(TCR)的停止状态位TSS=0,定时器启动工作,时钟信号CLKOUT加到预定标计数器PSC。PSC也是一个递减计数器,每当复位或其减到0后,自动地将定时器分频系数TDDR加载到PSC。PSC在CLKOUT作用下,作减1计数。当PSC减到0,产生一个借位信号,令TIM作减1计数。TIM减到0后,产生定时器中断信号TINT,传送到CPU和定时器输出引脚TOUT。
定时器中断的周期为:CLKOUT×(TDDR+1)×(PRD+1)
其中,CLKOUT位时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。 - 对定时器初始化的步骤如下:
⑴ 先将TCR中的TSS位置1,关闭定时器。 ⑵ 加载PRD。
⑶ 重新加载TCR(使TDDR初始化;令TSS位=0,以接通CLKOUT;TRB位值1,以使TIM减到0后重新加载定时器时间常数),启动定时器。 - 对中断的处理: ⑴ 设置INTM=1
⑵ 将IFR中的TINT位置1,清除尚未处理完的定时器中断。 ⑶ 将IMR中的TINT位置1,开放定时器中断。
⑷ 将ST1中的INTM位请0,开放所有可屏蔽中断。 3. TMS320VC5416中断结构
17
以下是5416的IMR(中断屏蔽寄存器1:开放,0:屏蔽)和IFR(中断标志寄存器1:中断发生。0:未发生)寄存器的结构:
INT0-3为外部引脚产生的中断,TINT为定时器中断(BIT3当前的定时器程序所使用的中断),RINT0-2和XINT0-2对应McBSP口的接收和发送中断,HINT对应HPI接口中断,另外还有DMA中断。 4. 中断响应过程
外设事件要引起CPU中断,必须保证:IMR相应位被使能(置1),ST1寄存器中的INTM 使能(置0)。
当CPU响应中断时,PC指针指向中断向量表中对应中断的地址,进入中断服务子程序。中断向量表是DSP存放中断服务程序的一段内存区域,大小为80H。在中断向量表中,每一个中断占用4个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。中断向量表的位置是可以改变的,修改PMST寄存器中的中断向量表基地址可以实现这一点。
5. 中断程序设计
- 程序中应包含中断向量表,5416默认向量表从程序区FF80地址开始存放。
- 向量表中每项为4个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址;第一个向量表的首项为复位向量,即CPU复位操作完成后自动进入执行的程序入口;
- 程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。
四、实验内容
1)要求
a) 本实验设计的程序要求在上一个实验基础上修改得来,由于上一实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。
b) 为了实现指示灯亮0.5秒再灭0.5秒,即每秒闪烁1次。如何设置定时器的分频系数和时间常数? 参考:
定时器中断的周期为:CLKOUT×(TDDR +1)×(PRD+1) CLKOUT(主频)=1/8Mhz
****(ICETEK-VC5416-AE板上DIP开关U2的CLKMD1-3均为OFF时) TDDR=15
****因为TCR=0x41F,3—0 位为TDDR 定时器分频系数。 PRD= 0x0f423=62499
周期为16*62500/8M=0.125s
18
2)程序流程图
开中断 开始
死循环,等待关中断 中断产生
初始化定时器
中断服务程序流程图如下:
开始
计数器加一
设置指示灯状态 达到设定值 Y 计数器清零 结束 N
2. 主程序和中断服务程序设计
3. 建立工程文件并添加所需的源文件
可参考C:\\ICETEK\\VC5416AES60\\VC5416AES60\\Lab0303-Timer\\Timer.pjt目录中的
“Timer.pjt”。
5. 编译、下载程序 6. 实验结果分析
1). 单击“Debug”菜单,“Run”项,运行程序。 . 观察目标板上指示灯D3-D9闪烁情况。 . 单击“Debug”菜单,“Halt”项,停止程序运行。 2)修改程序重新运行
为使指示灯约1秒烁两次、三次、四次。可改变程序中“PRD=0xf423;”语句中的延时参数,如何修改?
19