实验四 定时器中断实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四 定时器中断实验

一:实验目的

1.熟悉定时器初始化的步骤;

2.熟悉定时器控制寄存器(TCR )的含义和使用;

3.熟悉定时器的原理和应用。

二:实验内容

本实验要求编写一个简单的定时器中断程序,设置一定的周期控制与XF 引脚相连的LCD 指示灯。当定时器中断产生时可以观察到LCD 周期性闪烁。

三:实验原理

1.定时器

.C54xx 系列的DSP 都具有一个或两个预定标的片内定时器,这种定时器是一个倒数定时器,它可以被特定的状态位实现停止、重启动、重设置或禁止。定时器在复位后就处于运行状态,为了降低功耗可以禁止定时器工作。应用中可以用定时器来产生周期性的CPU 中断或脉冲输出。定时器的功能方框图如图9.1所示,其中有一个主计数器(TIM )和一个预定标计数器(PSC )。TIM 用于重装载周期寄存器PRD 的值,PSC 用于重装载周期寄存器TDDR 的值。

图5.1信号,是在器件复位时,DSP 向外围电路(包括定时器)发送的一个信号,此信号将在定时器上产生以下效果:寄存器TIM 和PRD 装载最大值(0FFFFH );TCR 的所有位清0;结果是分频值为0,定时器启动,TCR 的FREE 和SOFT 为0。

定时器实际上是有20bit 的周期寄存器。它对CLKOUT 信号计数,先将PSC (TCR 中的D6~D9位)减1,直至PSC 为0,然后把TDDR (TCR 中的低4位)重新装载入PSC ,同时将TIM 减1,直到TIM 减为0。这时CPU 发出TINT 中断,同时在TOUT 引脚输出一个脉冲信号,脉冲宽度与CLKOUT 一致,然后将PRD 重新装入TIM ,重复下去直到系统或定时器复位。

定时器产生中断的计算公式如下:

TINT t c 为 CLKOUT 的周期)

定时器由三个寄存器组成:TIM 、PRD 、TCR 。

TIM :定时器寄存器,用于装载周期寄存器值并自减1。

PRD :周期寄存器,用于装载定时器寄存器。

TCR :定时器控制寄存器,包含定时器的控制状态位。

定时器是一个片内减计数器,用于周期地产生发,后者每个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位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 内容将被重

相关文档
最新文档