msp430定时器部分
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)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。
当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。
LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)
LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)Version 1.2文先,介绍几个英文缩写的意思以及一些注意的地方。
1.Timer0/1 定时器0/1,在User's Guide中用的是TimerA/B,所指的也是Timer0/1 。
G2553Datasheet中用的是Timer0/1 ,本文以G2553Datasheet为准。
全文以Timer0为例,Timer1类同。
2.TAxR(x = 0/1)定时器x对应的计数器,这是一个只读寄存器。
硬件自动驱动计数。
3.EQUy(y = 0/1/2)计数事件发生寄存器,当TAxR = TAxCCRy时EQUy置1。
4.定时器简介MSPG2553共有两个定时器,Timer0、Timer1,他们都是十六位的定时、计数器,内含三个捕获、比较寄存器。
两个定时器均支持多个捕获、PWM输出、间歇性计时,定时器包含多个中断源,可以是计数溢出中断、捕获中断等等。
定时器包含:●同步十六位定时、计数器运行模式。
●时钟源可从MCLK、SMCLK、ACLK任意选择。
●三个比较、捕获寄存器。
●中断向量寄存器能快速解码的所有定时器中断本文以Timer0为例详细介绍430的定时器模块,下图是Timer0组成框图0-1定时器0组成框图下面简要介绍一下该硬件框图的意思,从左上角看,首先是一个时钟源选择寄存器TASSELx,通过该寄存器选择定时器的时钟源,选择了时钟源后有一个分频器Divider,相应的设置寄存器是IDx,再过来就到一个定时器的核心部分,一个16位的定时器TAR。
其右侧有一个定时器的计数模块,MCx寄存器用来设置计数模式。
接下来,TAR正下方有三个横线,右侧标有CCR0、CCR1、CCR2,意思是CCR1、CCR0的框图和下方CCR2的框图是一样的。
此处省略不写。
在CCR中,左上角为一个捕获源选择寄存器。
可以从CCI2A、CCI2B、GND或者VCC选择捕获源,选择捕获源后有一个选择捕获模式寄存器Capture Mode,然后过来有一个捕获溢出状态寄存器COV,SCS同步/异步捕获模式选择位,然后连接到捕获比较寄存器。
第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程序库之定时器TA的PWM输出
MSP430程序库之定时器TA的PWM输出定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。
这里完成一个比较通用的PWM波形产生程序。
1.硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。
它给开发人员提供了较多灵活的选择余地。
当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。
MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA 有三个模块,CCR0-CCR2;TB含有CCR0-CCR67个模块;其中CCR0模块不能完整的输出PWM波形(只有三种输出模式可用);TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。
定时器的PWM输出有有8种模式:输出模式0 输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。
最终位OUTx直通。
输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。
输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR 的值等于CCR0时复位。
输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR 的值等于CCR0时复位。
输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。
输出模式5复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。
输出模式6PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。
输出模式7PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
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。
第二讲:430的时钟与定时器
5
南京航空航天大学大学生科技中心
说明: 上图中 INCLK 为外部输入信号。 3.工作模式 3.1 定时/计数工作模式 共四种模式:如下表
图 3.1.1 定时模式可用来执行精确的定时。并且,在定时过程中,CPU 可以用来执行其他 的事情,而使用软件延时,是靠 CPU 空运行实现。 3.1.1 Up 模式
void UCS_init(void)
{ P7SEL |= 0x03; P5SEL |= 0x0C; UCSCTL6 &= ~(XT1OFF + XT2OFF);
// 选择 XT1 = 32.768KHz // 选择 XT2 = 16MHz // XT1 & XT2 开
// Loop until XT1,XT2 & DCO stabilizes
//定时执行部分,计时频率 1ms 一次
{
nowTime = TimeBase;
if(nowTime % 1000 == 0) //定时执行任务 1:每 1ms 执行一次
{
P4OUT ^= BIT7;
}
}
if(!(P2IN & BIT0)) P5OUT |= BIT4; //一直执行的任务
else P5OUT &=~BIT4;
do
{ UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG;
// Clear fault flags
}while (SFRIFG1&OFIFG);
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中断
msp430 TIMER实验报告.
Msp430系列单片机的定时器实验1.看门狗定时器(WDT)1.1实验介绍计数单元WDTCNT:不能直接通过软件存取,必须通过WDTCTL来控制。
控制寄存器WDTCTL高8位为口令:写5AH,读69H低8位为WDT操作的控制命令HOLD:停止看门狗定时器工作。
0 :激活;1 :停止WDTSSEL:时钟源选择TMSEL:工作模式选择。
0:看门狗;1 :定时CNTCL:该位为1时,WDTCNT清除IS2、IS1、IS0:选择看门狗定时器的定时长度1.2 实验目的学会使用看门狗定时器(WDT)。
熟悉WDT相关寄存器1.3 实验原理1.4 实验步骤(1) 将PC 和板载仿真器通过USB 线相连;(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入MSP430F6638_DemoV2.0\11.WTD 文件夹中的工程;(3) 选择对该工程进行编译链接,生成.out 文件。
然后选择,将程序下载到实验板中。
程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。
也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。
1.5 实验现象实验板上对应的LED灯以一定周期闪烁。
1.6 关键代码实验一:#include<msp430f6638.h>void main(void){volatile unsigned int i;volatile unsigned int count=0;WDTCTL = WDTPW+WDTHOLD; // Stop WDTP4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as outputP4OUT &= ~(BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "0"for (i=0;i<60000;i++) ; //延时大约60msP4OUT |= (BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "1"for (i=0;i<60000;i++) ; //延时大约60msWDTCTL=WDTPW+WDTIS_4; //启动看门狗while(1) ; // continuous loop}实验二:#include<msp430f6638.h>void main(void){volatile unsigned int i;volatile unsigned int count=0;WDTCTL = WDTPW+(WDTCTL&0xff)+WDTHOLD; // Stop WDTP4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as outputP4OUT &= ~(BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "0"for (i=0;i<60000;i++) ; //延时大约60msP4OUT |= (BIT1 + BIT2 + BIT3); // P4.1,P4.2,P4.3 set "1"for (i=0;i<60000;i++) ; //延时大约60msWDTCTL=WDTPW+(WDTCTL&0xff)-WDTHOLD; //启动看门狗while(1){// WDTCTL=WDTPW+WDTCTL&0xff+WDTCNTCL; //计数器清零};分析:实验一与实验二结果相同,只不过在每个周期结束启动看门狗定时器时修改的寄存器参数不同。
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:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
MSP430F149定时器B讲解
MSP430F149定时器B1.定时器B模块:TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。
二者区别:(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;(2)TimerB没有实现定时器A中的SCCI功能位的功能;(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;(4)有些芯片型号当中TimerB输出实现了高阻抗输出;(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB 当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。
从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。
(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。
而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。
2.TimerB的逻辑结构图:定时器B的逻辑结构基本与定时器A相同。
3.定时器B的寄存器:寄存器相关位的配置过程参考定时器A和数据手册。
4.定时器B的比较功能当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。
5.TI提供的例程://// ////// MSP430F149// -----------------// /|| XIN|-// | | | HF XTAL (455k - 8MHz)// --|RST XOUT|-// | |// | P4.1/TB1|--> CCR1 - 75% PWM// | P4.2/TB2|--> CCR2 - 25% PWM//// M. Buccini// Texas Instruments Inc.// Feb 2005// Built with IAR Embedded Workbench Version: 3.21A//******************************************************************************。
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的定时器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:感谢大家的阅读,本文由我司收集整编。
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单片机定时器实验报告
实验四定时器实验实验目的: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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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位置位。
2.增计数模式
计数器TAR进行增计数,当其中的指等于或者大于CCR0中的值得时候,计数器TAR复位并且从0开始计数;当TAR=CCR0时,CCIFG置位;当TAR复位置0的时候,TAIFG置位。最大值是65536
二、捕获比较模块
比较模式
将TAR中的值域比较器中的值进行比较,产生特定的波形和中断。
需要说明的是:3个捕获比较器的EQUX中信号的设置是有一定的差别的:
当TAR>=CCR0时,EQU0置位;
当TAR=CCR1时,EQU1置位;
当TAR=CCR2时,EQU2置位;
由于是从0开始的,再给CCR0赋值的时候要减去1.
3.连续计数模式
在连续计数模式下,允许CCRX中断并在启动定时器后,到达要求的时间间隔会产生相应的中断请求。例如TAR从0开始计数依次在几个时刻产生中断。
4.增减计数模式
先增计数,到达CCRX后,计数器开始进行减计数,增计数至CCR0的时候CCIFG置位,TAR减计数至0的时候,TAIFG置位。这种计数模式下可以产生需要的波形。
另外一种就是可以设定一个数组用数组中的数值来实现在不同的时刻产生中.
溢出中断的翻转:
#include<msp430f149.h>
void main()
{
WDTCTL=WDTPW+WDTHOLD;
P6DIR|=BIT0;
CCTL0=CCIE;
CCR0=20000;
1、增计数模式下输出单元的波形
输出模式1主要是置位:在CCRX=TAR的时候,发生置位的操作,只有下种模式来改变。
输出模式2主要是PWM翻转和复位:在TAR=CCRX的时候,发生翻转,在TAR=CCR0的时候发生的是复位的操作。
输出模式3主要是PWM置位和复位:在TAR=CCRX的时候,发生值位,在TAR=CCR0的时候发生的是复位的操作。
TACTL=TASSEL_2+MC_2+TAIE;
_BIS_SR(GIE);
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void time(void)
{
switch(TAIV)
{
}
#pragma vector=TIMERA0_VECTOR
__interrupt void time(void)
{
P6OUT^=BIT0;
CCR0+=20000;
}
原因就是在增计数模式的时候其中的最大值就是CCR0的值,增计数的时候,增大CCR0的时候,可以直接跳到0重新计数,对于连续计数模式,它的最大值是65536,在设定CCR0的时候,除了CCR0=65536以外,每次就必须用到增量,就是保证经过这个增量后能产生中断。
捕获模式
将TAR中的值写入CCRX中,其中CCRX中的值是用户进行设置的,就可以判断触发信号的发生时间。完成捕获后,CCIFG置位;如果开启了中断,将妖娆产生中断请求。
三输出单元
受控的输出单元有8中输出模式,利用EQU0,EQUX和OUTPUT输出模式控制位,可以输出8中信号。由于输出单元的内部结构影响,除模式0外,其他模式的输出都在定时器的上升沿发生变化。此外输出单元不能输出模式2,3,6和7.
注意其中模式5,6,7开始的时候是高电平,模式1,2,3,4开始的时候是低电平。
在增计数模式下输出模式的周期和正脉宽自己一样计算;
连续计数模式下和增计数模式;
增计数模式下和以上两种模式有区别的就是在增计数和减计数的时候会两次发生中断的现象;
模式1还是在第一次的时候就会置位,知道下一种模式的到来才会发生变化。
msp430定时器有16位的定时器A和定时器B
定时器A中有3个捕获/比较器,4种工作模式,多种可选择的时钟源,8种输出模式的可配置单元
还有中断功能。
定时器A的控制寄存器主要包含那几个,其中TACTL主要包含了16位计数器中的控制位和状态位;CCTLX主要控制捕获/比较寄存器和比较器;CCRX与捕获/比较器寄存器相关;TAR是16位计数器的技术执行单元,保存计数器的内容;TAIV中断请求的中断信息。
_BIS_SR(GIE);
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void time(void)
{
P6OUT^=BIT0;
}
在连续计数模式下,定时器的使用举例:
#include<msp430f149.h>
模式2在增计数的时候在TAR=CCRX的时候会发生翻转,在TAR=CCR0的时候会复位在减计数的时候会翻转。
模式3是PWM置位和复位:在TAR=CCRX的时候发生置位,在TAR=CCR0的时候发生复位,在减计数的时候,TAR=CCRX的时候会产生置位。
剩下的模式理解是一样的:在TAR=CCRX的时候,发生第一次变化,在TAR=CCR0的时候发生第二次变化。