DSP实验定时器中断实验精
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四定时器中断实验
一:实验目的
1.熟悉定时器初始化的步骤;
2.熟悉定时器控制寄存器(TCR)的含义和使用;
3.熟悉定时器的原理和应用。
二:实验内容
本实验要求编写一个简单的定时器中断程序,设置一定的周期控制与XF引脚相连的LCD指示灯。当定时器中断产生时可以观察到LCD周期性闪烁。
三:实验原理
1.定时器
SRESET
.C54xx 系列的 DSP 都具有一个或两个预定标的片内定时器,这种定时器是一个倒数定时器,它可以被特定的状态位实现停止、重启动、重设置或禁止。定时器在复位后就处于运行状态,为了降低功耗可以禁止定时器工作。应用中可以用定时器来产生周期性的 CPU 中断或脉冲输出。定时器的功能方框图如图 9.1 所示,其中有一个主计数器( TIM )和一个预定标计数器( PSC )。 TIM 用于重装载周期寄存器 PRD 的值, PSC 用于重装载周期寄存器 TDDR 的值。
图5.1中有一个信号,是在器件复位时,DSP向外围电路(包括定时器)发送的一个信号,此信号将在定时器上产生以下效果:寄存器TIM和PRD装载最大值(0FFFFH);TCR的所有位清0;结果是分频值为0,定时器启动,TCR的FREE 和SOFT为0。
图5.1定时器的功能方框图
定时器实际上是有20bit的周期寄存器。它对CLKOUT信号计数,先将PSC(TCR 中的D6~D9位)减1,直至PSC为0,然后把TDDR(TCR中的低4位)重新装载入PSC,同时将TIM减1,直到TIM减为0。这时CPU发出TINT中断,同时在TOUT引脚输出一个脉冲信号,脉冲宽度与CLKOUT一致,然后将PRD重新装入TIM,重复
TSS
下去直到系统或定时器复位。
定时器产生中断的计算公式如下:
1
PRD+1
TINT的频率= × × (其中tc为 CLKOUT的周期
定时器由三个寄存器组成:TIM、PRD、TCR。
TIM:定时器寄存器,用于装载周期寄存器值并自减1。
PRD:周期寄存器,用于装载定时器寄存器。
TCR:定时器控制寄存器,包含定时器的控制状态位。
定时器是一个片内减计数器,用于周期地产生CPU中断。定时器被预定标计数器所触发,后者每个CPU时钟周期减1,当计数器减至0时,会产生一个定时器中断,同时在下一周期计数器被定时周期值重新装载。
在正常操作模式下,当TIM自减至0时,TIM将被PRD内的数值重装载。在硬件复位或定时器单独复位(TCR中TRB位置1)的情况下,主定时器模块输出的是定时器中断(TINT)信号。该中断被发送至CPU,同时由TOUT引脚输出。TOUT脉冲的宽度等于CLKOUT的时钟宽度。
预定标模块由两个类似TIM和PRD的单元构成。它们是预定标计数器(PSC)和定时器分频寄存器(TDDR)。PSC、TDDR是RCR寄存器的字段。在正常操作时PSC自减为0,TDDR值装入PSC,同样在硬件复位或定时器单独复位的情况下,TDDR也被装入PSC。PSC被CPU时钟定时,即每个CPU时钟使PSC自减1。PSC可被TCR读取,但不能直接写入。
当TSS置位时,定时器停止工作。若不需要定时器,终止定时操作,可使芯片工作在低功耗模式,并且可以使用与定时器相关的两个寄存器(TIM和PRD)作为通用的存储器单元,可以在任意周期对它们进行读或写操作。
TIM的当前值可被读取,PSC也可以通过TCR读取。因为读取这两个存储器需要两个指令,而在两次读取之间因为自减,数值可能改变,因此,PSC两次读的结果可能有差别,不够准确。若要准确测量时序,在读这两个寄存器值之前可先中止定时器,对TSS置1和清0后,可重新开始定时。
通过TOUT信号或中断,定时器可以用于产生周边设备的采样时钟,如模拟接口。对于有多个定时器的DSP,由寄存器GPIOCR中的第15位控制使用某一个定时器产生的TOUT信号。
2.定时器初始化
(1)定时器初始化步骤
●TCR的TSS位写1,定时器停止工作;
●装载TRD;
●初始化TCR中的TDDR,并对TCR中的TSS置0,对TRB置1来重装载定时器周期。
(2)初始化定时器中断方法(INTM=1)
●FIR中的TINT写1,以清除挂起的定时器中断;
●IMR中的TINT置1,启动定时器中断;
●启动全部中断,INTM置0;
●在重启(RESET)后,TIM和PRD被设置为最大值(FFFFH),TCR中的TDDR置0。
(3)定时控制寄存器(TCR)
TCR为一个映射到片内的16位寄存器,它可以控制:
●定时器的工作方式;
●设定预定标计数器中的当前数值;
●启动或停止定时器;
●重新装载定时器;
●设置定时器的分频值。
TCR的位描述如图5.2
15~12 11 10 9~6 5 4 3~0
Reserved SOFT FREE PSC TRB TSS TDDR
图5.2TCR位描述
●第15~12位Reserved:保留位,总为0。
●第11~10位SOFT、FREE:特殊的仿真位。高级语言调试程序中出现一个断点时,该仿真位决定定时器的状态。如果FREE位设为1,则当遇到一个断点时,定时器继续运行(即自由运行),在这种情况下,SOFT被忽略。但是,如果FREE 为0,则SOFT有效。在此情况下,如果SOFT=0,则定时器停止,下一次TIM 的值递减;如果SOFT=1,则当TIM减到0,定时器停止工作。
●第9~6位PSC:定时器预定标计数器。这4位用来保存定时器的当前预定标计数器。每个CLKOUT周期内,若PSC值大于0,PSC减1,在PSC减到0后的下个CLKOUT周期内,装载TDDR的内容,并且TIM减1。每当软件设置了定时器重载位(TRB)时,PSC也被重新装载。可通过TCE检测PSC,但PSC不能直接设置,PSC值必须从TDDR中提取。复位时,PSC设为0。
●第5位TRB:定时器重载位。当TRB写入1时,TIM装载PRD中的值,并且PSC装载TDDR中的值。TRB位总被读为0。
●第4位TSS:定时器停止状态位。TSS停止或重新启动定时器。复位时,TSS清零,并且立即启动定时器。TSS=0,启动或重新启动定时器;TSS=1,停止定时。注意,此位为只读位,读出的值永远为0。
●第3~0位TDDR:定时器分频比寄存器。每经过(TDDR+1)个CLKOUT周期,TIM减1。复位时,TDDR位清0。如果想通过一个整数因子增加总的定时计数值,则将整数因子减1后写入这4位。当PCS值为0时,在随后的一个CLKOUT周期内,TDDR内容将被重新装入PSC,并且TIM减1。每当TRB重载入时,TDDR也将被PSC重新装载。
3:定时器应用:
C54x定时器所能计计时的长度可通过公式Tx(TDDR+1×(PRD+1来计算,其中,TDDR最大值为0FH,PDR最大值为0FFFFH,所以能计时的最长长度为
T×1048576,由所采用的机器周期T决定,例如f=4MHz,T=250,则最长定时时间为:Tmax=250×1048576=262.144(ms
例如若需要更长的计时时间,则可以在中断程序中设计一个计数器。设计一个周期为40s的方波,可将定时器设置为100ms,程序计数器设为200,当计数
200×100ms=20s时输出取值一次,可形成所要求的波形。
四:实验步骤
本实验的步骤为: