011:MSP430单片机16位定时器TIMER_A
1 16 位定时器 A 模块概述
TI 推出的所有 MSP430 系列单片机都有定时器 A(TIMER_A),它是程序设计的核心,它有一个十六位
定时器和多路比较/捕获通道组成。每一个比较/捕获通道都以十六位定时器的定时功能为核心进行单独的
控制。MSP430 系列单片机的 TIMER_A 有以下特性:
输入时钟可以有多种选择,可以是慢时钟,快时钟以及外部时钟
虽然没有自动重装功能,但产生的定时脉冲或 PWM(脉宽调制)信号没有软件带来的误差
不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平
可实现串口通信
完善的中断服务功能
4 种计数功能选择
8 路输出方式选择
支持多时序控制
DMA 使能
2 16 位定时器 A 模块结构
TIMER_A 的结构原理图:

TIMER_A 由以下部分组成:
[1] 计数器部分
输入的时钟源具有 4 种选择,所选择的时钟源又可以 1、2、4、8 分频作为计数频率,TIMER_A 可以
通过选择 4 种工作模式灵活的完成定时/计数功能。
[2] 捕获/比较
用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要时为了提高 I/O 端口处理事务的能力
和速度。不同的 MSP430 单片机 TIMER_A 模块中所含有的捕获/比较器的数量不一样,每个捕获/比较器
的结构完全相同,输入和输出都取决于各自所带的控制寄存器的控制字,捕获/比较器相互之间工作完全独
立。
[3] 输出单元
具有可选的 8 种输出模式,用于产生用户需要的输出信号,支持 PWM。
3 16 位定时器 A 模块寄存器
| 寄存器名称 | 寄存器缩写 |
| TimerA 控制寄存器 |
TACTL |
| TimerA 计数器 | TAR |
| TimerA 中断向量寄存器 | TAIV |
| 捕获/比较寄存器 0 | TACCR0 |
| 捕获/比较寄存器 1 | TACCR1 |
| 捕获/比较寄存器 2 | TACCR2 |
| 捕获/比较控制寄存器 0 | TACCTL0 |
| 捕获/比较控制寄存器 1 | TACCTL1 |
| 捕获/比较控制寄存器 2 | TACCTL2 |
[1] TACTL TIMER_A 控制寄存器

全部关于定时器及其操作的控制位都包含在定时器控制寄存器 TACTL 中。POR 信号后 TACTL 的所有位
都自动复位,但在 PUC 信号后不受影响。TACTL 各位的定义如下:
TASSELx:选择定时器进入输入分频器的时钟源
0: TACLK 特定的外部引脚时钟
1: ACLK 辅助时钟
2: MCLK 系统时钟
3: INCLK 器件特有时钟
IDx:输入分频选择
0: 不分频
1: 2 分频
2: 4 分频
3: 8 分频
MCx:计数模式控制位
0: 停止模式
1: 增计数模式
2: 连续计数模式
3: 增/减计数模式
TACLR:定时器清除位
POR 或 CLR 置位时定时器和输入分频器复位。CLR 由硬件自动复位,其读出始终为 0。定时器再下
一个有效输入沿开始工作。如果不是被清除模式控制位暂停,则定时器以增计数模式开始工作。
0: 无操作
1: 清除 TAR,时钟分频,计数模式的设置。清除设置后自动清零
TAIE:定时器中断允许位
0: 禁止定时器溢出中断
1: 允许定时器溢出中断
TAIFG:定时器溢出标志位
增计数模式时:当定时器由 CCR0 计数到 0,TAIFG 置位;
连续计数模式时:当定时器由 0FFFFH 计数到 0 时,TAIFG 置位
增/减计数模式时:当定时器由 CCR0 减计数到 0 时,TAIFG 置位。
0: 没有 TA 中断请求
1: 有 TA 中断请求
[2] TAR TIMER_A 计数器
TAR单元就是执行计数的单元,时计数器的主体,其内容可读可写。
[3] TACCTLx TIMER_A 捕获/比较控制寄存器 x

TIMER_A 有多个捕获/比较模块,每个模块都有自己的控制字 TACCTLx,这里 x 为捕获/比较模块序号。
该寄存器再 POR 信号后全部复位,但在 PUC 信号后不受影响。该寄存器中各位的定义如下:
CMx:选择捕获模式
0: 禁止捕获模式
1: 上升沿捕获
2: 下降沿捕获
3: 上升沿和下降沿都捕获
CCISx:在捕获模式中用来定义提供捕获事件的输入源
0: 选择 CCIxA
1: 选择 CCIxB
2: 选择 GND
3: 选择 Vcc
SCS:选择捕获信号与定时时钟同步/异步关系
异步捕获模式允许在请求时立即将 CCIFG 置位和捕获定时器值,适用于捕获信号的周期远大于定时
器周期的情况。但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器的值可能出错。
0: 异步捕获
1: 同步捕获
SCCI:同步比较/捕获输入
比较相等信号 EQU 信号将选中的捕获/比较输入信号 CCI 进行锁存,然后可由 SCCI 读出。
CAP:选择捕获模式/比较模式
如果通过捕获/比较寄存器 TACCTLx 中的 CAP 使工作模式从比较模式变为捕获模式,那么不应同时
进行捕获,否则,在捕获/比较寄存器中的值使不可预料的。
推荐的指令顺序如下:(1)修改控制寄存器,由比较模式切换到捕获模式。(2)捕获
0: 比较模式
1: 捕获模式
OUTMODx:选择输出模式
0: 输出
1: 置位
2: PWM 翻转/复位
3: 置位/复位
4: 翻转
5: 复位
6: PWM 翻转/置位
7: PWM 复位/置位
CCIE:捕获/比较模块中断允许位
0: 禁止中断(TACCRx)
1: 允许中断(TACCRx)
CCI:捕获/比较模块的输入信号
捕获模式:由 CCIS0 和 CCIS1 选择的输入信号可通过该位读出
比较模式:CCI 复位
OUT:输出信号
如果 OUTMODx 选择输出模式 0(输出),则该位对应于输入状态。
0: 输出低电平
1: 输出高电平
COV:捕获溢出标志
当 CAP=0 时,选择比较模式.捕获信号发生复位。没有使 COV 置位的捕获事件。
当 CAP=1 时,选择捕获模式。如果捕获寄存器的值被读出前在此发生捕获事件,则 COV 置位。程
序可检测 COV 来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件
复位。
0: 没有捕获溢出
1: 发生捕获溢出
CCIFG:捕获比较中断标志
捕获模式:寄存器 CCRx 捕获了定时器 TAR 值时置位。
比较模式:定时器 TAR 值等于寄存器 CCRx 值时置位。
0: 没有中断请求(TACCRx)
1: 有中断请求(TACCRx)
[4] TACCRx TIMER_A 捕获/比较寄存器 0
在捕获/比较模块中,可读可写。
在捕获方式,当满足捕获条件,硬件自动将计数器 TAR 数据写入该寄存器。如果测量某窄脉冲(高电平)
脉冲长度,可定义上升沿和下降沿都捕获。在上升沿时,捕获一个定时器数据,这个数据在捕获寄存器中
读出;再等待下降沿到了,在下降沿时又捕获一个定时器数据;那么两次捕获的定时器数据就时窄脉冲的
高电平宽度。
其中 CCR0 经常用作周期寄存器,其他 CCRx 相同
[5] TAIV TIMER_A 中断向量寄存器
TIMER_A 中断可由计数器溢出引起,也可以来自捕获/比较寄存器。每个捕获/比较模块可独立编程,
由捕获/比较外部信号以产生中断。外部信号可以是上升沿,也可以是下降沿,也可以两者都有。
Timer_A 模块使用两个中断向量,一个单独分配给捕获/比较寄存器 CCR0,另一个作为共用中断向量用于
定时器和其他的捕获/比较寄存器。
4 16 位定时器 A 模块定时工作原理
2 定时器A的四种计数模式

1. 停止模式。
2. 增计数模式。(产生两个中断标志)
当计数到跟TACCR0一样的时候,就返回0,重新计数。当计数到TACCR0的同时产生一个中断标志CCIFG,而当计数器溢出返回零的同时又同时产生一个中断标志TAIFG。如图: 
图 2 增计数模式的时序图
3.连续计数模式(产生一个中断标志)
计数器将直接计数到计数器所能计数的最大值0FFFFH之后重新返回零,再次计数。返回零的同时产生一个TAIFG中断标志。如图

图3 连续技术模式的时序图
如果相应中断位允许,每当一个定时间隔到都会产生中断请求,在连续计数模式下,须将下一事件发生的时间在当前中断程序中加到CCRx中,如图4,下次发生中断的时间等于在CCR0a发生中断时刻,CCR0 = CCR0a + Δt

图 4 连续计数模式下中断与CCRx关系
4 增减计数模式(产生两个中断标志)
当计数器计数到跟TACCR0一样的之后,然后从TACCR0开始又减少,直到为零,然后又开始增。当计数跟TACCR0一样的时候产生一个中断标志CCIFG,当减到为零的时候又产生一个中断标志TAIFG。如图:

图 5 增减计数模式时序图
5 16 位定时器 A 模块捕获/比较工作原理
[1] 捕获模式
当 TACCTLx 中的 CAP=1,该模块工作在捕获模式,这时如果在选定的引脚上发生设定的脉冲触发沿
(上升沿,下降沿或任意跳变),则 TAR 中的值将写到 TACCRx 中。
每个捕获/比较寄存器都能被软件用于时间标记,可用于各种目的。例如,测量软件程序所用时间,测
量硬件事件间的时间,测量系统频率。
当捕获完成后,中断标志位 CCIFG 被置位。如果总的中断允许位 GIE 允许,相应的中断允许位 CCIE
也允许,则将产生中断请求。

[2] 比较模式
比较方式主要用于为软件或应用硬件产生定时,还可为 D/A 转换功能或者马达控制等各种用途产生脉
宽调制(PWM)输出信号。独立的输出模块被分配给各个捕获/比较寄存器的每一个,输出模块可以独立运行
于比较功能,或以各种方式触发。
当 TACCTLx 中的 CAP=0,该模块工作在比较模式。这时与捕获有关的硬件停止工作,在计数器 TAR
中计数值等于比较器中的值时设置标志位,产生中断请求;也可结合输出单元产生所需要的信号。
3 个捕获/比较器在比较模式时设置 EQUx 信号有差别:
当 TAR 的值大于等于 TACCR0 中的数值时,EQU0=1;
当 TAR 的值等于相应的 TACCR1 或 TACCR2 的值时,EQU1=1 或 EQU2=1。
6 16 位定时器 A 模块输出工作原理
每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有 8 种工作模式,可产生
基于 EQUx 的多种信号。输出单元的结构及时序如图。
最终的输出信号源于一个 D 触发器。该触发器的数据输入源于输出控制模块,输出控制模块又分 3 个输入
信号(EQU0,EQU1,EQU2 和 OUTx)经模式控制位 OMx0,OMx1 和 OMx2 运算后输出到 D 触发器。
D 触发器的置位端和复位端也都将影响到最终的输出。D 触发器的时钟信号为定时器的时钟,在时钟为低
电平时采样 EQU0 和 EQU1,EQU2,在时钟的下一个上升沿锁存入 D 触发器中。
输出模式由模式控制位 OMx0,OMxc1 及 OMx2 决定,共有 8 种输出模式,分别对应 OMx2,OMx1 及
OMx0 的值。除模式 0 外,其他的输出都在定时时钟上升沿发生变化。输出模式 2、3、6、7 不适合输出
单元 0,因为 EQUx=EQU0。
输出模式 0 输出模式:
输出信号 OUTx 由每个捕获/比较模块的控制寄存器 TACCTLx 中的 OUTx 位定义,
并在写入该寄存器后立即更新,最终位 OUTx 直通。
输出模式 1 置位模式:
输出信号在 TAR 等于 TACCRx 时置位,
并保持置位到定时器复位或选择另一种输出模式为止。
输出模式 2 PWM 翻转/复位模式:
输出在 TAR 的值等于 TACCRx 时翻转,
当 TAR 的值等于 TACCR0 时复位
输出模式 3 PWM 置位/复位模式:
输出在 TAR 的值的等于 TACCRx 时置位,
当 TAR 的值等于 TACCR0 时复位。
输出模式 4 翻转模式:
输出电平在 TAR 的值等于 TACCRx 时翻转,
输出周期时定时器周期的 2 倍。
输出模式 5 复位模式:
输出在 TAR 的值等于 TACCRx 时复位,
并保持低电平知道选择另一种输出模式。
输出模式 6 PWM 翻转/置位模式:
输出电平在 TAR 的值等于 TACCRx 时翻转,
当 TAR 值等于 TACCR0 时置位。
输出模式 7 PWM 复位/置位模式:
输出电平在 TAR 的值等于 TACCRx 时复位,
当 TAR 的值等于 TACCR0 时置位。
输出单元在控制位的控制下,有 8 种输出模式输出信号。这些模式与 TAR,TACCRx,TACCR0 的值
有关。在增计数模式下,当 TAR 增加到 TACCRx 或从 TACCR0 计数到 0 时,OUTx 信号按选择的输出模
式发生变化。
连续计数模式下的输出波形与增计数模式一样,只是计数器在增计数到 TACCR0 后还要继续计数到
0xFFFF,这样就延长了计数器计数到 TACCR1 的数值后的时间。这是与增计数模式不同的地方。
连续计数模式下的输出波形:

在增/减计数模式下的输出实例如图,这时的各种输出波形与定时器增计数模式或连续计数模式不同。
当定时器在任意计数方向等于 TACCRx 时,OUTx 信号都按选择的输出模式发生改变。
在增/减计数模式下的输出实例:


浙公网安备 33010602011771号