MSP430定时器
此时Timer的值是稳定的
竞争条件(竞争冒险)
同步捕捉方式设置(CAP=1 , SCS=1 )
MOV #CAP+SCS+CCIS1+CM_1 , &TACCTLx CCIxB capture on rising edge
比较方式( Compare Mode , CAP=0 )
主要应用: • 产生 PWM 等定制输出信号; • 定时输出:在指定时间间隔结束后产生输出; • 定时中断:在指定时间间隔结束后产生中断。
TAIV中断( 3 种中断,共享同一个中断向量)
最大锯齿波方式
注意:本方式不需要CCR0协助
Up/Down Mode
三角波方式
注意:本方式需要CCR0(比较方式)协助
捕捉 / 比较模块
Capture / Compare Blocks
TACLK TAINCLK
Timer Block 定时器模块
EQU0 P1.1/TA0 P2.2/TA0 P1.5/TA0 P2.7/TA0
② TAIV 中断:
TACCR1 CCIFG TACCR2 CCIFG TAIFG
共享中断向量,在 0FFEAh 中
0FFECh 0FFEAh 6 5
TACCR0 Interrupt TAIV Interrupt
TACCR0 CCIFG TACCR1 CCIFG, TACCR2 CCIFG, TAIFG
00: stop mode 01: up mode 10: continuous mode 11: up/down mode
1: interrupt pending
1: TA interrupt enabled
1: reset TAR ,clock divider and count direction for up/down mode. The TACLR bit is automatically reset and is always read as zero.
Tdead = Ttimer×( TACCR1-TACCR2 ) Ttimer: Cycle time of the timer clock
Tdead
OUT1 OUT2
Timer_A 中断
与 Timer_A 模块有关中断有两大类: ① TACCR0 中断:
TACCR0 CCIFG,独享中断向量,在 0FFECh 中
定时器 A 的四种计数方式(Count Mode)
MCx 0 0: 0 1: 1 0: 1 1: count mode stop mode up mode continuous mode up/down mode
Mode Control
Stop mode : the timer is halted
同步时钟 同步电路
置位SCS将使捕捉信号与下一个时钟信号同步, 实际使用时推荐使用该同步方式(SCS=1)
当捕捉电路捕捉到一个有效的输入信号后: • 将 TAR 的值锁存至 TACCRx 中; • 置位中断标志位 TACCRx CCIFG
同步捕捉方式(SCS=1 , CAP=1 ) 同步过程示意图 在Timer Clock的下降沿处同步,
第7章 MSP430 定时器 Timer_A
第1节 定时器/计数器概述 第2节 MSP430 Timer_A 第3节 Timer_A 应用编程举例 本章教学目标:
1、了解定时器/计数器基本概念 2、掌握 Timer_A 的组成与工作原理 3、掌握 Timer_A 编程技术
第1节 定时器/计数器概述
用于捕捉事件发生的时刻
可应用于速度、脉冲宽度等测量
捕捉方式( Capture Mode , CAP=1 )
CAP=1
当捕捉电路捕捉到一个有效的输入信号后: • 将 TAR 的值锁存至 TACCRx 中; • 置位中断标志位 TACCRx CCIFG
同步捕捉方式(SCS=1 , CAP=1 )
同步选择
当不使用Timer时, 应将Timer配置为Stop mode , 这样可以降低芯片的功耗
Up Mode 锯齿波方式,需要CCR0(比较方式)协助
在Timer Clock的上升沿处TAR=TAR+1, 当TAR≥TACCR0时,自动清零TAR
period=(TACCR0+1)×T
T
Continuous Mode
Timer Block 定时器模块
EQU0 P1.1/TA0 P2.2/TA0 P1.5/TA0 P2.7/TA0
CCR0
捕捉/比较
P1.2/TA1
CCR1
捕捉/比较
P1.3/TA2
CCR2
捕捉/比较
模块0
P1.6/TA1 P2.3/TA1
模块1
P1.7/TA2 P2.4/TA2
模块2
捕捉输入(CCIxA)/比较输出引脚 捕捉输入(CCI0B)引脚 比较输出引脚
工作原理:当 TAR 计数到 TACCRx 时 • 置位中断标志 CCIFG; • 内部信号 EQUx=1; • 根据输出方式输出相应的信号。
比较方式( Compare Mode , CAP=0 )
(是否需要清零 CMx ,以停止捕捉功能? )
CAP=0
TA 比较电路 ( CAP=0 )
当 TAR 计数到 TACCRx 的值的时候: • 内部信号 EQUx=1; • 置位中断标志 TACCRx CCIFG; • CCI 被锁存入 SCCI 中; • 根据输出方式输出相应的信号(参见输出电路)
输出举例2
定时器:Continuous Mode 使用TACCR0 和 TACCR1
OUT1
当初始输出=0时,mode2和mode3的效果相同
输出举例3
定时器:Up/Down Mode 使用TACCR0 和 TACCR1
OUT2
输出举例4
定时器:Up/Down Mode OUT1 使用 TACCR0 和 TACCR1 OUT2 使用 TACCR0 和 TACCR2
比较输出电路
x=0,1,2
OUTx
x=0,1,2
输出方式选择 (8种)
除方式0外,OUTx在Timer Clock 的上升沿处改变
OUTx
OUTMODx = 000,输出方式0,OUTx = OUT
OUT=TACCTLx.2
1
输出方式 0 可用于输出信号的初始化
OUTx
x=0,1,2
OUTMODx ≠ 000,输出方式1~7 OUTx 与 OUT 无关
第2节 MSP430 Timer_A
• • • • • 异步16-bit定时器/计数器,具有4种工作模式; 可编程选择的时钟源; 3个可编程的捕捉/比较寄存器; 可编程输出方式(8 种 ); 具有中断功能(计数器溢出、捕捉/比较中断)
MSP430F149 Timer_A 原理图
TACLK TAINCLK
7种输出方式 定义:
对输出电路0 (x=0) 无意义 EQUx=EQU0
mode 5 是 mode mode 1 的反 mode 6 是 mode mode 2 的反 mode 7 是 mode mode 3 的反
常用输出方式定义:
OUTMODx EQUx / EQU0 Description
EQUx有效时输出反相 EQU0有效时输出0 EQUx有效时输出1 EQU0有效时输出0 EQUx有效时输出反相 EQU0有效时输出不变
定时器模块(Timer Block)
CCR0比较器输出
Timer Clock 的上升沿触发 16-bit 的定时/计数寄 存器(TAR)加 1 或减 1(取决于计数方式)。另外, TAR 可以由程序读出,也可以由程序设置初值。
定时器 A 控制寄存器
00: பைடு நூலகம்1 01: /2 10: /4 11: /8
捕捉信号
TACCTL0.4
比较信号
TACCR0 CCIFG TACCTL0.8
GIE
CAP=0 : Compare Mode 比较方式 CAP=1 : Capture Mode 捕捉方式
TACCR0 中断子程结构
#include <msp430x14x.h> ;-----------------------------------------------------------------------------ORG 01100h ; Program Start ;-----------------------------------------------------------------------------RESET mov #0A00h,SP ; Initialize stackpointer …… mov #CCIE,&TACCTL0 ; TACCR0 interrupt enabled …… Main bis #GIE,SR ; interrupts enabled …… ;-----------------------------------------------------------------------------TACCR0_ISR …… reti ;-----------------------------------------------------------------------------; Interrupt Vectors ;-----------------------------------------------------------------------------ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFECh ; TACCR0 interrupt Vector DW TACCR0_ISR END