《第4讲MSP430单片机定时器2课件.ppt》由会员分享,可在线阅读,更多相关《第4讲MSP430单片机定时器2课件.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4讲MSP430单片机定时器2第1页,此课件共43页哦看门狗定时器16位定时器 Timer TA0 5个比较/捕获寄存器16位定时器 Timer TA1 3个比较/捕获寄存器16位定时器 Timer TA2 3个比较/捕获寄存器16位定时器 Timer TB0 7个比较/捕获寄存器RTC实时时钟MSP430F5529拥有的定时器资源 第2页,此课件共43页哦MSP430定时功能及其实现定时功能模块是MSP430应用系统中经常用到的重要部分,可用来实现定时控制、延迟、频率测量、脉宽测量和信号产生、信号检测等等。一般来说,MSP430所需的定时信号可以用软件和硬件两种方法来获得。MSP430系列
2、有丰富定时器资源:看门狗定时器(WDT),定时器A(Timer_A),定时器B(Timer_B)和定时器D(Timer_D)等。第3页,此课件共43页哦看门狗定时器 概述 看门狗定时器,主要作用:用于在“程序跑飞”时,WDT就会产生溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以又回到正常运行状态。MSP430 看门狗模块具有以下特性:8 种软件可选的定时时间看门狗工作模式定时器工作模式带密码保护的 WDT 控制寄存器时钟源可选择为降低功耗,可停止时钟失效保护第4页,此课件共43页哦看门狗定时器 WDT的操作 用户可以通过 WDTCTL 寄存器中的 WDTTMSEL 和 WD
3、THOLD 控制位设置 WDT 工作在看门狗模式、定时器模式和低功耗模式。看门狗模式PUC后,WDT 进入默认状态。如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号。用户软件一般都需要进行如下操作:进行WDT的初始化:设置合适的时间。周期性地对WDTCNT清零:防止WDT溢出。第5页,此课件共43页哦定时器 A 主要内容 定时器A的特性 定时器A的结构 定时器A的工作原理定时器工作模式捕获/比较模块输出单元Timer_A中断 定时器A的典型应用第6页,此课件共43页哦定时器 A 特性(1/1)定时器 A 由一个
4、16位定时器和多路捕获/比较通道组成。MSP430X5XX/6XX系列单片机的Timer _A有以下特性:带有 4 种操作模式的异步 16 位定时/计数器。输入时钟可以有多种选择,可以是慢时钟,快时钟以及外部时钟。可配置捕获/比较寄存器数多达 7 个。可配置的PWM(脉宽调制)输出。异步输入和同步锁存。不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平。完善的中断服务功能。快速响应Timer_A中断的中断向量寄存器。8种输出方式选择。可实现串行通讯。第7页,此课件共43页哦下图为下图为MSP430X5XX/6XXMSP430X5XX/6XX系系列单片机的列单片机的Timer_ATimer_
5、A结构结构定时器A的结构(1/2)Timer_A定时器主要由分为两个部分:主计数器捕获/比较模块第8页,此课件共43页哦定时器 A 结构(2/2)从上图可以看出,Timer_A有以下部分组成:定时计数器:16 位定时/计数寄存器TAxR 时钟源的选择和分频:定时器时钟 TACLK 可以选择 ACLK,SMCLK 或者来自外部的 TAxCLK。选择的时钟源,可以通过软件选择分频系数(2、3、4、5、6、7、8)。捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号,支持P
6、WM。第9页,此课件共43页哦定时器A的工作原理1 1基本工作原理基本工作原理基本工作原理基本工作原理 16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当定时时间到,产生溢出时,定时器可产生中断。置位定时器控制寄存器中的TACLR控制位,可自动清除TAR寄存器的计数值,同时,在增/减计数模式下,清除了时钟分频器和计数方向。主计数器(主计数器(主计数器(主计数器(TARTAR)负责定时、计数。)负责定时、计数。)负责定时、计数。)负责定时、计数。只需要定时、计数功能时,可以只使用只需要定时、计数功能时,可以只使用只需要定时、计数功能
7、时,可以只使用只需要定时、计数功能时,可以只使用主计数器部分。主计数器部分。主计数器部分。主计数器部分。TAR与捕获/比较模块配合,利用捕获测量脉宽、周期(捕获)(捕获)(捕获)(捕获)、实现PWM调制(比(比(比(比较)较)较)较)等应用。计数值(TAR寄存器的值)被送到各个捕获/比较模块中,它们可以在 无须无须无须无须 CPU CPU干预的情况下干预的情况下干预的情况下干预的情况下,根据触发条件与计数值,自动完成某些测量和输出。第10页,此课件共43页哦定时器 A 工作模式(1/1)MSP430X5XX/6XX系列单片机的Timer_A共有4种计数模式,如下表所示:MCxMCx模式模式说明
8、说明0000停止模式停止模式定时器停止定时器停止0101增计数模式增计数模式定时器重复从定时器重复从 0 0 计数到计数到 TAxCCR0 TAxCCR01010连续计数模式连续计数模式定时器器重复从定时器器重复从 0 0 计数到计数到 0FFFFh 0FFFFh1111增增/减计数模式减计数模式定时器重复从定时器重复从 0 0 增计数到增计数到 TAxCCR0 TAxCCR0 再减计数到再减计数到 0 0第11页,此课件共43页哦定时器 A 工作模式 停止模式 停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始
9、以暂停前的计数方向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_A仍然工作于增/减计数模式。重新计数时,从暂停前的状态开始继续沿着下降方向开始计数。第12页,此课件共43页哦 增计数模式捕获/比较寄存器TAxCCR0TAxCCR0用作Timer_A增计数模式的周期寄存器周期寄存器周期寄存器周期寄存器。计数器TAxR与TAxCCR0的值相等(或TAxR大于TAxCCR0的值)时,定时器 TAxR将立即重新从 0 开始计数。下图说明了增计数模式的计数过程。下图说明了增计数模式的计数过程。下图说明了增计数模式的计数过程。下图说明了增计数模式的
10、计数过程。定时器 A 工作模式 增计数模式第13页,此课件共43页哦定时器 A 工作模式 增计数模式 运行时改变捕获/比较寄存器TAxCCR0如果新的计数周期大于或者等于旧的计数周期或者大于当前计数值,定时器将一直计数到新的计数周期。如果新的计数周期小于当前计数值,计数值将减至 0。但是,在定时器回到 0 之前会有一次计数。第14页,此课件共43页哦当定时器计数到 TAxCCR0 时,设置标志位TAxCCR0 CCIFG(捕获比较中断标志)为1,而当定时器从TAxCCR0计数到0时,设置标志位TAIFG(定时器溢出标志)位为1。中断标志位的设置过程,如下图所示。定时器 A 工作模式 增计数模式
11、 第15页,此课件共43页哦【例1】利用TA0定时器,使其工作在增计数模式,采用SMCLK作为其计数参考时钟,并启用TA0CCR0计数中断,在TA0中断服务程序中反转P1.0口状态,以便于用示波器进行观察。#include void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗关闭看门狗 P1DIR|=0 x01;/P1.0设为输出设为输出 TA0CCTL0=CCIE;/CCR0中断使能中断使能 TA0CCR0=50000;TA0CTL=TASSEL_2+MC_1+TACLR;/SMCLK,增计数模式增计数模式,清除清除TAR计数器计数器 _bis_SR_regi
12、ster(LPM0_bits+GIE);/进入进入LPM0,使能中断使能中断/TA0中断服务程序中断服务程序#pragma vector=TIMER0_A0_VECTOR_interrupt void TIMER0_A0_ISR(void)P1OUT=0 x01;/反转反转P1.0口输出状态口输出状态第16页,此课件共43页哦定时器 A 工作模式 连续数模式(1/3)连续计数模式此模式下,定时器从当前值计数到0FFFFH后,又从0开始重新计数。如下图所示,此时捕获/比较寄存器 TAxCCR0 和其它捕获/比较寄存器的工作方式相同。第17页,此课件共43页哦定时器 A 工作模式 连续数模式(2/
13、3)标志位的设置过程,如下图所示:当定时器从 0FFFFh 计数到 0 时,中断标志 TAIFG 置位。第18页,此课件共43页哦定时器 A 工作模式 连续数模式(3/3)连续计数模式的典型应用:产生多个定时信号:通过中断处理程序在相应的比较寄存器TAxCCRx上加上一个时间差来实现。这个时间差是当前时刻(即相应的TAxCCRx中的值)到下一次中断发生时刻所经历的时间,如下图所示。第19页,此课件共43页哦【例2】利用TA1定时器,使其工作在连续计数模式下,采用SMCLK作为其计数参考时钟,使能TAIFG中断。在TA1中断服务程序中反转P1.0口状态,以便于用示波器进行观察。#include
14、void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗关闭看门狗 P1DIR|=0 x01;/P1.0设为输出设为输出 TA1CTL=TASSEL_2+MC_2+TACLR+TAIE;/SMCLK,连续计数模式连续计数模式,清除清除TAR,并使能,并使能TAIFG中断中断 _bis_SR_register(LPM0_bits+GIE);/进入进入LPM0,并启动中断并启动中断第20页,此课件共43页哦/TA1中断服务程序中断服务程序#pragma vector=TIMER1_A1_VECTOR_interrupt void TIMER1_A1_ISR(void)s
15、witch(_even_in_range(TA1IV,14)case 0:break;/无中断无中断 case 2:break;/TA1CCR1 CCIFG中断中断 case 4:break;/TA1CCR2 CCIFG中断中断 case 6:break;/TA1CCR3 CCIFG中断中断 case 8:break;/TA1CCR4 CCIFG中断中断 case 10:break;/TA1CCR5 CCIFG中断中断 case 12:break;/TA1CCR6 CCIFG中断中断 case 14:P1OUT=0 x01;/TAIFG中断中断 break;default:break;第21页
16、,此课件共43页哦定时器 A 工作模式 增/减计数模式(1/3)增/减计数模式该模式下,定时器先增计数到TAxCCR0的值,然后反向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0计数器数值的2倍。增/减计数模式时计数器中数值的变化情况如图4-35所示。第22页,此课件共43页哦定时器 A 工作模式 增/减计数模式(2/3)运行时改变周期寄存器 TAxCCR0当计数器正在运行且在减计数方向时改变 TAxCCR0 的值,定时器将会继续减计数方向到 0。定时器减到 0 后,新的周期才有效。当定时器在增计数方向时。如果新的计数周期大于或者等于原来的计数周期,或者比当前的计数值大,定时器
17、会增计数到新的计数周期,再反向计数。如果新的计数周期小于当前的计数值,则定时器将立即开始减计数。但是,在定时器减计数之前有一个额外的计数。第23页,此课件共43页哦定时器 A 工作模式 增/减计数模式(3/3)定时器TAxR的值从TAxCCR01增计数到TAxCCR0时,中断标志TAxCCR0 CCIFG置位;当定时器从0001h减计数到0000h时,中断标志TAIFG置位。标志位的设置情况如4-36图所示。第24页,此课件共43页哦【例3】利用TA0定时器,使其工作在增/减计数模式,采用SMCLK作为其计数参考时钟,并启用TA0CCR0计数中断,在TA0中断服务程序中反转P1.0口状态,以便
18、于用示波器进行观察。通过观察并与【例2】示例示波器观察的波形相比较,本例中的波形周期为【例2】示例示波器观察波形周期的2倍,即验证了增/减计数的原理。#include void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗定时器关闭看门狗定时器 P1DIR|=0 x01;/P1.0输出输出 TA0CCTL0=CCIE;/使能使能CCR0中断允许中断允许 TA0CCR0=50000;TA0CTL=TASSEL_2+MC_3+TACLR;/SMCLK,增增/减计数模式减计数模式,清除清除TAR _bis_SR_register(LPM0_bits+GIE);/进入进入
19、LPM0并启用全局中断并启用全局中断/TA0中断服务程序中断服务程序#pragma vector=TIMER0_A0_VECTOR_interrupt void TIMER0_A0_ISR(void)P1OUT=0 x01;/反转反转P1.0引脚输出状态引脚输出状态第25页,此课件共43页哦定时器 A 捕获/比较模块(1/5)Timer_A有多个相同的捕获/比较模块,为实时处理提供灵活的手段,每个模块都可用于捕获事件发生的时间或产生定时间隔。通过TACCTLx中的CAP位选择模式,该模块既可用于捕获模式,也可用于比较模式。当发生捕获事件或定时时间到都将引起中断。捕获/比较模块的结构,如下图所示
20、。第26页,此课件共43页哦 捕获/比较模块的逻辑结构第27页,此课件共43页哦定时器 A 捕获/比较模块(3/5)捕获模式当TACCTLx中的CAP=1,该模块工作在捕获模式。每个捕获/比较寄存器可以用来记录时间事件,例如:测量软件程序所用时间 测量硬件事件之间的时间 测量系统频率用CM1和CM0 位选择捕获条件,可以选择禁止捕获、上升沿捕获、下降沿捕获或者上升沿下降沿都捕获。当捕获完成后,定时器的值被复制到 TAxCCRn 寄存器,并且中断标志 CCIFG 置位。如果总的中断允许位GIE允许,相应的中断允许位CCIE也允许,则将产生中断请求。如下图所示:第28页,此课件共43页哦定时器 A
21、 捕获/比较模块(4/5)捕获模式的信号 第29页,此课件共43页哦定时器 A 捕获/比较模块(5/5)比较模式当TACCTLx中的CAP=0,该模块工作在比较模式。比较方式主要用于为软件或应用硬件产生定时,还可为D/A转换功能或者马达控制等各种用途产生脉宽调制(PWM)输出信号。在计数器TAxR计数到TAxCCRn(n 代表具体的捕获比较寄存器)的值时:中断标志 CCIFG 置位 内部信号 EQUx=1 EQUx 根据输出模式影响输出 输入信号 CCI 被锁存在 SCCI第30页,此课件共43页哦定时器 A 输出单元(1/5)每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单
22、元有8种工作模式,可产生基于EQUx的多种信号。除模式0外,其他模式的输出都在定时器时钟上升沿时发生变化。输出模式2,3,6,7不适合输出单元0,因为EQUx=EQU0。输出单元在输出控制位OUTMODx的控制下,有8种输出模式输出信号。这些模式与TAxR、TACCTLx、TAxCCR0的值有关,如下表所示。第31页,此课件共43页哦定时器 A 输出单元(2/5)OUTMODxOUTMODx模式模式说明说明000000输出模式输出模式0 0:输出输出输出信号取决与寄存器输出信号取决与寄存器 TACCTLx TACCTLx 中的中的 OUT OUT位。当位。当 OUTOUT位更新时,输出信号立即
23、更新。位更新时,输出信号立即更新。001001输出模式输出模式1 1:置位置位输出信号在输出信号在TAxRTAxR等于等于TAxCCRnTAxCCRn时置位,并保持置位到时置位,并保持置位到定时器复位或选择另一种输出模式为止。定时器复位或选择另一种输出模式为止。010010输出模式输出模式2 2:翻转翻转/复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时翻转,当时翻转,当TAxRTAxR的值等的值等于于TAxCCR0TAxCCR0时复位。时复位。011011输出模式输出模式3 3:置位置位/复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTA
24、xCCRn时置位,当时置位,当TAxRTAxR的值等的值等于于TAxCCR0TAxCCR0时复位。时复位。100100输出模式输出模式4 4:翻转翻转输出电平在输出电平在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时翻转,输出周期时翻转,输出周期是定时器周期的是定时器周期的2 2倍。倍。101101输出模式输出模式5 5:复位复位输出在输出在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时复位,并保持低电平时复位,并保持低电平直到选择另一种输出模式。直到选择另一种输出模式。110110输出模式输出模式6 6:翻转翻转/置位置位输出电平在输出电平在TAxRTAxR的
25、值等于的值等于TAxCCRnTAxCCRn时翻转,当时翻转,当TAxRTAxR值值等于等于TAxCCR0TAxCCR0时置位。时置位。111111输出模式输出模式7 7:复位复位/置位置位输出电平在输出电平在TAxRTAxR的值等于的值等于TAxCCRnTAxCCRn时复位,当时复位,当TAxRTAxR的的值等于值等于TAxCCR0TAxCCR0时置位。时置位。第32页,此课件共43页哦定时器 A 中断(1/2)Timer_A中断可由计数器溢出引起,也可以来自捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获/比较外部信号以产生中断。Timer_A模块使用两个中断向量:一个单独分配给捕获/
26、比较寄存器TAxCCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。TAxCCR0中断如下图所示:第33页,此课件共43页哦定时器 A 中断(2/2)TAxCCR1TAxCCRx和定时器按照优先次序结合共用一个中断向量,属于多源中断。中断向量寄存器用于确定哪个标志请求中断。TAxCCR1TAxCCRx中断,如下图所示:第34页,此课件共43页哦定时器 A典型应用实现PWM(1/5)PWM信号是一种具有固定周期不定占空比的数字信号,如下图所示:如果Timer_A定时器的计数器工作在增计数方式,输出采用输出模式7(复位/置位模式),则可利用寄存器TAxCCR0控制PWM波形的周期,
27、用某个寄存器TAxCCRx控制占空比。这样Timer_A就可以产生出任意占空比的PWM波形。如下图所示:第35页,此课件共43页哦定时器 A典型应用实现PWM(2/5)可以随时间变化任意改变PWM信号的占空比,具体做法:保持CCR0值(周期不变);改变CCRx值(改变占空比)。如下图所示:第36页,此课件共43页哦定时器 A典型应用实现PWM(3/5)如果PWM信号占空比随时间变化,那么经过滤波之后的输出信号就是幅度变化的模拟信号,因此通过控制PWM信号的占空比,就可以产生不同的模拟信号,实现D/A转换。如下图所示:PWM不需要修改占空比和时间时,CPU在做完Timer_A初始化工作之后,Ti
28、mer_A就能自动输出PWM,而不需利用中断维持PWM输出,此时CPU就可以进入低功耗状态。第37页,此课件共43页哦 例:设ACLK=LFXT1=32768Hz,MCLK=SMCLK=DCOCLK=32ACLK=1.048576MHz,利用Timer_A输出周期为512/32768=15.625ms、占空比分别为75%和25%的PWM矩形波:#include void main(void)WDTCTL=WDTPW+WDTHOLD;/Stop WDT while(BAKCTL&LOCKIO)BAKCTL&=(LOCKIO);/Unlock XT1 pins for operation UCSC
29、TL6&=(XT1OFF);/XT1 On UCSCTL6|=XCAP_3;/Internal load cap定时器实现PWM例程 第38页,此课件共43页哦 /Loop until XT1 fault flag is cleared do UCSCTL7&=(XT2OFFG+XT1LFOFFG+DCOFFG);/Clear XT2,XT1,DCO fault flags SFRIFG1&=OFIFG;/Clear fault flags while(SFRIFG1&OFIFG);/Test oscillator fault flag P1DIR|=BIT2+BIT3;/P1.2 and P
30、1.3 output P1SEL|=BIT2+BIT3;/P1.2 and P1.3 options select定时器实现PWM例程第39页,此课件共43页哦 TA0CCR0=512-1;/PWM Period TA0CCTL1=OUTMOD_7;/CCR1 reset/set TA0CCR1=384;/CCR1 PWM duty cycle TA0CCTL2=OUTMOD_7;/CCR2 reset/set TA0CCR2=128;/CCR2 PWM duty cycle TA0CTL=TASSEL_1+MC_1+TACLR;/ACLK,up mode,clear TAR _bis_SR_
31、register(LPM3_bits);/Enter LPM3 _no_operation();/For debugger由程序知:P1.2 TA0CCR1-75%PWM,P1.3 TA0CCR2-25%PWM。周期15.625ms。定时器实现PWM例程第40页,此课件共43页哦与之相关的寄存器寄存器缩写读/写类型访问方式偏移地址初始状态Timer_A控制寄存器TAxCTL读/写字访问00h0000hTimer_A捕获/比较控制寄存器0TAxCCTL0读/写字访问02h0000hTimer_A捕获/比较控制寄存器1TAxCCTL1读/写字访问04h0000hTimer_A捕获/比较控制寄存器6
32、TAxCCTL6读/写字访问0Eh0000hTimer_A计数寄存器TAxR读/写字访问10h0000hTimer_A捕获/比较寄存器0TAxCCR0读/写字访问12h0000hTimer_A捕获/比较寄存器1TAxCCR1读/写字访问14h0000hTimer_A捕获/比较寄存器6TAxCCR6读/写字访问1Eh0000hTimer_A中断向量TAxIV只读字访问2Eh0000hTimer_A分频扩展寄存器0TAxEX0读/写字访问20h0000h第41页,此课件共43页哦Timer_A控制寄存器(TAxCTL)TASSEL:第89位,Timer_A时钟源选择控制位。00:TAxCLK;01
33、:ACLK;10:SMCLK;11:TAxCLK反转后的时钟;ID:第67位,输入分频器。00:1分频;01:2分频;10:4分频;11:8分频;MC:第45位,工作模式控制位。00:停止模式,定时器被停止;01:增计数模式,定时器增计数到TAxCCR0;10:连续计数模式,定时器增计数到0FFFFh;11:增/减计数模式,定时器首先增计数到TAxCCR0,之后减计数到0000h;TACLR:第2位,定时器清除控制位。TAIE:第1位,Timer_A中断使能控制位。0:中断禁止;1:中断使能。TAIFG:第0位,Timer_A中断标志位。0:没有中断被挂起;1:中断被挂起。与之相关的寄存器第42页,此课件共43页哦定时器中断 Timer_A模块使用两个中断向量:一个单独分配给捕获/比较寄存器TAxCCR0;vector=TIMER0_A0_VECTOR通常称之为TAxCCR0中断;另一个作为共用中断向量用于定时器溢出中断和其他的捕获/比较寄存器。vector=TIMER0_A1_VECTOR通常称之为 TAxIV中断。第43页,此课件共43页哦
限制150内