MSP430定时器A说明
msp430定时器a中文超级详解 (1)
文章转载自网络-----------------感谢原作者的辛勤奉献MSP430的定时器中有比较捕获比较模式:这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx 置一,同时产生中断。
若中断允许未开启则只将中断标志位CCIFGx置一。
例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。
如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断处理。
捕获模式:利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。
捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。
完成捕获后相应的捕获标志位CCIFGx置一捕获模式的应用:利用捕获源的来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx 中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。
如测量时间、频率、速度等例子:利用两次捕获的值来测量脉冲的宽度。
或捕获选择任意沿,CCISx=”11“(输入选择VCC),这样即当VCC与GND发生切换时产生捕获条件结合利用:异步通讯同时应用比较模式和捕获模式来实现UART异步通信。
即利用定时器的比较模式来模拟通讯时序的波特率来发送数据,同时采用捕获模式来接收数据,并及时转换比较模式来选定调整通信的接受波特率,达到几首一个字节的目的----------------------------------------利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。
本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。
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定时器的介绍及其基本应用
Msp430定时器的介绍及其基本应用Msp430定时器的介绍及其基本应用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的硬件电路大致可分为2类功能模块:一:计数器TAR计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。
二:比较/捕获寄存器CCRX如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。
当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。
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输入。
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_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中断
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模块以及其他笔记
定时器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单片机定时器
MSP430单片机定时器在MSP430 系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。
在F11X,F11X1 中是不带定时器B 资源的。
430 的定时模块:看门狗定时器,定时器A,定时器B。
定时器A 主要资源特点有16 位定时计数器,其计数模式有4 种。
多种计数时钟信号供输入的捕获/比较功能寄存器和8 种输出模式的3 个可配置输出单片。
定时器资源功能说明(1)看门狗定时器(WDT):主要用于程序在生错误时用作单片机系统复位重起的。
另外,也可作为一个基本定时器使用。
(2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出。
可作串口波特率(3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A 增强些。
定时器A-实现P1.0 方波输出。
#include{WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。
P1DIR |= 0x01; //设置P1.0 口方向为输出。
CCTL0 = CCIE; // 设置捕获/比较控制寄存器中CCIE 位为1,CCR0 捕获/比较功能中断为允许。
CCR0 = 50000; //捕获/比较控制寄存器CCR0 初值为5000。
TACTL = TASSEL_2 + MC_2; //设置定时器A 控制寄存器TACTL,使时钟源选择为SMCLK 辅助时钟。
_BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0 和开中断}//定时器A 中断服务程序区#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){P1OUT –0x01; //P1.0 取反输出CCR0 += 50000; //重新载入CCR0 捕获/比较数据寄存器数据} tips:感谢大家的阅读,本文由我司收集整编。
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
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的定时器Timer
一、定时器 TImer_A 介绍 TImer_A 是一个具有多路捕获/比较寄存器的 16 位定时/计数器,主要有 TAxCTL,TAxR,TAxCCTLn,TAxIV,TAxEX0 几个寄存器。其中最主要 的是 TAxCTL 寄存器,它决定 TImer_A 的输入时钟信号,TImer_A 的工作模 式,Timer_A 的开启与停止,中断的申请等。中断可以来自定时器溢出或者 任意的捕获/比较寄存器 Timer_A 的特征包括: 具有 4 种工作模式的异步定时/计数器 可选择配置的时钟源 可配置的 PWM 输出功能 异步输入和同步锁存
在定时器工作在增计数模式或者增/减计数模式时,对 TAxCCR0 写 0 可以停止定时器。定时器可以通过对 TAxCCR0 写入一个非零值来重新启动 计数。在这种情况下,定时器从零开始计数。 4. 定时器模式控制 三、Timer_A 寄存器 1. Timer_A 控制寄存器(TAxCTL) 2. Timer_A 计数器(TAxR) 15~0 TAxR TAxR 位 15~0Timer_A 寄存器。TAxR 寄存器是 Timer_A 的计数器。
二、Timer_A 操作 1. 16 位定时/计数器 16 位定时/计数寄存器 TAxR,在每个时钟信号的上升沿做增一计数或减 一计数。TAxR 可以通过置位 TACLR 清除。Timer_A 机构图如下: 2. 时钟源的选择和分频 定时器时钟 TACLK 可以选择来自 ACLK、SMCLK 或者外部的
3. 捕获/比较控制寄存器(TAxCCTLn) 4. Timer_A 中断向量寄存器(TELx 位来选择。选定的时钟源可以直接到达定时 器,或者通过 IDx 位经过 2、4、8 分频后到达定时器,选定的时钟源可以通 过 IDEXx 进行 2、3、4、5、6、7 或者 8 分频。当 TACLR 置位时,定时 器时钟源分频器被复位。 3. 启动定时器 在 MC 》 {0} 同时时钟源被激活的情况下,定时器开始计数
单片机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中文手册
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的位。
MSP430F149 TIMER_A(一)——16位定时计数
MSP430F149 TIMER_A(一)——16 位定时计数TIMER_A 有四个可选时钟源,为了方便一般选择ACLK 和SMCLK,经过分频器产生一个时基,其结构图如下:TIMER_A 有三种定时/计数方式:(1).增计数模式:计数周期:TAR 从0 增加到TACCR0,(2).连续计数模式:计数周期:TAR 从0 增加到0xffff,(3).增减计数模式:计数周期:TAR 从0 增加到TACCR0 然后再从TACCR0 减到0由上图可见TIMER_A 的中断标志有两个,分别是TAIFG 和CCIFG。
TACTL 中的TAIE 允许产生TAIFG 中断标志,中断入口是TIMERA_1 VECTOR 即0FFEAh,此入口有三个中断源,由TAIV 的值决定。
在IAR 中,进入中断服务的方式如下:#pragma vector=中断向量的入口地址__interrupt void 函数名(类型)比如:#pragma vector=0x14__interrupt void my_handler(void);TIMERA0_VECTOR 是单中断源的,因此不需要判断#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A0 (void){ P4OUT–BIT0;}既然TIMERA1_VECTOR 由三种中断源,则需要判断,例子如下#pragma vector=TIMERA1_VECTOR__interrupt void Timer_A1 (void){ switch(TAIV) { case 0x02:break; case 0x04:break; case 0x0a:P4OUT–BIT0;break; }}tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
MSP430F5529 (六)定时器Timer_A-1
MSP430F5529 (六)定时器Timer_A-1MSP430F5529 共有两类共4 个定时器,分别是Timer_A 定时器3 个和Timer_B 定时器1 个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5 个捕获比较器)、Timer1_A(3 个)、Timer2_A(3 个)、Timer0_B(7 个)。
这一章,我们讲定时器Timer0_A.(A 类的都一样)注意:下面所提到的所有寄存器,在TA 后面插入0 或1 或2 就分别表示Timer0_A、Timer1_A、Timer2_A(我这里省略了数字)定时器很重要啊!6.1简介一下定时器A 是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。
定时器A 支持多重捕获/比较,PWM 输出和内部定时,具有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。
特征简介:○四种运行模式的异步16 位定时/计数器○自身时钟源可选择配置○最多达5 个可配置的捕获/比较寄存器(CCR)capture/compare registers○可配置的PWM 输出○异步输入和输出锁存○对所有Timer_A 中断快速响应的中断向量寄存器下面这张图形象的解释了Timer_A 的结构特性 6.2 TA(Timer_A)的几个基本操作设置(含寄存器介绍及设置)声明:所有寄存器同样支持字和字节操作,不要忘记这是什么意思所有寄存器初始化都为0x00006.2.1 TA 控制寄存器TACTL(最常用最基本)再次说明一下例如:TA0CTL、TA1CTL、TA2CTL分别表示3 个不同定时器A 的控制寄存器rw-(0)表示默认读写均为0TASSELx:时钟源选择。
尽量不要选TASSEL0-TACLK 外部时钟源,因为如果TACLK 和CPU 时钟不同步,很容易出问题。
(TA0CLK 接P1.0 引脚)00TACLK01ACLK10SMCLK11~TACLKIDx:第一次分频控制。
MSP430单片机定时器原理与应用
输入时钟源
说明
0
0
TACLK
0
1
ACLK
1
0
MCLK
1
1
INCLK
使用外部引脚信号作为输入 辅助始终 系统主时钟 外部输入时钟
9
ID1,ID0 选择输入分频器的分频系数。由 TASSEL0和TASSEL1两位选择时钟源,然后再由 IDO和ID1选择分频系数将输入信号分频,分频后 的信号采用于计数器计数。在MSP430F4XX系列 器件中,INCLK信号经过反向驱动之后再送入,与 其它器件有点差别。 00 直通,不分频; 01 1/2分频; 10 1/4分频; 11 1/8分频。
break; } }
30
5
3. 定时器模式
定时器A共有4种工作模式:停止模式、增计数模式、连续计数模式 和增/减计数模式,由控制寄存器TACTL中MC0和MC1两位决定。
31
(1) 停止模式
当MC1=0,MC0=0时,定时器工作在停 止模式。定时器暂停,但并不复位,所有 寄存器现行的内容在停止模式结束后都可 用。当定时器暂停后重新计数时,计数器 将从暂停时的值开始,以暂停前的计数模 式继续计数。如果不需要这样,则可通过 TACTL中的CLR控制位来清除定时器的方 向记忆特性。
13
(3)TACCTLx捕获/比较寄存器
15
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CAPT CAPT CCIS CCIS SC SCC 保留 CA OUTM CCI CCI OU CO CCIF
MOD1 MOD0 1 0 S I
P ODX EX X T V GX
14
CAPTMOD1,CAPTMOD0 选择捕获模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430的定时器A有比较\捕获两种工作模式
比较模式:
这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx置1,同时产生中断。
若中断允许未开启则只将中断标志位CCIFGx置1。
例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。
如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断,输出时序脉冲。
捕获模式:
利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。
捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。
完成捕获后相应的捕获标志位CCIFGx置1。
捕获模式的应用:
利用捕获源来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。
如测量时间、频率、速度等。
利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。
本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。
在实际应用中可根据例程中的start,end,overflow三个变量来计算脉冲宽度。
此功能模块在实际产品应用中体现出有较高的应用价值。
具体例程
#include <msp430x14x.h>
unsigned int start,end;
unsigned char overflow;
void main (void)
{
WDTCTL = WDTPW+WDTHOLD; //关闭看门狗定时器
P1DIR = BIT0+BIT4; //设置P1.0和P1.4方向为输出
P1SEL = BIT2; //设置P1.2端口为功能模块使用
TACTL = TASSEL0+TACLR+TAIE+MC1; //定时器A时钟信号选择ACLK,同时
//设置定时器A计数模式为连续增计模式
CCTL1 = MC0+SCS+CAP+CCIE; //输入上升沿捕获,CCI0A为捕获信号源_EINT(); //中断允许
while(1); //LOOP
}
#pragma vector=TIMERA1_VECTOR //定时器A中断处理
__interrupt void timer_a(void)
{
switch(TAIV) //向量查询
{
case 2: //捕获中断
if(CCTL1&CM0) //上升沿
{
CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发
start=TAR; //记录初始时间
overflow=0; //溢出计数变量复位
}
else if (CCTL1&CM1) //下降沿
{
CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发
end=TAR; //用start,end,overflow计算脉冲宽度}
break;
case 10: //定时器溢出中断
overflow++;
break; //溢出计数加1
default:break;
}
}
//例程结束
-----------------------------------。