MSP430定时器
msp430定时器部分

case 4:break;
case 10:P1OUT^=BIT0;break;
}
}
ห้องสมุดไป่ตู้
输出模式4主要是翻转:在TAR=CCRX的时候发生翻转。
输出模式主要是复位:在TAR=CCRX时发生复位,只有其他模式到来的时候才能变换。
输出模式6主要是PWM翻转和置位:在TAR=CCR0的时候,发生PWM翻转,在TAR=CCR0的时候,发生置位。
输出模式7主要是PWM复位和置位:在TAR=CCRX的时候,发生PWM复位,在TAR=CCR0的时候,发生复位。
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000;
TACTL=TASSEL_2+MC_2;
_BIS_SR(GIE);
while(1);
例如:增计数模式下,使用定时器中断使接口发生翻转:
#include<msp430f149.h>
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000-1;
TACTL=TASSEL_2+MC_1;
定时器的工作模式:
定时器的工作模式位由寄存器TACTL中的MC1和MC0两位控制。
1.停止模式:
定时器暂停计数,就是说当暂停结束后,重新开始计数的时候,计数的开始位是从暂停时候的数开始的。如果想重新计数就得对TACTL控制寄存器中的CLR位置位。
MSP430 定时器A的使用

第四讲定时器A的使用MSP430F413芯片中含有TimerA3模块,如图1-2所示。
其常用的外引线有三条:TACLK、TA1和TA2。
TACLK:定时器_A输入时钟(48脚),与P1.6和ACLK输出共用同一引脚。
TA1:定时器_A的第一通道输入、输出引脚(51脚)。
捕获方式:CCI1A输入;比较方式:OUT1输出。
TA2:定时器_A的第二通道输入、输出引脚(45脚)。
捕获方式:CCI2A输入;比较方式:OUT2输出。
1.定时器A功能及结构定时器A基本结构是一个十六位计数器,由时钟信号驱动工作,结构框图如图4-1所示。
图4-1 定时器A结构图定时器A具有多种功能,其特性如下:(1)输入时钟可以有三种选择,可以是慢时钟(ACLK)、快时钟(SMCLK与单片机主时钟同频)和外部时钟。
(2)能产生的定时中断、定时脉冲和PWM(脉宽调制)信号,没有软件带来的误差。
(3)不仅能捕获外部事件发生的时间,还可选择触发脉冲沿(由上升沿或下降沿触发)。
定时器A功能模块主要包括:(1)计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活的完成定时/计数功能。
(2)捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。
不同的MSP430单片机,Timer_A模块中所含有的捕获/比较器的数量不一样,每个捕获/比较器的结构完全相同,输入和输出都取决于各自所带控制寄存器的控制字,捕获/比较器相互之间完全独立工作。
(3)输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号,支持PWM输出。
2.定时器工作模式(1)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。
当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。
第4讲MSP430单片机定时器2

定时器 A —— 主要内容
◆
定时器A的特性
◆ 定时器A的结构 ◆ 定时器A的工作原理
定时器工作模式 捕获/比较模块 输出单元 Timer_A中断
◆ 定时器A的典型应用
定时器 A —— 特性(1/1)
◆ 定时器 A 由一个16位定时器和多路捕获/比较通道组成。 ◆ MSP430X5XX
/ 6XX系列单片机的Timer _A有以下特性:
看门狗定时器 —— 概述
◆ 看门狗定时器,主要作用:
用于在“程序跑飞”时,WDT就会产生溢出,从而产生系 统复位,CPU需要重新运行用户程序,这样程序就可以又回 到正常运行状态。
◆ MSP430 看门狗模块具有以下特性:
8 种软件可选的定时时间 看门狗工作模式 定时器工作模式 带密码保护的 WDT 控制寄存器 时钟源可选择 为降低功耗,可停止 时钟失效保护
【例1】 利用TA0定时器,使其工作在增计数模式,采用SMCLK作为其计数参考时钟,并启用 TA0CCR0计数中断,在TA0中断服务程序中反转P1.0口状态,以便于用示波器进行观察。 #include <msp430f6628.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P1DIR |= 0x01; // P1.0 设为输出 TA0CCTL0 = CCIE; // CCR0中断使能 TA0CCR0 = 50000; TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, 增计数模式, 清除TAR计数器 __bis_SR_register(LPM0_bits + GIE); // 进入LPM0,使能中断 } // TA0中断服务程序 #pragma vector=TIMER0_A0_VECTOR __interrupt void TIMER0_A0_ISR(void) { P1OUT ^= 0x01; // 反转P1.0口输出状态 }
msp430的定时器

对于学习新的单片机来说,就我个人意见在知道基本功能后应该先掌握定时器的用法,可以能帮助你很快的掌握单片机的用法并尽快能进行单片机的应用,所以对于430我也同样先掌握定时器的用法。
msp430单片机一共有5种类型的定时器,看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。
但是这些模块不是所有msp430型号都具有的功能。
1、看门狗定时器(WDT)学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。
msp430中它是一个16位的定时器,有看门狗和定时器两种模式。
2、基本定时器(Basic Timer1)基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。
它可以只两个8位定时器,也可以是一个16位定时器。
3、8位定时器/计数器(8-bit Timer/Counter)如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。
4、16位定时器A和B定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。
定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器。
并且有8种输出模式。
通过8种输出模式很容易实现PWM波。
我先给出我的一个应用程序,然后通过程序来书名定时器A的基本用法。
程序如下:void init_TimerA ( void ){CCTL0 = CCIE; // 开启比较器0中断CCR0 = 32768; // 1S秒的定时CCTL1 = CCIE; // 开启比较器1中断CCR1 = 100; // 3.66mS显示延迟TACTL = TASSEL_1 + MC_1; // 开启定时器}#pragma vector = TIMERA0_VECTOR__interrupt void Timer_A0(void){time_flag = 1; // 时间变动标志if(time_stop == 1) // 设置模式标志time[0] ++; // 秒加1start_ADC12(); // 开启AD}#pragma vector = TIMERA1_VECTOR__interrupt void Timer_A1 ( void ){unsigned char tmp;tmp = TAIV;if ( tmp == 2 ) // 比较器1中断{led_flag = 1; // 刷新显示标志CCR1 += 100; // 3.35mSif ( CCR1 >= 32768 )CCR1 -= 32768;}if ( tmp == 4 ) // 比较器2中断{keyread_flag = 1; // 读取键值标志CCR2 += 5000; // 152.6mS长按键自加间隔if ( CCR2 >= 32768 )CCR2 -= 32768;}LPM3_EXIT; // 退出低功耗}定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2。
016:MSP430_WDT看门狗定时器

016:MSP430_WDT看门狗定时器1, 看门狗定时器概述看门狗定时器(WDT)是 MSP430 系列单⽚机中常⽤的⼀种部件。
在⼯业现场,往往会由于供电电源、空间电磁⼲扰或其他原因引起强烈的⼲扰噪声。
这些⼲扰作⽤于数字器件,极易使其产⽣误动作,从⽽失去应有的控制功能,引起 MSP430 发⽣“程序跑飞”事故。
若不进⾏有效的处理,程序就不能回到正常的状态,从⽽失去应有的控制功能。
看门狗定时器正是为了解放这类问题⽽产⽣的,尤其是在具有循环结构的程序任务中更为有效。
在正常操作器件,⼀次 WDT 定时时间到,将产⽣⼀次器件复位。
如果通过编制程序使 WDT 定时时间稍⼤于程序执⾏⼀遍所⽤的时间时,并且程序执⾏过程中都有对看门狗定时器清零的指令,使计数器重新计数,则程序正常执⾏时,就会在 WDT 定时时间到达之前对 WDT 清零,不会产⽣ WDT 溢出,如果由于⼲扰使程序跑飞,则不会在 WDT 定时时间到达之前执⾏ WDT 清零指令,WDT 就会产⽣溢出,从⽽产⽣系统复位 CPU 需⽤重新运⾏⽤户程序,这样程序就可以⼜恢复正常运⾏状态。
MSP430 看门狗除了具有上述系统监测的特定⽤途之外,还可以作为内部定时器来使⽤,当选择的时间到达之后,和其他定时器⼀样产⽣⼀个定时中断。
此外 WDT 还可以被完全停⽌活动以⽀持超低功耗应⽤2 看门狗定时器结构3 看门狗定时器寄存器[1] WDTCTL 看门狗控制寄存器WDTCTL 由两部分组成:⾼ 8 位是对 WDT 操作的控制命令。
要写⼊操作 WDT 的控制命令,出于安全原因必须先正确写⼊⾼字节看门狗⼝令。
⼝令位 5AH,如果⼝令写错将导致系统复位。
读 WDTCTL 时,不需要⼝令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,⾼字节始终位 69H。
WDTCTL 除了看门狗定时器的控制位之外,还有两个⽤于设置 NMI 引脚功能。
WDTISx:选择看门狗定时器的计时输出其中 T 是 WDTCNT 的输⼊时钟源周期。
MSP430单片机应用之定时器、PWM

{
...
&0x01)
{
P1OUT–0x01;//翻转状态
IFG&=0xfe;//清除中断标志位
}
}
}
(2)中断方式:WDTCTL与查询方式相同设置,另外需要置位中断允许位
(WDTIE,位于IE1.0)使得单片机能够响应这一中断。
#pragmavector=WDT_VECTOR
MSP430单片机应用之定时器、PWM
1。定时器使用查询和中断两种方式。大多数逻辑芯片输出0的能力大于
输出1的能力。
(1)查询方式:TMSEL决定看门狗的工作模式,置一,看门狗工作在定时
模式。SSEL选择看门狗定时器的时钟源。SSEL置一。IS0IS1决定了看门狗
定时器的输出频率。(注意:使用查询方式时候要清除中断标志)
注意:输出PWM的周期应远小于积分电路的积分常数。提高DA精度
CCR0不宜过小。
扩展阅读:MSP430单片机低功耗结构原理
__interruptvoidWDT_ISR()
{
P1OUT–0x01;
}
main()
{
...
while(True);
}
2.PWM(用定时器A实现)
(1)可用提高频率的方法来取得DA的效果,但是有些场合仍不能满足要
求,这要就需要一个积分电路来获得理想的DA效果
(2)对TA的设置:比较/捕获模块控制寄存器:捕获比较寄存器CCRx.
MSP430单片机——定时器

MSP430单片机——定时器
昨天调了MSP430单片机的定时器,犯了个比较傻的错误。
定时器有四种模式,停止模式,增模式,连续模式,增减模式。
定时器中断也有四个,CCR0,CCR1,CCR2及溢出中断,四个。
在学习过程中,我想用下溢出中断,然后定时器又设置在了增模式,因为不希望产生比较/捕捉中断,就没有设置CCR0,原本的想法是不设置CCR0,那么定时器就会自动计数到0xFFFF后产生溢出重新计数。
结果程序没有这样想象的执行。
定时器进不了溢出中断。
最后才发现,如果定时器工作在了增模式,那么就一定要设置CCR0,因为不论是比较中断还是溢出中断,都是定时器的计数值与CCR0相关,此时的溢出中断,也是定时器计数到CCR0,然后产生溢出,又重新开始计数。
然而,如果设置在了连续模式,就不需要设置CCR0了,连续模式的计数,定时器会计数到0xFFFF后产生溢出。
虽然很简单的定时器操作,但是调试过程中,还是遇到了各种小问题。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
msp430定时器AD模块以及其他笔记

定时器A用到CCR0定时器A的中断可由定时器溢出引起,也可由捕获/比较器模块产生。
每个捕获/比较模块可以独立编程,由捕获/比较外部信号产生中断。
定时器A使用两个中断向量,一个单独分配给捕获/比较寄存器CCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。
捕获/比较寄存器CCR0中断向量具有最高优先级,因为CCR0主要用来定义定时器的工作模式,而这是定时器A其他功能的基础,需要最快速的服务。
开启定时器应该在修改定时器工作频率之前。
CCR1,CCR2和定时器共用另一个中断向量,属于多源中断。
由向量中断寄存器TAIV决定由哪个中断标志来触发中断。
中断标志产生数据表:中断优先级中断源缩写 TAIV 的内容最高捕获/比较器1 CCIFG1 2捕获/比较器2 CCIFG2 4定时器溢出 TAIFG 10最低没有中断将挂起 0PxDIR输入/输出方向寄存器0:I/O引脚切换成输入模式 PxIN1:I/O引脚切换成输出模式 PxOUTPxIE中断使能寄存器0:禁止该中断 1:允许该中断PxIES中断触发沿选择寄存器如果允许Px口的某个引脚中断,还需要定义该引脚的中断触发沿。
0:上升沿使相应标志置位 1:下降沿使相应标志置位PxSEL功能选择寄存器0:选择引脚为I/O端口 1:选择引脚为外围模块功能上电复位信号:POR(power-on reset)上电清除复位信号:PUC(power-up clear)POR信号的产生总会产生PUC信号,但是PUC信号的发生不一定会产生POR信号。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
TACTL是最为主要的控制寄存器,它决定了TA的输入时钟信号、TA的工作模式、TA的开启与停止、中断的申请等工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竞争条件(竞争冒险)
同步捕捉方式设置(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