MSP430定时器

合集下载

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

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

第4讲MSP430单片机定时器2

第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的定时器

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看门狗定时器

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

MSP430单片机应用之定时器、PWM
main()
{
...
&amp;0x01)
{
P1OUT–0x01;//翻转状态
IFG&amp;=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单片机——定时器
昨天调了MSP430单片机的定时器,犯了个比较傻的错误。

定时器有四种模式,停止模式,增模式,连续模式,增减模式。

定时器中断也有四个,CCR0,CCR1,CCR2及溢出中断,四个。

在学习过程中,我想用下溢出中断,然后定时器又设置在了增模式,因为不希望产生比较/捕捉中断,就没有设置CCR0,原本的想法是不设置CCR0,那么定时器就会自动计数到0xFFFF后产生溢出重新计数。

结果程序没有这样想象的执行。

定时器进不了溢出中断。

最后才发现,如果定时器工作在了增模式,那么就一定要设置CCR0,因为不论是比较中断还是溢出中断,都是定时器的计数值与CCR0相关,此时的溢出中断,也是定时器计数到CCR0,然后产生溢出,又重新开始计数。

然而,如果设置在了连续模式,就不需要设置CCR0了,连续模式的计数,定时器会计数到0xFFFF后产生溢出。

虽然很简单的定时器操作,但是调试过程中,还是遇到了各种小问题。

tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

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单片机定时器

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的使用

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 输入;比较方式: 0UT2输出。

1定时器A 功能及结构定时器A 基本结构是一个十六位计数器,由时钟信号驱动工作,结构框图如图4-1所示。

TPSSEL1 TPSSELOC CM 11 CCM 10CCJ?A ―O CCIZB —0C4M> —6 VCC "&图4-1定时器A 结构图定时器A 具有多种功能,其特性如下:(1) 输入时钟可以有三种选择,可以是慢时钟(ACLK )、快时钟(SMCLK 与单片机主时 钟同频)和外部时钟。

(2) 能产生的定时中断、定时脉冲和 PWM (脉宽调制)信号,没有软件带来的误差。

TACLK ―ACLK ―O >7 MCLK —-O 弄 INCL K ―O XID1 II KJftCLRCarrjr'Zcr o TimerEquO---------------- ►设富TMFCCCISil JCCJ&4 —rCCJOB —cOID —13Wx —13CCISOOF—H比投罟o比血 CCMD1 CCMOOCCIS11 CCIS10CC11A —4 CC11B ―°GHD —0 vcc —°£炳捉,比戕餐存辭(riwQF.10? 3MOIm/moLQUO捕怩'比牧蒂存幣WIUOMI? OM11 CM10CCI2 CCM21 CCM20LUU?(3)不仅能捕获外部事件发生的时间,还可选择触发脉冲沿(由上升沿或下降沿触发)。

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输入。

基于MSP430的定时器Timer

基于MSP430的定时器Timer
基于 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 定时器中断程序

单片机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定时器控制led闪烁

msp430定时器控制led闪烁

第四讲定时器控制LED闪烁一、定时器简介定时器,简单的说,就像单片机内的一个闹钟。

它以单片机的时钟作为计数基准,根据计数数值不同来改变定时时间,并可以设置使时间满足定时条件时进行一系列操作。

下面是msp430g2553的datasheet对其定时器的介绍:从这里开始,我们介绍的部件往往会涉及很多寄存器,初学者往往由于配置不全,不能得到想要的效果。

因此,学习这一部分,尽量参考用户手册和相关例程进行分析。

二、定时器A配置我们要实现使用定时器控制LED闪烁,需要使用定时器中断来控制。

定时器中断与外部中断的具体原理一样,都是从主程序中断,处理完中断服务函数再返回。

区别只在于触发条件,定时器中断的触发条件是定时器计数溢出(计数数值达到设定数值)。

这是用户手册对定时器A的介绍:16位定时/计数,4种计数模式,可选时钟源,2到3个捕获比较寄存器,异步输入输出锁存,定时中断寄存器。

16位定时/计数,是指计数数值范围是0-65535,与设置好的时钟源来组合成一定的定时时长。

如时钟周期为1us,那么要定时1ms,计数数值就需要设置为1000。

上图是定时模式的介绍,一般采用增计数模式即可,即每次定时从0计数到设置的数值。

定时器配置最重要的部分在于TACLR寄存器,其16位所代表的含义如下图,具体配置内容可从用户手册和头文件内查出,这里不做一一介绍,在例程中再进行讲解。

三、实践操作这里,由于我们的单片机默认时钟为DCO 1MHZ,16位定时器计数数值65536,所以最大定时时长为65.536ms。

在这里我们进行0.05s的定时,每隔0.05s触发一次中断函数,使LED亮0.05s,灭0.05s,并交替进行。

为了方便调试,我们先使用延时的方法使LED闪烁,确认单片机以及LED工作正常。

顺便复习一下对IO的操作。

下面就到定时器的核心配置了。

我们要设置定时器,核心部分当然是TACTL寄存器,它是定时器工作的关键,涉及到定时器所采用的时钟周期以及计数方式。

MSP430单片机定时器实验报告

MSP430单片机定时器实验报告

实验四定时器实验实验目的:MPS430F5529片内集成的定时器A的使用,学习计数器的补捕获比较模块的使用。

实验内容:定时器采用辅助时钟ACLK作为计数脉冲,fACLK=32768Hz,实现以下功能:1.定时器TA0延时1s,点亮或熄灭LED6,即灯亮1s灭1s,如此循环,采用中断服务程序实现。

2.定时器TA0延时1s,点亮或熄灭LED4,采用捕获比较器CCR0的比较模式,设定输出方式,输出方波,不用中断服务程序3.采用捕获比较器CCR1的比较模式LED5,设定输出方式,输出PWM波形,使LED 亮2s,灭1s。

4.用定时器实现30s倒计时,在液晶模块上显示,每过一秒显示数字变化一次。

5.使用TA1的捕获比较器CCR0捕获按键的间隔时间,在液晶模块上显示。

程序代码:程序1:#include <msp430f5529.h>void main(){WDTCTL = WDTPW + WDTHOLD; //关看门狗P1DIR |= BIT3; //设置P1.0口方向为输出。

TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,//CCR0捕获/比较功能中断为允许。

TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767TA0CTL = TASSEL_1 + MC_1+TACLR; //设置定时器A控制寄存器TACTL,//使时钟源选择为SMCLK辅助时钟。

//进入低功耗模式LPM0和开总中断_BIS_SR(LPM0_bits +GIE);}//定时器A 中断服务程序区#pragma vector=TIMER0_A0_VECTOR__interrupt void Timer_A (void){P1OUT ^= BIT3; //P1.0取反输出}实验现象:实验开始后,实验板上LED6亮灭闪烁,间隔为1s。

程序2:#include <msp430f5529.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // 关狗P1DIR |= BIT1; // P1.1 设置为输出P1SEL |= BIT1; // P1.1 输出使能TA0CCR0 = 60000; // PWM PeriodTA0CCTL0 = OUTMOD_4; // CCR1 模式4TA0CCR1 = 30000; // CCR1 PWM duty cycleTA0CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, up mode, clear TAR__bis_SR_register(LPM3_bits); // Enter LPM3__no_operation(); // For debugger}实验现象:实验开始后,实验板上LED4亮灭闪烁,间隔为1s。

MSP430定时器的使用

MSP430定时器的使用

TACTL = TASSEL1 + TACLR;
// SMCLK, clear TAR
CCTL0 = CCIE;
// CCR0 interrupt enabled
CCR0 = 20000;
TACTL |= MC1;
// Start Timer_A in continuous mode
最后,打开中断,写中断服务程序,详细的程序清单如下:
TBCTL = TBSSEL1 + TBCLR;
// SMCLK, clear TAR
ቤተ መጻሕፍቲ ባይዱ
TBCCTL0 = CCIE;
// CCR0 interrupt enabled
TBCCR0 = 50000;
TBCTL |= MC1;
// Start Timer_A in continuous mode
_EINT();
图 3 定时器 A 的结构原理 定时器 A 的寄存器在 IAR 的调试环境中见图 4 所示。操作这些寄存器就可以实现 TA 的所有功能。
图 4 TA 的寄存器 其中 TACTL 为最主要的控制寄存器,它决定 TA 的输入时钟信号、TA 的工作模式、TA 的开启与停止、中断的申请等工作。TACTL 寄存器为 16 位寄存器,必须使用字指令对其访 问。该寄存器在 POR 信号后全部复位,但在 PUC 信号后不受影响。下面是该寄存器中各位 的含义。
// SMCLK, clear TAR
CCTL0 = CCIE;
// CCR0 interrupt enabled
CCR0 = 50000;
TACTL |= MC1;
// Start Timer_A in continuous mode

MSP430G2553定时器,MSP430G2553有几个定时器

MSP430G2553定时器,MSP430G2553有几个定时器

MSP430G2553 定时器,MSP430G2553 有几个定时器
MSP430G2553 有几个定时器
MSP430G2553 具有两个16 位的定时器:TImer0_A TImer1_A。

分别具有三个捕捉/比较寄存器,具有输入捕捉,输出比较功能。

可以产生定时中断,也可以产生PWM。

分别有对应的寄存器控制。

定时器有三种工作模
式:1.连续计数模式2.增计数模式3. 增减计数模式。

配置定时器时候,首先要选择相应的时钟源。

在TACTL 寄存器的TASSELx 标志位控制,我们寻则SMCLK 作为源(2MHz),然后进行一个2 分频,最终震荡频率1MHz。

定时器a 图解
3.连续计数模式(产生一个中断标志)
计数器将直接计数到计数器所能计数的最大值0FFFFH 之后重新返回零,再次计数。

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

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

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

如图:
两个定时器接线信号说明:。

MSP430单片机定时器原理与应用

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 选择捕获模式。

MSP430中断和定时器使用

MSP430中断和定时器使用
实验总结与收获(含自主探究部分) ...................................................................19
1
实验目的
1. 了解中断原理,包括对中断源、中断向量、中断类型号、中断程序以及中断过程的理解; 2. 掌握汇编语言中断程序设计方法; 3. 掌握 C 语言项目上机过程和了解 C 语言程序结构; 4. (选做)掌握 C 语言中断程序设计方法; 5. 掌握数字示波器的使用方法; 6. 了解 MSP430 基本时钟模块的工作原理,掌握其控制方法; 7. 了解 MSP430 定时器 A 工作原理,掌握 MSP430 定时器 A 的控制方法。
程序将执行主程序,执行中断程序(由于没有中断标志位,所以 P2 不会被取反),
在指令执行完毕后开始执行无效指令(FFFF FFFF),最终结果 led 灯全亮,PC 跳至无
效指令。这是因为,程序没有设置死循环或终点,使 PC 不断的增加,从而开始执行
3
无效指令。中断也因此失效。
2. 用汇编语言编写 P1 端口外中断:以中断方式处理按键 K5 和 K6
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„
可以看到,优先级最低的是 PORT2_VECTOR,位于低地址;优先级最高的是复位向量,
位于高地址。对于定时器 Timer_A,CC0 最常用,独享一个中断向量,与课堂学习结果一
致。
2) 由于按键有抖动,当按下一次键时,在电路上可能已经发生了几次中断申请。为了
#define WDT_VECTOR
(10 * 2u) /* 0xFFF4 Watchdog Timer */
#define COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
此时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
相关文档
最新文档