MSP430 定时器A

合集下载

msp430定时器部分

msp430定时器部分
case 2: break;
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的使用

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)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。

当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。

MSP430定时器A捕捉脉实例

MSP430定时器A捕捉脉实例

MSP430定时器A捕捉脉实例[调试通过,很好用]微控论坛原创主贴作者:fangthMicrocontrol CODE/*****************************************************************//功能:利用定时器A的捕捉能测量脉冲信号的脉宽////// MSP430F449// -----------------// /|\| XIN|-// | | | 32kHz// --|RST XOUT|-// | |// | P1.5/ACLK|---+// | | |// | P2.0/TA2|<--+// | |// | |//说明:ACLK要进行8分频(4K),并将其作为外部的要捕获的脉冲;//MCLK=SMCLK=8M;*****************************************************************/#include <msp430x44x.h>int pwm_start,pwm_end,pwm_wide=0;void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTP1DIR = 0x20; // P1.5 输出P1SEL = 0x20; // P1.5输出ACLKP2SEL|=BIT0; //P2.0 CCI2ASCFI0 |= FN_4;SCFQCTL = 121; // (121+1) ×32768 *2= 7.99MhzFLL_CTL0=DCOPLUS+OSCCAP1; //MCLK=SMCLK=8MFLL_CTL1 |= FLL_DIV_8; //ACLK要进行8分频,ACLK=4KTACCTL2 =CAP+CM_3+CCIS_0+SCS+CCIE; //捕获模式,上升和下降都捕获,选择CCI2A,同步,捕获中断开//Capture input select: 0 - CCI2ATACTL = TASSEL_2 + MC_2 ; //SMCLK=8M,L连续计数模式_EINT(); //开总中断LPM0;_NOP();pwm_wide=pwm_end-pwm_start;while(1);}// Timer_A3 Interrupt Vector (TAIV) handler#pragma vector=TIMERA1_VECTOR__interrupt void Timer_A(void){switch(TAIV){case 2:break;case 4:if(TACCTL2 & CCI)pwm_start=CCR2;elsepwm_end=CCR2;//pwm_wide=pwm_end-pwm_start;break;case 10:break;}LPM0_EXIT;}检验方法:在调试环境下,在watch 窗口观察pwm_end和pwm_start,然后相减!我计算了一下。

【MSP430入门例程】:Timer A

【MSP430入门例程】:Timer A

MSP430F1系列定时器A结构图[1]TimerA模块结构组成在MSP430F1XX-TimerA的结构中,分别由TA基础模块、CCR0、CCR1、CCR2子模块。

TA基础模块:[1]TA基础子模块主要完成定时器时钟源的输入(时钟源的选择、分频)。

[2]TA定时器计数。

[3]定时器的工作模式设置。

CCR0、CCR1、CCR2子模块:CCRx全称为Capture Compare Register-捕获比较寄存器,这些子模块有着捕获和比较的功能。

捕获、比较信号的触发源可以从芯片的外部引脚、CPU的外围模块输入来。

同时CCRx子模块也有其输出信号OUT.x ,此OUT.x可以输出到芯片的外部引脚、或输入到CPU的外围模块中。

CCRx与TAR(Timer A Register - 简称:TAR )结合使可以实现特定的的功能。

常用TimerA可以实现功能:PWM信号输出功能:通过设置TA的工作模式,结合CCR0、CCR1或CCR2计数。

直从CCR0、CCR1或CCR2中子模块的OUT.x端输出。

Slope AD转换功能:利用定时器A与比较器A结合设计成斜边数模转换器。

实现软USART功能:利用CCR0子模块中的捕获输入功能,结合TAR实现通用串行异步通讯功能(USART)。

ADC12模块的采样信号:利用定时器的TAR或CCR0实现OUT.x输出得到ADC12模块所需要的采样触发信号。

其它应用...。

[2]TimerA 模块工作模式[TA工作模式]TA定时器的工作模式有4种,这4种模式由TACTL寄存器的MC1、MC0位控制:模式 MC1 MC0 功能说明停止0 0 TA为停止(上电状态)增计数0 1 TAR增计数至CCR0,然后回到0。

连续计数 1 0 TAR连续计数至FFFFH,然后回到0。

增/减计数 1 1 TAR增计数至CCR0,然后减计数至0。

[时钟输入]定时器A时钟源有4种选择,分别为外部时钟TACLK、辅助时钟ACLK、子系统时钟SMCLK及INCLK。

第5章 MSP430单片机片内外设及其应用[3]_timer_A

第5章 MSP430单片机片内外设及其应用[3]_timer_A
31
3. 定时器模式

定时器A共有4种工作模式:停止模式、增计数模式、连续计数模式 和增/减计数模式,由控制寄存器TACTL中MC0和MC1两位决定。
32
(1) 停止模式

当MC1=0,MC0=0时,定时器工作在停 止模式。定时器暂停,但并不复位,所有 寄存器现行的内容在停止模式结束后都可 用。当定时器暂停后重新计数时,计数器 将从暂停时的值开始,以暂停前的计数模 式继续计数。如果不需要这样,则可通过 TACTL中的CLR控制位来清除定时器的方 向记忆特性。
21


CCIFGx 捕获/比较中断标志。捕获模式时, CCIFGx置位表示在寄存器CCRx中捕获了定时器 TAR的值;比较模式时,CCIFGx置位表示定时 器TAR的值等于寄存器CCRx中的值。 而在3个中断标志中,CCIFG0在被中断服务时能 自动复位;CCIFG1和CCIFG2在读中断向量字 TAIV后,自动复位。如果不访问TAIV寄存器, 须用户软件清零;如果相应的中断允许位不允许 中断,则不会产生中断请求,但中断标志位仍存 在(CCIFGx=1),这时须用户软件清除。
20

CCIEx 中断允许位。该位决定相应的捕获/比较模块是否允许中断 。

0 禁止; 1 允许。


CCIx 捕获/比较模块的输入信号。 捕获模式:由CCIS0和CCIS1选择的输入信号可通过该位读出。 比较模式:CCIx复位。 OUT 输出信号。如果OUTMODx选择输出模式0,则该位即为输出 到OUTx的信号。 COV 捕获溢出标志。在比较模式下,捕获信号复位,捕获事件不会 使COV置位。在捕获模式下,如果捕获寄存器的值被读出前再次发 生捕获事件,则COV置位。程序可通过检测COV来判断原值读出前 是否发生捕获事件。COV在读捕获值时不会使溢出标志复位,须用 软件复位。

MSP430 定时器Timer_A

MSP430 定时器Timer_A

电子设计大赛准备之msp430单片机定时器Timer_ATimer_A定时器:注:MSP430有两个16位定时器Timer_A和Timer_B.二者基本相同。

主要有TACTL,TAR,CCTL0,CCR0,CCTL1,CCR1,CCTL2,CCR2,TAIV几个寄存器。

其中最主要的是TACTL寄存器,它决定Timer_A的输入时钟信号,Timer_A的工作模式,Timer_A的开启与停止,中断的申请等。

定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2.计数器是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断。

那怎么实现定时功能呢?这就要靠三个比较/捕获寄存器了以后用CCRx表示。

CCR0比较特殊,通过他可以改变计数器的最大计数值,也就是当计数器计数到CCR0的值时自动会将计数器清零。

但这需要设置相应的工作模式,模式列表如下:0——停止模式,用于定时器的暂停1——增计数模式,计数器计数到CCR0,再清零计数2——连续计数模式,计数器增计数到0xffff,再清零计数3——增/减计数模式,增计数到CCR0,再减计数到0当计数器计数到CCR0时,CCR0单元会产生一个中断。

同样当计数器计数到CCR1和CCR2时,两个单元也都会个产生一个中断。

这样我们可以通过定时器A得到三个定时时间了。

看程序中的定时器初始化模块。

CCTLx是相应比较/捕获寄存器的控制寄存器。

它可对比较/捕获寄存器进行设置,在这里只用到比较功能,也就是当计数到CCRx时产生中断,由于CCTLx 默认的是比较功能,所以一般也就只用到CCIE这个控制字,就是开启相应比较器的中断。

CCRx就是相应比较器的值。

下面介绍几个Timer_A的重要寄存器:TACTL寄存器:15~109876543210未用SSEL1 SSEL0 ID1 ID0 MC1 MC0 未用CLR TAIE TALFGSSEL_1 SSEL_0 是时钟源的选择0——TACLK,使用外部引脚信号作为输入 1——ACLK,辅助时钟2——SMCLK,子系统主时钟 3——INCLK,外部输入时钟对TACTL进行模式设置的同时也开启了定时器,要停止只需把MC_0赋值给TACTL就可以。

个人学习总结:MSP430_TimerA

个人学习总结:MSP430_TimerA

【8种输出模式】 OUTMOD_0:立即,直接输出OUT位 OUTMOD_1:CCRx置位;CCR0保持(all) OUTMOD_2:CCRx翻转;CCR0复位(all) OUTMOD_3:CCRx置位;CCR0复位 OUTMOD_4:CCRx翻转;CCR0保持(all) OUTMOD_5:CCRx复位;CCR0保持(all) OUTMOD_6:CCRx翻转;CCR0置位 OUTMOD_7:CCRx复位;CCR0置位 输出单元只工作于比较模式,捕获时不会产生输出。 输出单元0不能输出2,3,6,7模式 输出是自动而独立的,和中断使能、中断标志都无关。 产生TA中断的原则:只要计数归零就产生TA中断
SCS
捕获与 定时器同步
SCCI
锁定的 捕获信号
未使用
CAP
捕获/比较 选择位
捕获方式
捕获信号输入源
7.rw-(0) OUTMOD2
6.rw-(0) OUTMOD1 输出模式选择
5.rw-0 OUTMOD0
4.rw-(0)
3.rw-(0)
2.rw-(0)
1.rw-(0)
0.rw-(0)
CCIE
中断使能
ID1
ID0
MC1
MC0
未使用
TACLR
TAIE
TAIFG
选择分频因子
选择计数方式
TAR复位清零 TA中断使能 TA中断标志
【计数时钟源】 TASSEL_0:TACLK外部引脚P1.0/TACLK(12脚)信号 TASSEL_1:ACLK内部辅助时钟 TASSEL_2:SMCLK内部子系统时钟 TASSEL_3:INCLK外部P2.1/TAINCLK(21脚)时钟 【TIMER_A的再次分频】 ID_0:1分频 ID_1:2分频 ID_2:4分频 ID_3:8分频 【计数模式】 MC_0:暂停计数,计数停止,但内容不清零,将继续计数。 MC_1:0~CCR0增计数,到达CCR0后归零,重新计数。先CCR0中断,后TA中断。 MC_2:0~FFFFH连续计数,到达TAR最大值后归零,重新计数。归零时产生TA中断。 MC_3:0~CCR0~0增减计数,到达CCR0后开始减1(产生CCR0中断),减至0时重新 计数,并产生TA中断。 【TACLR置位】 1:TAR清零 2:ID1,ID0复位 3:计数方向为增方向( 比如正由CCR0~0减计数,TACLR后会变为从0~CCR0方向增计数) 产生TA中断的原则: 只要计数归零就产生TA中断

MSP430单片机定时器A结构及其应用范例

MSP430单片机定时器A结构及其应用范例

MSP430单片机定时器A结构及其应用范例MSP430单片机定时器A结构及其应用范例1-简介简介MSP430单片机定时器A结构及其应用范例。

2-定时器模块在MSP430系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。

利用MSP430(以下称为430)单片机的定时器可以用来实现计时,延时,信号频率测量,信号触发检测,脉冲脉宽信号测量,PWM信号发生。

另外通过软件编写可以用作串口的波特率发生器。

后面我们将用定时器A作为一个波特率发生器,来编写一个串口例程给初学者参考。

以加强初学者对定时器A的理解和应用。

在430的大系列产品中,不同的子系列产品定时器资源有所不同;在F11X,F11X1中是不带定时器B资源的。

430的定时器主要分为3部分模块:看门狗定时器,定时器A,定时器B。

定时器A主要资源特点有16位定时计数器,其计数模式有4种。

多种计数时钟信号供选择。

3个可配置输入的捕获/比较功能寄存器和8种输出模式的3个可配置输出单片。

以上各块定时器资源可作多种组合使用,以实现强大的功能。

定时器资源功能说明(1)看门狗定时器(WDT):主要用于程序在生错误时用作单片机系统复位重起的。

另外,也可作为一个基本定时器使用。

(2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出。

可作串口波特率发生器使用。

(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A 增强些。

详情请看关于定时器B应用范例。

3-定时器A模块结构4-定时器A--基础应用例程(1)//例程描述:利用定时器定时功能,实现P1.0方波输出。

MSP430F149的定时器A操作

MSP430F149的定时器A操作

MSP430F149的定时器A定时操作1)定时器A的图解图1 定时器A图解2)定时器A的四种计数模式。

1.停止模式。

2.增计数模式。

(产生两个中断标志)也就是当计数到跟TACCR0一样的时候,就返回0,重新计数。

当计数到TACCR0的同时产生一个中断标志CCIFG,而当计数器溢出返回零的同时又同时产生一个中断标志TAIFG。

如图:图2 增计数模式的波形图3.连续计数模式。

(产生一个中断标志)也就是计数器将直接计数到计数器所能计数的最大值0FFFFH之后重新返回零,再次计数。

返回零的同时产生一个TAIFG中断标志。

如图:4.增减计数模式。

(产生两个中断标志)也就是当计数器计数到跟TACCR0一样的之后,然后从TACCR0开始又减少,直到为零,然后又开始增。

当计数跟TACCT0一样的时候产生一个中断标志CCIFG,当减到为零的时候又产生一个中断标志TAIFG。

如图:注意:当重新写入TACCR0数值的时候,当新的数据大于原来的数值的时候,计数器将计数到新的数值才重新返回零;当新的数据小于原来的数值的时候,计数器将直接返回零重新计数。

3)定时器A的寄存器。

1.TACTL●TASSELx:计时器A的时钟来源选择。

●IDx:计时器A时钟的分频选择。

●MCx:计时器A四种计数模式选择。

●TACLR:计数器A的TAR计数清零,同时也可以清楚时钟分频器和计数方向。

●TAIE:TAIFG中断标志使能。

在捕获模式下可以打开所有CCIFG的中断使能。

●TAIFG:中断标志位。

2.TAR计数器的计数寄存器。

3.TACCTLx●CMx:捕获模式选择。

00:关闭;01:上升沿捕获;10:下降沿捕获;11:上升下降沿捕获。

●CCISx:捕获引脚选择。

●SCS:选择捕获电平方式。

0异步时钟;1同步时钟。

●SCCI:锁存同步时钟输入端。

也就是锁存EQUx的值,以供CPU读取。

●CAP:捕获模式和比较模式选择。

0比较;1捕获。

●OUTMODx:输出模式选择。

msp430定时器AD模块以及其他笔记

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的开启与停止、中断的申请等工作。

MSP430定时器AB比较

MSP430定时器AB比较

定时器A计数模式
4种计数模式
由MCx控制: 00 没有计数 01 增计数模式 10 连续计数模式 11 增减计数模式
定时器A计数模式
增计数模式:从0计到 TACCR0所设置的数值, 当到TACCR0再加1时, 溢出
连续计数模式:从0计到 0FFFFh,再加1时,溢出
增减计数模式:从0计到 TACCR0所设置的数值, 再从TACCR0减计数到0, 溢出
定时器B
定时器B
定时器B分组逻辑
TAபைடு நூலகம்CTLx
定时器A捕获/比较控制寄存器
定时器B
特点: 1.定时器B是一个16位定时计数器,有4种计 数模式,4种可选长度 2.可选择配置时钟源 3.7个捕获比较单元 4.可配置输出PWM波形 5.双缓冲比较寄存器 6.具有多个中断源
定时器B
与定时器A不同之处: • 可配置8位,10位,12位,16位定时计数器 • TBCCRx 双缓冲寄存器并且具有分组逻辑 • 所有的输出可配置为高阻态 • 没有SCCI位功能 • 时钟源选择不一样 • 多了一个比较锁存
定时器A捕获/比较单元
定时器A中断源
• TACCR0中断 • TAIV中断
定时器A有关寄存器
• • • • • TACTL 定时器A控制寄存器 TAR 定时器A寄存器 TACCTLx 定时器A捕获/比较控制寄存器 TACCRx 定时器A捕获/比较寄存器 TAIV 定时器A中断向量寄存器
TACTL定时器A控制寄存器
MSP430F149 定时器模块
定时器A与定时器B的比较
定时器A回顾
特点: 1. Timer_A是一个16位的定时计数器,有4种 定时计数模式 2. 可选择配置时钟源 3. 3个捕获比较单元 4. 可配置输出PWM波形 5. 异步输入输出锁存 6. 具有多个中断源

MSP430 蜂鸣器例程 定时器A

MSP430 蜂鸣器例程 定时器A

//设置定时器A每10ms中断一次
CCTL0 = CCIE;
CCR0 = 10000;
TACTL |= TASSEL_2 + ID_3;
//设置控制蜂鸣器的IO方向为输出
Buzzer_DIR |= Buzzer;
//打开全局中断
_EINT();
//循环演奏歌曲
while(1)
{
Play_Song();
}
}
/*******************************************
函数名称:TimerA_ISR
功 能:定时器A的中断服务函数
返回值 :无
********************************************/
void Play_Song(void)
{
uchar Temp1,Temp2;
uchar addr = 0;
counter = 0; //中断计数器清0
{
for( j = 0;j < 3;j++ )
_NOP();
}
}
/*******************************************
函数名称:Play_Song
功 能:播放《祝你平安》的乐曲
参 数:无
#define uchar unsigned char
#define Buzzer BIT7
#define Buzzer_Port P2OUT //将P2.7作为beep输出
#define Buzzer_DIR P6DIR
uchar counter;

MSP430系列单片机定时器A

MSP430系列单片机定时器A

MSP430F5系列16位超低功耗单片机模块原理第12章Timer A 定时器A版本: 1.0日期: 2008.10.原文: TI slau208.pdf (5xxfamily User's Guide)翻译: 许俊超软件工程师郑州市编辑: DC 微控技术论坛版主注:以下文章是翻译TI slau208.pdf 文件中的部分内容。

由于我们翻译水平有限,有整理过程中难免有所不足或错误;所以以下内容只供参考.一切以原文为准。

文章更新详情请密切留意微控技术论坛。

第12章Timer A定时器A是一个复合了捕获/比较寄存器的十六位的定时/计数器。

本章介绍MSP430X5XX的定时器A。

章节12.1 定时器A介绍12.2 定时器A操作12.3 定时器A寄存器12.1 定时器A介绍定时器A是一个十六位的定时/计数器,其捕获/比较寄存器多达七个。

定时器A支持支持多重捕获/比较,PWM输出和内部定时。

定时器还有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。

定时器A的特性包括:○四种运行模式的异步16位定时/计数器○可选择配置的的时钟源○多达七个可配置的捕获/比较寄存器○可配置的PWM输出○异步输入和输出锁存○对所有TA中断快速响应的中断向量寄存器定时器A的结构图如图12-1图12-1 定时器A的结构图12.2TIMER_A 操作方法TIMERA模块由用户软件来配置,TIMERA的使用在下面的章节中讨论。

12.2.116位定时/计数器寄存器TAR,随着时钟信号的第个上升沿增/减(由模式所决定)。

TAR 可以由软件读写。

除此之外,定时器溢出时可以产生中断。

TAR可以通过设置TACLR位来清除。

在UP/DOWN模式下,设置TACLR也可以清除时钟分频器和计数方向。

注意:修改TIMERA寄存器建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、TACLR例外),以避免产生求知的误操作。

当TACLK与CPU时钟不同步时,当定时器没有运行时TAR的读将产生,其结果也是不可预料的。

MSP430-定时器A的使用(含OUTMOD模式详解及运用)

MSP430-定时器A的使用(含OUTMOD模式详解及运用)

MSP430-定时器A的使用(含OUTMOD模式详解及运用)第四讲第四讲第四讲第四讲定时器定时器定时器定时器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)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。

单片机MSP430 - Timer_A 定时器中断程序

单片机MSP430 - Timer_A 定时器中断程序

单片机MSP430 - Timer_A 定时器中断程序一、利用定时器定时功能,实现定时器单个溢出中断,实现P3.0 方波输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 定时器中断触发,P3 输出口异或,电平翻转{P3OUT – 0x04;二、利用定时器定时功能,实现定时器多个溢出,对应产生多个中断,实现P3.0 输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CCR1 = 3276; // 定义中断溢出周期100msTA0CCTL1 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 1s 溢出中断P3OUT = ~0x04;}#pragma vector = TIMER0_A1_VECTOR__interrupt void Timer_A1(void) // 100ms 溢出中断{switch(TA0IV){case 2:P3OUT = 0x04;break;case 4:break;case 10:break;}}tips:感谢大家的阅读,本文由我司收集整编。

msp430 Time-a中文手册

msp430 Time-a中文手册

12.1Timer_A Introductiontimer_a是一个16位定时器/计数器三捕获/比较寄存器。

timer_a可以支持多个捕获/比较,脉宽调制输出,和间隔时间。

timer_a也拥有丰富的中断能力。

中断可能产生的计数器溢出条件,从每一个的捕获/比较寄存器timer_a功能包括:•异步的16位定时器/计数器具有四种操作模式•可选和可配置的时钟源•两或三个可配置捕获/比较寄存器•配置的输出PWM能力•异步输入和输出锁存•中断向量寄存器的快速解码所有的timer_a中断timer_a框图见图12-1。

注意:使用单词计数计数是在本章中使用。

这意味着计数器必须在计数的过程中采取行动。

如果一个特定的值是直接写入计数器,一个相关的行动将不会发生。

12.2Timer_A Operation该timer_a模块配置与用户软件。

安装和操作timer_a讨论以下部分。

12.2.116-Bit Timer Counter16位定时器/计数器寄存器,TAR,递增或递减(取决于操作模式)与每个时钟的上升沿信号。

TAR可以读或写软件。

此外,当它溢出时该定时器产生一个中断。

TAR可清除设置TACLR位。

设置TACLR清除时钟分频器和计数向上/下模式。

注:修改timer_a寄存器在修改其运作之前建议停止计时器(除了中断使能和中断标志),避免错误的操作情况。

当定时器时钟异步处理器的时钟时,任何读从TAR中有可能发生当计时器不工作或结果可能是不可预测的。

另外,该定时器可多次读取操作时,与多数表决采取软件确定正确的阅读。

任何写入TAR将立即生效。

12.2.1.1Clock Source Select and Divider12.2.1.1时钟源选择和分频器计时器时钟的来源可以从ACLK,SMCLK,或通过外部TACLK或INCLK。

时钟源选择与TASSELx 位。

选定的时钟源可直接传递给定时器或除以2,4,或8,使用IDx的位。

利用MSP430的 定时器A(Timer_A)的比较捕获模式产生方波和PWM波

利用MSP430的 定时器A(Timer_A)的比较捕获模式产生方波和PWM波

微机原理实验实验五定时器A(Timer_A)的比较/捕获模式一、实验目的1. 掌握 MSP430 系列片内集成定时器的比较/捕获模块的工作原理和应用方法;2. 掌握 MSP430 系列片内集成定时器的比较模式的原理和应用;3. 掌握利用定时器的比较模式产生方波的方法;4. 掌握利用定时器比较模式输出 PWM 波形的方法;5. 掌握定时器的捕获模式的原理和应用;6. 掌握利用定时器捕获模式测量方波信号频率的方法二、实验内容1.※●编程实现:采用定时器TA0控制LED1指示灯亮灭,中间间隔1s。

(1)源程序#include<msp430.h>void main(){WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P1DIR |= BIT2;P1SEL |= BIT2; //P1.2定时器输出TA0CCR0=50000; //PWM周期定义TA0CCTL1=OUTMOD_3; //CCR1比较输出模式3TA0CCR1=32768; //CCR1 PWM占空比定义TA0CTL = TASSEL_1+MC_1+TACLR; //ACLK,增计数,清除TAR计数器__bis_SR_register(LPM3_bits); //进入LPM3}(2)运行结果上电后LED1闪烁,中间间隔1s. (以下为录制的运行视频截图)(3)输出信号波形图1s(4)对比分析采用定时器的比较模式和中断功能实现输出方波的各自优势是什么?采用中断功能产生方波是定时器计数到某个值使产生中断,利用此中断来翻转输出口的状态,从而产生方波,它的方波不是直接产生的,因此它有更强的可操作性。

比较模式是计数时与某两个值比较,然后置位复位或者反转输出口,这是直接产生方波,它容易控制方波的占空比。

2.※●编程实现:采用定时器TA0捕获/比较器CCR1的比较模式,设定输出方式,输出PWM波形,使LED1指示灯亮2s,灭1s,并绘制PWM波的波形和频率。

MSP430定时器A

MSP430定时器A

上次Cloud和大家一起学习完了MSP430的时钟配置,这一篇,我们来学习MSP430单片机的TimerA(定时/计数器A)。

MSP430单片机的TimerA具有非常强大的功能,相关的寄存器配置也相当复杂,Cloud花了好久才逐步理清学习思路,尤其是学习数据手册的相关描述。

在这里Cloud提醒大家,虽然现在网上有中文汉化版的数据手册,但Cloud阅读英文原版后对比发现还是英文原版对器件特性描述得更加清楚,而中文汉化版的省略掉了一些内容。

好吧,扯远了。

下面进入正题:一、MSP430的Timer结构首先让我们通过官方描述来初步了解一下MSP430单片机的Timer资源:定时器A是一个16位的定时/计数器。

定时器A支持多重捕获/比较,PWM输出和内部定时。

定时器还有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。

定时器A的特性包括:·四种运行模式的异步16位定时/计数器·可选择配置的时钟源·可配置的PWM输出·异步输入和输出锁存·对所有TA中断快速响应的中断向量寄存器MSP430G2553单片机共有两个TimerA,分别是Timer0A和Timer1A。

OK,零零总总说了这么多,大家一定带有很多的疑惑,比如什么叫“捕获/比较”等,这里Cloud先不作解释,会用才是王道。

我们呢先找来定时器A的结构图给大家初步了解一下定时器A的结构:我们先从上面部分开始解释。

中间红色的是一个16位的TimerA,TAR,这其实就是MSP430单片机内部的一个定时计数器了,类似于51中的TH0和TL0的合体。

既然可以拿来计时,那么肯定可以有时钟信号输入,让我们最左边黄色的框,是一个选择器,由上面的TASSEL来选择TACLK、ACLK、SMCLK、INCLK的其中一种时钟。

上次我们已经学习过ACLK和SMCLK,也知道如何配置这两个时钟了(这也是为什么先学习时钟的原因),另外两个是外部时钟源,其中TACLK可以由P1.0输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上次Cloud和大家一起学习完了MSP430的时钟配置,这一篇,我们来学习MSP430单片机的TimerA(定时/计数器A)。

MSP430单片机的TimerA具有非常强大的功能,相关的寄存器配置也相当复杂,Cloud花了好久才逐步理清学习思路,尤其是学习数据手册的相关描述。

在这里Cloud提醒大家,虽然现在网上有中文汉化版的数据手册,但Cloud阅读英文原版后对比发现还是英文原版对器件特性描述得更加清楚,而中文汉化版的省略掉了一些内容。

好吧,扯远了。

下面进入正题:一、MSP430的Timer结构首先让我们通过官方描述来初步了解一下MSP430单片机的Timer资源:定时器A是一个16位的定时/计数器。

定时器A支持多重捕获/比较,PWM输出和内部定时。

定时器还有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。

定时器A的特性包括:·四种运行模式的异步16位定时/计数器·可选择配置的时钟源·可配置的PWM输出·异步输入和输出锁存·对所有TA中断快速响应的中断向量寄存器MSP430G2553单片机共有两个TimerA,分别是Timer0A和Timer1A。

OK,零零总总说了这么多,大家一定带有很多的疑惑,比如什么叫“捕获/比较”等,这里Cloud先不作解释,会用才是王道。

我们呢先找来定时器A的结构图给大家初步了解一下定时器A的结构:我们先从上面部分开始解释。

中间红色的是一个16位的TimerA,TAR,这其实就是MSP430单片机内部的一个定时计数器了,类似于51中的TH0和TL0的合体。

既然可以拿来计时,那么肯定可以有时钟信号输入,让我们最左边黄色的框,是一个选择器,由上面的TASSEL来选择TACLK、ACLK、SMCLK、INCLK的其中一种时钟。

上次我们已经学习过ACLK和SMCLK,也知道如何配置这两个时钟了(这也是为什么先学习时钟的原因),另外两个是外部时钟源,其中TACLK可以由P1.0输入。

跟在时钟源后面的是一个分频器,由ID来控制,将时钟源的时钟信号1、2、4、8分频后作为定时/计数器的时钟源。

TAR右边的蓝色框代表TimerA在计数模式下由MC来控制TAR的四种计数方式。

同时我们还注意到TAR的左下方有一个TACLAR连接至TAR的Clear端,显然是清零作用的,数据手册还告诉我们置位TACLAR,不但会清零TAR的计数值还会清除时钟分频信息。

TACLAR 一旦置1,会自动归零,所以可以当做是TimerA的复位按钮。

再看下半部分的CCR2,CCR2是TimerA的其中一个独立的捕获/比较单元,其实在MSP430G2553中,还有CCR0和CCR1(连接上半部分和下半部分的虚线省略处),其结构和CCR2基本一致。

我们可以看到从上面TAR输出的空心粗箭头指向了TACCR2和Comparator2,TACCR2是RRC2的捕获/比较寄存器,虚线框左上角部分表示了TimerA的捕获通道,用于将CCIS所选择的信道经过所选择的捕获模式和同步操作传递给TACCR2。

虚线框下半部分表示不同的输出模式的信号输出逻辑。

二、Timer相关寄存器介绍OK,Cloud基本为大家介绍了TimerA的结构,确实略复杂。

按照以往教程惯例,Cloud 先从寄存器开始和大家一起学习(这里提醒大家,在msp430头文件中,很多不同标示符的定义其实都来自同一个对象,在MSP430G2553中,有Timer0A和Timer1A,相关的寄存器有TA0CTL、TA0CCR0、TA1CTL、TA1CCR0等,由于这两个时钟基本一样,这里就只以Timer0A为例。

Timer0A的相关寄存器可以将TA0字样省略为TA,例如TACTL=TA0CTL、TACCR0=TA0CCR0等,大家在实际使用和学习时要知道这两种表示方式都是一样的):1、TA0CTL:TimerA控制寄存器TA0CTL TimerA控制寄存器15141312111098------TASSEL1TASSEL0 76543210 ID1ID0MC1MC0-TACLR TAIE TAIFG TA0CTL(也可以写TACTL)负责设置TimerA的时钟来源、分频系数、计数模式、复位信号以及相关的中断允许和中断标志位:·9~8-TASSEL:用来设置TimerA的时钟来源0:TACLK 1:ACLK 2:SMCLK 3:INCLK·7~6-ID:用来设置输入时钟信号经过多少分频驱动TAR 分频系数=2ID·5~4-MC:用来设置TimerA的计数模式0:停止模式1:增模式2:连续模式3:增减模式·2:TACLR:TimerA清零位,该位置位会复位TAR,时钟分频和计数方向,完成后TACLR自动清零·1:TAIE:TimerA中断允许位,用来允许TAIFG中断请求0:中断禁止1:中断允许·0:TAIFG:TimerA中断标志位0:无中断挂起1:有中断挂起2、TA0R:TimerA寄存器TA0R TimerA寄存器15141312111098X X X X X X X X76543210X X X X X X X XTA0R(也可以写TAR)是一个用来存放当前计数值的一个16位的寄存器,类似于51的TH0和TL0的合体。

3、TA0CCRx:TimerA捕获比较寄存器xTA0CCRx TimerA捕获比较寄存器x15141312111098 X X X X X X X X 76543210 X X X X X X X X TA0CCRx(也可以写TACCRx)是一个用来存放定时计数器捕获值的16位寄存器,在MSP430G2553中x可以是0、1、2,对应相应的TA0CCTLx。

另外TA0CCR0还可以用来设置TimerA计数模式中增模式和增减模式的峰值,详细后面将会讲。

4、TA0CCTLx:TimerA捕获比较控制寄存器xTA0CCRx TimerA比较控制寄存器x15141312111098 CM1CM0CCIS1CCIS0SCS SCCI-CAP 76543210 OUTMODE2OUTMODE1OUTMOD0CCIE CCI OUT COV CCIFG TA0CCTLx(也可以写TACCTLx),在MSP430G2553中x可以是0、1、2(其他型号单片机可能有更多的支持,详细看相关数据手册),对应相应的TA0CCRx,TA0CCTLx定义了很多TimerA捕获比较控制控制相关的位,让我们来一一学习:·15~14-CM:捕获模式控制寄存器0:不捕获1上升沿捕获2:下降沿捕获3:上升和下降沿都捕获·13~12-CCIS:捕获比较选择,该位选择TA0CCRx的输入信号,·11-SCS:同步捕获源,该位用于将捕获通信和时钟同步0:异步捕获1:同步捕获·10-SCCI:同步的捕获/比较输入,所选择的CCI输入信号由EQUx信号锁存,并可通过该位读取·8-CAP:比较/捕获模式选择0:比较模式1:捕获模式·7~5-OUTMODE:输出模式位,由于在模式2、3、6、7下EAQUx=EQU0,因此这些模式对TA0CCRx无效0:OUT位的值1:置位2:翻转/复位3:置位/复位4:翻转5:复位6:翻转/置位7:复位/置位·4-CCIE:捕获比较中断允许位,该位允许相应的CCIFG标志请求0:中断禁止1:中断允许·3-CCI:捕获比较输入,所选择的输入信号可以通过该位读取·2-OUT:输出状态位,对于输出模式0,该位直接接控制输出状态0:输出低电平1:输出高电平·1-COV:捕获溢出位,该位表示一个捕获溢出发生。

COV必须由软件复位0:没有捕获溢出发生1:有捕获溢出发生·0-CCIFG:捕获比较中断标志位0:没有中断挂起1:有中断挂起三、Timer的四种计数模式下面让我们来看一下TimerA的4种计数模式,这也是后面TimerA计数和捕获/比较的基础:1、MC=0:Stop(停止模式),这个模式下TimerA停止计数;2、MC=1:Up(增模式),在这个模式下,TimerA的TAR会自动从0开始一直计数至TA0CCR0,并不断重复计数,注意,此时的TA0CCR0比较特殊,将不作为捕获/比较的作用,和TA0CCR1、TA0CCR2起不同作用。

如果在设置增模式时TAR值比TACCR0大,那么TAR会立刻重新从0开始计数,其波形如图所示:在增模式下,TACCR0 CCIFG中断标志将在TAR计数至TACCR0时被置1。

TAIFG中断标志将在TAR从TACCR0跳至0时被置1,下图描述了这两个标志位的置位时序:对于如何理解TAIFG和CCIFG何时置位问题,这里Cloud的解读是,TAIFG是在TAR 归零的时候置1的,而CCIFG是在TAR计数至TA0CCR0时置1的。

另外,当TA0CCR0在TimerA运行过程中发生改变时(Timer工作在增模式下),如果新的TA0CCR0的值比当前TAR计数的值要大,则TAR继续向上计数至新的TA0CCR0,反之,TAR将立即归零;3、MC=2:Continuous(连续模式),在这个模式下,TimerA的TAR会自动从0开始计数至0xFFFF然后归零,并不断重复计数。

此时的TA0CCR0将和TA0CCR1、TA0CCR2一样起到捕获/比较的作用。

连续模式下的TAR计数波形如下图所示:在连续模式下,TAIFG中断标志将在TAR从0xFFFF溢出至0的时候置1,如下图(由于这里没有专门用到TA0CCR0所以就不关心CCIFG,这里同样符合我们前面对中断标志置位问题的分析):官方手册还对连续模式的应用作了介绍:连续模式可以用于产生独立的时间间隔和输出频率。

当每个时间间隔完成时就产生一个中断。

下一个时间间隔的值在进入中断服务子程序时写入TA0CCRx。

下图显示了2个独立的而时间间隔t0和t1写入捕获/比较寄存器。

在该应用中,时间间隔由硬件而不是软件控制,与中断响应没有冲突:这里,稍微解释一下上面的图,锯齿波是TAR产生的,从0增至0xFFFF单调循环。

TACCR0a和TACCR1a分别是两个捕获/比较寄存器的值(初始值),为了产生t0和t1两个时间间隔,我们可以让中断响应我们的CCIFGx中断响应(因为CCIFGx是和TA0CCRx 相关联的)。

这里例子的做法是在每次由于CCIFGx中断响应的时候,相应的将TACCRx 加上tx(比如TACCR0a + t0得到TACCR0b),然后TAR继续计数(不管是否退出中断),然后计数到下一个周期的时候自然又产生的TA0CCRx的CCIFGx中断,由此我们得到了连续时间间隔;4、MC=3:Up/Down(增减模式),在这个模式下,TimerA的TAR会自动从0开始计数至TA0CCR0然后从TA0CCR0-1自动减至0,并不断重复计数(可以看出,此时TA0CCR0又作为了周期寄存器来使用而不是捕获/比较寄存器)。

相关文档
最新文档