文档库 最新最全的文档下载
当前位置:文档库 › AT91SAM9261cn_33_R080921

AT91SAM9261cn_33_R080921

AT91SAM9261cn_33_R080921
AT91SAM9261cn_33_R080921

33 定时器/计数器(TC)

33.1 描述

定时器/计数器(TC)包含三个相同的16位定时器/计数器通道。

可独立编程每个通道来执行很多功能,包括频率测量,事件计数,间隔测量,脉冲产生,延迟时间和脉宽调制。

每个通道有三个外部时钟输入,五个内部时钟输入和及两个可由用户配置的多功能输入/输出信号。每个通道驱动一个内部可配置中断信号,此信号用

来发生处理器中断。

定时器/计数器部件有两个作用于这三个TC通道的全局寄存器。

块控制寄存器允许用同样的指令同时启动这三个通道。

块模式寄存器为每个通道定义了外部时钟输入,允许将它们链接。

表33-1给出了设备定时器/计数器部件输入共同赋值给定时器计数器0到2

表33-1 定时器计数器部件赋值

名称定义

TIMER_CLOCK1MCK/2

TIMER_CLOCK2MCK/8

TIMER_CLOCK3MCK/32

TIMER_CLOCK4MCK/128

TIMER_CLOCK5SLCK

33.2 框图

图33-1 定时器/计数器框图

表33-2 信号名称描述

部件/通道信号名称描述

通道信号

XC0, XC1, XC2外部时钟输入

TIOA捕获模式:定时器/计数器输入定时器

波形模式:定时器/计数器输出

TIOB捕获模式:定时器/计数器输入定时器

波形模式:定时器/计数器输入/输出

INT中断信号输出

SYNC同步输入信号

33.3 引脚名称列表

表33-3 TC引脚列表

引脚名称描述类型

TCLK0-TCLK2外部时钟输入输入

TIOA0-TIOA2I/O口线A输入/输出

TIOB0-TIOB2I/O口线B输入/输出

33.4 附属产品

33.4.1 I/O口线

连接外设的引脚可与PIO口线复用。

编程者必须首先编程PIO控制器来给TC引脚指定外设功能。

33.4.2 电源管理

TC通过电源管理控制器(PMC)定时,因此编程者必须首先配置PMC

来使能定时器/计数器

33.4.3 中断

TC有一个连接于高级中断控制器(AIC)的中断口线。处理TC中断需

要在配置TC前编程AIC

33.5 功能描述

33.5.1 TC描述

定时器/计数器的三个通道相互独立,而操作相同。通道寄存器编程见501页表33-5列表

33.5.2 16位计数器

每个通道有一个16位计数器。计数器值在所选时钟的每个正边沿递增。

当计数器达到0xFFFF值并且变为0x0000时,发生溢出并且TC_SR(状态寄存

器)中的COVFS位置位。

计数器的当前值可通过读取计数器值寄存器TC_CV实时访问。计数器由触发器复位。此时,计数器值在所选时钟的下一个有效边沿上变为0.

33.5.3 时钟选择

在TC块级上,每个通道的输入时钟信号通过编程TC_BMR(块模式)可以与外部时钟TCLK0, TCLK1或TCLK2连接,或与内部I/O信号TIOA0, TIOA1或

TIOA2连接。见489页的图33-2

每个通道可独立的为其计数器选择一个内部或外部时钟源:

z内部时钟信号:TIMER_CLOCK1, TIMER_CLOCK2, TIMER_CLOCK3, TIMER_CLOCK4, TIMER_CLOCK5

z外部时钟信号:XC0, XC1 or XC2

可通过TC通道模式寄存器的TCCLKS位完成选择。

可用TC_CMR中的CLKI位反转所选时钟。这就允许在时钟的相反边沿计数。

脉冲功能允许当外部信号为高时时钟有效。模式寄存器中的BURST参数定义此

信号(无,XC0, XC1, XC2)。见489页图33-3

注意:此时,若使用外部时钟,TC块每个电平的持续时间必须比主控时钟周

期长。外部时钟频率必须至少比主控时钟低2.5倍。

图33-2 时钟选择

图33-3 时钟选择

33.5.4 时钟控制

可用两个不同的方法控制每个计数器的时钟:可以使能/禁用和启动/停止。见图33-4

z用户可用控制寄存器中的CLKEN和CLKDIS命令使能或禁用时钟。

在捕获模式若TC_CMR中的LDBDIS置1则可由RB载入事件禁用时钟。在波

形模式,若TC_CMR中的CPCDIS置1则由RC比较事件禁用时钟。当禁用时,

启动或停止命令无效:只有控制寄存器中的CLKEN命令可重新使能时钟。当时

钟使能后,状态寄存器中的CLKSTA置位。

z时钟也可启动或停止:触发器(软件,同步,外部或比较)通常用来启动时钟。在捕获模式(TC_CMR中LDBSTOP = 1)由RB载入事件或在波形模式

(TC_CMR中CPCSTOP = 1)由RC比较事件停止时钟。启动和停止命令仅在时钟

使能的时候有效。

图33-4 时钟控制

33.5.5 TC运行模式

每个通道可以工作在两种不同的模式下:

z捕获模式提供信号测量

z波形模式提供波形发生

用TC通道模式寄存器中的WA VE位编程TC运行模式

在捕获模式,TIOA和TIOB被配置为输入。

在波形模式,TIOA通常被配置为输出,而若TIOB未被选作外部触发时也为输

出。

33.5.6 触发器

触发器复位计数器并启动计数器时钟。两种模式下有三种通用触发器,第四种外部触发器适用于每种模式。

以下触发器适用于两种模式:

z软件触发器:每个通道有一个软件触发器,通过设置TC_CCR中的SWTRG有效。

z SYNC:每个通道有一个同步信号SYNC。当有效时,此信号和软件触发器有同样的效果。通过用SYNC置位写TC_BCR(块控制)同时激活所有通道

的SYNC信号

z比较RC触发器:RC在每个通道中执行,并且若TC_CMR中的CPCTRG 置位,当计数器值和RC值相等则产生一个触发

通道也可以配置为有一个外部触发器。在捕获模式,外部触发器信号可在TIOA

和TIOB间选择。在波形模式,可在以下信号上编程外部事件:TIOB, XC0, XC1

或 XC2。接着,可通过写TC_CMR中的ENETRG,可实现外部事件执行触发

若使用外部触发器,脉冲持续时间必须比主控周期长,以便对其检测。

不管是否使用触发器,依然要考虑后续所选时钟的有效边沿。这就意味着计数

器值在触发即不为0值,特别是当选择低频率信号作为时钟的时候。

33.5.7 捕捉工作模式

通过清零TC_CMR(通道模式寄存器)中的WAVE参数进入此模式。

捕获模式允许TC通道对输入的TIOA和TIOB信号上的脉冲时间,频率,周期,占空比和相位进行测量。

图33-5展示了当编程为捕获模式时TC通道的配置。

33.5.8 捕捉寄存器A和B

寄存器A和B(RA和RB)作为捕捉寄存器使用。这就是说当在TIOA信号上产生一个可编程事件时可用计数器值装载RA和RB。TC_CMR中的LDTA参数

定义装载寄存器A的TIOA边沿,LDTB参数定义装载寄存器B的TIOA边沿。

只有在最近触发后还未装载或RB以载入时才装载RA。

只有在最近触发后已装载RA或最后装载RB后才装载RB。

在读取最近装载值前装载RA或RB将设置TC_SR(状态寄存器)中的溢出错误标志位(LOVRS)。此时,将覆盖旧值。

33.5.9 触发条件

除了SYNC信号,软件触发器和RC比较触发器,还可定义外部触发。

TC_CMR中的ABETRG位选择TIOA或TIOB输入信号作为外部触发。ETRGEDG 参数定义产生外部触发的检测边沿。若ETRGEDG = 0(无),则禁用外部触发。

图33-5 捕获模式

33.5.10 波形工作模式

通过设置TC_CMR(通道模式寄存器)中的WAVE参数进入波形工作模式。

波形工作模式下,TC通道产生1个或2个相同频率和独立可编程占空比的PWM信号,或产生不同类型的单发射或重复脉冲

在此模式下,TIOA被配置为输出而若TIOB未被用作外部事件(TC_CMR 中的EEVT参数)时则定义TIOB为输出。

图33-6展示了当在波形工作模式下编程的TC通道配置。

33.5.11波形选择

TC_CV的动作随TC_CMR(通道模式寄存器)中的WA VSEL参数而变

不管如何选择,RA, RB 和 RC都可被用作比较寄存器。

RA比较器被用于控制TIOA输出,RB比较器被用于控制TIOB输出(若正确配置)而RC比较器被用于控制TIOA和/或TIOB输出

图33-6 波形模式

33.5.11.1 WA VSEL=00

当WA VSEL=00,TC_CV值从0递增到0xFFFF。一旦达到0xFFFF,则TC_CV 值复位。TC_CV重新开始递增并且继续循环。见图33-7

一个外部事件触发或软件触发可复位TC_CV值。要注意随时可能产生触发,这点很重要。见图33-8

这样的配置下不能编程RC比较器来产生触发。同时,RC比较器可以停止计数器时钟(TC_CMR中的CPCSTOP = 1)与/或禁用计数器时钟(TC_CMR中的

CPCDIS = 1)。

图33-7 无触发 WAVSEL= 00

图33-8 有触发WAVSEL= 00

33.5.11.2 WAVSEL = 10

当WAVSEL = 10,TC_CV值从0递增到RC值,接着自动复位为RC比较器值。

一旦TC_CV值已复位,接着继续递增。见图33-9

注意TC_CV在任何时候可被外部事件或软件触发复位(若两者都正确编程),这点很重要。见图33-10

另外,RC比较器可停止计数器时钟(TC_CMR中的CPCSTOP = 1)并且/或禁用计数器时钟(TC_CMR中的CPCDIS = 1)

图33-9 无触发 WAVSEL = 10

33.5.11.3 WAVSEL = 01

当WAVSEL = 01,TC_CV值从0递增到0xFFFF。一旦达到0xFFFF,TC_CV 值递减到0,接着重新递增到0xFFFF,一直继续下去。见图33-11

像外部事件或软件触发这样的触发可在任何时间修改TC_CV。若当TC_CV 正在递增时产生触发,则TC_CV接下来递减。若当TC_CV正在递减时接收到触

发,则TC_CV接着递增。见图33-12

在此配置下不能编程RC比较器来产生触发。

同时,RC比较器可以停止计数器时钟(CPCSTOP = 1)并且/或禁用计数器时钟(CPCDIS = 1).

图33-11 无触发 WAVSEL = 01

33.5.11.44 WAVSEL = 11

当WAVSEL = 11,TC_CV值从0递增到RC值。一旦达到RC值,则TC_CV 值递减到0,接着重新递增到RC,这样继续下去。见图33-13

像外部事件或软件触发这样的触发可在任何时间修改TC_CV值。当TC_CV 正在递增时产生触发,则TC_CV接下来递减。若当TC_CV正在递减时接收到触

发,则TC_CV接下来递增。见图33-14

RC比较起可停止计数器时钟(CPCSTOP = 1)并且/或禁用计数器时钟(CPCDIS= 1)

图33-13 无触发 WAVSEL = 11

图33-14 有触发WAVSEL = 11

33.5.12 外部事件/触发条件

可编程外部事件来检测时钟源(XC0, XC1,XC2)或TIOB。然后所选外部事件可用作触发。

TC_CMR中的EEVT参数选择外部触发器。EEVTEDG参数定义每个可能的外部触发(上升,下降或两者都)的触发边沿。若EEVTEDG清零,则未定义外部

事件。

若定义TIOB为外部事件信号(EEVT = 0),则TIOB不再用作输出并且比较寄存器B不再用于产生波形,且无IRQ。此时TC通道仅能产生TIOA波形 当定义了外部事件,则可通过设置TC_CMR中的ENETRG位将外部事件用作触发。还可根据WAVSEL参数将RC比较器用作触发。

33.5.13 输出控制器

输出控制器定义事件后,TIOA和TIOB上的输出电平变化。

只有在TIOB被定义为输出(不是外部事件)时使用TIOB控制

下列事件控制TIOA和TIOB:软件触发,外部事件和RC比较器。

RA比较控制TIOA,RB比较控制TIOB。根据TC_CMR中相应参数的定义每个时间可编程设置,清零或切换输出。

33.6 定时器/计数器(TC)用户接口

表33-4 TC全局存储器映射

偏移量 通道/寄存器 名称 访问类型 复位值

见表33-5

0x00 TC Channel 0

0x40 TC Channel 1

0x80 TC Channel 2

0xC0 TC块控制寄存器 TC_BCR只写 -

0xC4 TC块模式寄存器 TC_BMR读写 0

TC_BCR(块控制寄存器)和TC_BMR(块模式寄存器)控制整个TC块。TC 通道由表333-5所列寄存器控制。表33-5中每个通道寄存器的偏移量和表

33-5中提到相应通道的偏移量相关。

表33-5 TC通道存储映射

偏移量 寄存器 名称 访问类型 复位值 0x00 通道控制寄存器TC_CCR只写 -

0x04 通道模式寄存器TC_CMR读/写 0

0x08 保留 -

0x0C 保留 -

0x10 计数器值 TC_CV只读 0

0x14 寄存器A TC_RA读/写(1) 0

0x18 寄存器B TC_RB读/写(1) 0

0x1C 寄存器C TC_RC读/写 0

0x20 状态寄存器 TC_SR只读 0

0x24 中断使能寄存器TC_IER只写 -

0x28 中断禁用寄存器TC_IDR只写 -

0x2C 中断屏蔽寄存器TC_IMR只读 0

0xFC 保留 - - -

33.6.1 TC块控制寄存器

寄存器名称:TC_BCR

访问类型:只写

注意:1.若WA VE=0则只读

z SYNC:同步命令

0=无效

1=出现SYNC信号,此信号给每个通道同时产生一个软件触发。

33.6.2 TC块模式寄存器

寄存器名称:TC_BMR

访问类型:读/写

z TC0XC0S:外部时钟信号0选择

TC0XC0S 连接到XC0的信号

0 0 TCLK0

0 1 无

1 0 TIOA1

1 1 TIOA2

z TC1XC1S:外部时钟信号1选择

TC1XC1S 连接到XC1的信号

0 0 TCLK1

0 1 无

1 0 TIOA0 1 1 TIOA

2 z TC2XC2S:外部时钟信号2选择

TC2XC2S 连接到XC2的信号

0 0 TCLK2

0 1 无

1 0 TIOA0 1 1 TIOA1

33.6.3 TC通道控制寄存器

寄存器名称:TC_CCR

访问类型:只写

z CLKEN:计数器时钟使能命令

0=无效

1=若CLKDIS不为1则使能时钟

z CLKDIS:计数器时钟禁用命令

0=无效

1=禁用时钟

z SWTRG:软件触发命令

0=无效

1=软件触发的执行:计数器复位并且启动时钟

33.6.4 TC通道模式寄存器:捕获模式

寄存器名称:TC_CMR

访问类型:读/写

z TCCLKS:时钟选择

TCCLKS 所选时钟

0 0 0 TIMER_CLOCK1 0 0 1 TIMER_CLOCK2 0 1 0 TIMER_CLOCK3

0 1 1 TIMER_CLOCK4

1 0 0 TIMER_CLOCK5 1 0 1 XC0

1 1 0 XC1

1 1 1 XC2

z CLKI:时钟反转

0=在时钟上升沿计数器递增

1=在时钟下降沿计数器递增

z BURST:突发信号选择

BURST 0 0 时钟不是由外部信号选通

0 1 XC0和所选时钟相与

1 0 XC1和所选时钟相与

1 1 XC2和所选时钟相与

z LDBSTOP:当装入RB,计数器时钟停止

0=当发生RB装载时不停止计数器时钟

1=当发生RB装载时停止计数器时钟

z LDBDIS:当RB装载时计数器时钟禁用

0=当发生RB装载时不禁用计数器时钟

1=当发生RB装载时禁用计数器时钟

z ETRGEDG:外部触发边沿选择

ETRGEDG 边沿

0 0 无

0 1 上升边沿

1 0 下降边沿

1 1 每个边沿

z ABETRG:TIOA或TIOB外部触发选择

0=TIOB被用作外部触发

1=TIOA被用作外部触发

z CPCTRG:RC比较触发使能

0=RC比较对计数器和其时钟无效

1=RC比较复位计数器并且启动计数器时钟

z WA VE

0=捕获模式使能

1=捕获模式禁用(波形模式使能)

z LDRA:RA装载选择

LDRA 边沿

0 0 无

0 1 TIOA的上升沿

1 0 TIOA的下降沿1 1 TIOA的每个沿z LDRB:RB装载选择

LDRB 边沿

0 0 无

0 1 TIOB的上升沿

1 0 TIOB的下降沿1 1 TIOB的每个沿

相关文档