100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > MSP430学习笔记-定时器A

MSP430学习笔记-定时器A

时间:2022-11-29 00:01:01

相关推荐

MSP430学习笔记-定时器A

16 位定时器 A 模块寄存器

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 中断请求

TAR TIMER_A 计数器

该单元就是执行计数的单元,时计数器的主体,其内容可读可写。

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)

TACCRx TIMER_A 捕获/比较寄存器

在捕获/比较模块中,可读可写。

在捕获方式,当满足捕获条件,硬件自动将计数器 TAR 数据写入该寄存器。如果测量某窄脉冲(高电平)

脉冲长度,可定义上升沿和下降沿都捕获。在上升沿时,捕获一个定时器数据,这个数据在捕获寄存器中

读出;再等待下降沿到了,在下降沿时又捕获一个定时器数据;那么两次捕获的定时器数据就时窄脉冲的

高电平宽度。

其中 CCR0 经常用作周期寄存器,其他 CCRx 相同。

TAIV TIMER_A 中断向量寄存器

TIMER_A 共有 4 种技术模式,可以根据需要,灵活选用:

停止模式增计数模式连续技术模式增/减计数1

16 位定时器 A 模块头文件定义

/************************************************************ * Timer A3 ***********************************************************/ #define TAIV_ (0x012E) /* Timer A Interrupt Vector Word */READ_ONLY DEFW( TAIV , TAIV_) #define TACTL_ (0x0160) /* Timer A Control */DEFW( TACTL , TACTL_) #define TACCTL0_ (0x0162) /* Timer A Capture/Compare Control 0 */DEFW( TACCTL0 , TACCTL0_) #define TACCTL1_ (0x0164) /* Timer A Capture/Compare Control 1 */DEFW( TACCTL1 , TACCTL1_) #define TACCTL2_ (0x0166) /* Timer A Capture/Compare Control 2 */DEFW( TACCTL2 , TACCTL2_) #define TAR_ (0x0170) /* Timer A */DEFW( TAR , TAR_) #define TACCR0_ (0x0172) /* Timer A Capture/Compare 0 */DEFW( TACCR0 , TACCR0_) #define TACCR1_ (0x0174) /* Timer A Capture/Compare 1 */DEFW( TACCR1 , TACCR1_) #define TACCR2_ (0x0176) /* Timer A Capture/Compare 2 */DEFW( TACCR2 , TACCR2_) /* Alternate register names */ #define CCTL0 TACCTL0 /* Timer A Capture/Compare Control 0 */#define CCTL1 TACCTL1 /* Timer A Capture/Compare Control 1 */#define CCTL2 TACCTL2 /* Timer A Capture/Compare Control 2 */#define CCR0 TACCR0 /* Timer A Capture/Compare 0 */#define CCR1 TACCR1 /* Timer A Capture/Compare 1 */#define CCR2 TACCR2 /* Timer A Capture/Compare 2 */#define CCTL0_ TACCTL0_ /* Timer A Capture/Compare Control 0 */#define CCTL1_ TACCTL1_ /* Timer A Capture/Compare Control 1 */#define CCTL2_ TACCTL2_ /* Timer A Capture/Compare Control 2 */#define CCR0_ TACCR0_ /* Timer A Capture/Compare 0 */#define CCR1_ TACCR1_ /* Timer A Capture/Compare 1 */#define CCR2_ TACCR2_ /* Timer A Capture/Compare 2 */#define TASSEL2 (0x0400) /* unused */ /* to distinguish from USART SSELx */#define TASSEL1 (0x0200) /* Timer A clock source select 0 */#define TASSEL0 (0x0100) /* Timer A clock source select 1 */#define ID1 (0x0080) /* Timer A clock input devider 1 */#define ID0 (0x0040) /* Timer A clock input devider 0 */#define MC1 (0x0020) /* Timer A mode control 1 */#define MC0 (0x0010) /* Timer A mode control 0 */#define TACLR (0x0004) /* Timer A counter clear */#define TAIE (0x0002) /* Timer A counter interrupt enable */#define TAIFG (0x0001) /* Timer A counter interrupt flag */#define MC_0 (0*0x10u) /* Timer A mode control: 0 - Stop */#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */#define MC_3 (3*0x10u) /* Timer A mode control: 3 - Up/Down */#define ID_0 (0*0x40u) /* Timer A input divider: 0 - /1 */#define ID_1 (1*0x40u) /* Timer A input divider: 1 - /2 */#define ID_2 (2*0x40u) /* Timer A input divider: 2 - /4 */#define ID_3 (3*0x40u) /* Timer A input divider: 3 - /8 */#define TASSEL_0 (0*0x100u) /* Timer A clock source select: 0 - TACLK */#define TASSEL_1 (1*0x100u) /* Timer A clock source select: 1 - ACLK */#define TASSEL_2 (2*0x100u) /* Timer A clock source select: 2 - SMCLK */#define TASSEL_3 (3*0x100u) /* Timer A clock source select: 3 - INCLK */#define CM1 (0x8000) /* Capture mode 1 */#define CM0 (0x4000) /* Capture mode 0 */#define CCIS1 (0x2000) /* Capture input select 1 */65#define CCIS0 (0x1000) /* Capture input select 0 */#define SCS (0x0800) /* Capture sychronize */#define SCCI (0x0400) /* Latched capture signal (read) */#define CAP (0x0100) /* Capture mode: 1 /Compare mode : 0 */#define OUTMOD2 (0x0080) /* Output mode 2 */#define OUTMOD1 (0x0040) /* Output mode 1 */#define OUTMOD0 (0x0020) /* Output mode 0 */#define CCIE (0x0010) /* Capture/compare interrupt enable */#define CCI (0x0008) /* Capture input signal (read) */#define OUT (0x0004) /* PWM Output signal if output mode 0 */#define COV (0x0002) /* Capture/compare overflow flag */#define CCIFG (0x0001) /* Capture/compare interrupt flag */#define OUTMOD_0 (0*0x20u) /* PWM output mode: 0 - output only */#define OUTMOD_1 (1*0x20u) /* PWM output mode: 1 - set */#define OUTMOD_2 (2*0x20u) /* PWM output mode: 2 - PWM toggle/reset */#define OUTMOD_3 (3*0x20u) /* PWM output mode: 3 - PWM set/reset */#define OUTMOD_4 (4*0x20u) /* PWM output mode: 4 - toggle */#define OUTMOD_5 (5*0x20u) /* PWM output mode: 5 - Reset */#define OUTMOD_6 (6*0x20u) /* PWM output mode: 6 - PWM toggle/set */#define OUTMOD_7 (7*0x20u) /* PWM output mode: 7 - PWM reset/set */#define CCIS_0 (0*0x1000u) /* Capture input select: 0 - CCIxA */#define CCIS_1 (1*0x1000u) /* Capture input select: 1 - CCIxB */#define CCIS_2 (2*0x1000u) /* Capture input select: 2 - GND */#define CCIS_3 (3*0x1000u) /* Capture input select: 3 - Vcc */#define CM_0 (0*0x4000u) /* Capture mode: 0 - disabled */#define CM_1 (1*0x4000u) /* Capture mode: 1 - pos. edge */#define CM_2 (2*0x4000u) /* Capture mode: 1 - neg. edge */#define CM_3 (3*0x4000u) /* Capture mode: 1 - both edges */

——《MSP430 系列十六位超低功耗单片机 教学实验系统实验教程》赵建 谢楷 沈雪亮 张宝 梁海军 杨乐林 庹明光 徐常志 编写

定时器 TAR 的值从 TACCR0-1 计数到 TACCR0 时,中断标志 CCIFG0 置位;

当定时器从 1 减计数到 0 时,中断标志 TAIFG 置位。 ↩

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。