第4讲MSP430单片机定时器演示幻灯片_第1页
第4讲MSP430单片机定时器演示幻灯片_第2页
第4讲MSP430单片机定时器演示幻灯片_第3页
第4讲MSP430单片机定时器演示幻灯片_第4页
第4讲MSP430单片机定时器演示幻灯片_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定时器(Timer),看门狗定时器16位定时器TimerTA05个比较/捕获寄存器16位定时器TimerTA13个比较/捕获寄存器16位定时器TimerTA23个比较/捕获寄存器16位定时器TimerTB07个比较/捕获寄存器RTC实时时钟,MSP430F5529拥有的定时器资源,MSP430定时功能及其实现,定时功能模块是MSP430应用系统中经常用到的重要部分,可用来实现定时控制、延迟、频率测量、脉宽测量和信号产生、信号检测等等。一般来说,MSP430所需的定时信号可以用软件和硬件两种方法来获得。MSP430系列有丰富定时器资源:看门狗定时器(WDT),定时器A(Timer_A),定时器B(Timer_B)和定时器D(Timer_D)等。,看门狗定时器概述,看门狗定时器,主要作用:用于在“程序跑飞”时,WDT就会产生溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以又回到正常运行状态。MSP430看门狗模块具有以下特性:8种软件可选的定时时间看门狗工作模式定时器工作模式带密码保护的WDT控制寄存器时钟源可选择为降低功耗,可停止时钟失效保护,看门狗定时器WDT的操作,用户可以通过WDTCTL寄存器中的WDTTMSEL和WDTHOLD控制位设置WDT工作在看门狗模式、定时器模式和低功耗模式。看门狗模式PUC后,WDT进入默认状态。如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号。用户软件一般都需要进行如下操作:进行WDT的初始化:设置合适的时间。周期性地对WDTCNT清零:防止WDT溢出。,定时器A主要内容,定时器A的特性定时器A的结构定时器A的工作原理定时器工作模式捕获/比较模块输出单元Timer_A中断定时器A的典型应用,定时器A特性(1/1),定时器A由一个16位定时器和多路捕获/比较通道组成。MSP430X5XX/6XX系列单片机的Timer_A有以下特性:带有4种操作模式的异步16位定时/计数器。输入时钟可以有多种选择,可以是慢时钟,快时钟以及外部时钟。可配置捕获/比较寄存器数多达7个。可配置的PWM(脉宽调制)输出。异步输入和同步锁存。不仅能捕获外部事件发生的时间还可锁定其发生时的高低电平。完善的中断服务功能。快速响应Timer_A中断的中断向量寄存器。8种输出方式选择。可实现串行通讯。,下图为MSP430X5XX/6XX系列单片机的Timer_A结构,定时器A的结构(1/2),Timer_A定时器主要由分为两个部分:,主计数器捕获/比较模块,定时器A结构(2/2),从上图可以看出,Timer_A有以下部分组成:定时计数器:16位定时/计数寄存器TAxR时钟源的选择和分频:定时器时钟TACLK可以选择ACLK,SMCLK或者来自外部的TAxCLK。选择的时钟源,可以通过软件选择分频系数(2、3、4、5、6、7、8)。捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O端口处理事务的能力和速度。输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号,支持PWM。,定时器A的工作原理,1基本工作原理,16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当定时时间到,产生溢出时,定时器可产生中断。置位定时器控制寄存器中的TACLR控制位,可自动清除TAR寄存器的计数值,同时,在增/减计数模式下,清除了时钟分频器和计数方向。,主计数器(TAR)负责定时、计数。只需要定时、计数功能时,可以只使用主计数器部分。,TAR与捕获/比较模块配合,利用捕获测量脉宽、周期(捕获)、实现PWM调制(比较)等应用。,计数值(TAR寄存器的值)被送到各个捕获/比较模块中,它们可以在无须CPU干预的情况下,根据触发条件与计数值,自动完成某些测量和输出。,定时器A工作模式(1/1),MSP430X5XX/6XX系列单片机的Timer_A共有4种计数模式,如下表所示:,定时器A工作模式停止模式,停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_A仍然工作于增/减计数模式。重新计数时,从暂停前的状态开始继续沿着下降方向开始计数。,增计数模式捕获/比较寄存器TAxCCR0用作Timer_A增计数模式的周期寄存器。计数器TAxR与TAxCCR0的值相等(或TAxR大于TAxCCR0的值)时,定时器TAxR将立即重新从0开始计数。下图说明了增计数模式的计数过程。,定时器A工作模式增计数模式,定时器A工作模式增计数模式,运行时改变捕获/比较寄存器TAxCCR0如果新的计数周期大于或者等于旧的计数周期或者大于当前计数值,定时器将一直计数到新的计数周期。如果新的计数周期小于当前计数值,计数值将减至0。但是,在定时器回到0之前会有一次计数。,当定时器计数到TAxCCR0时,设置标志位TAxCCR0CCIFG(捕获比较中断标志)为1,而当定时器从TAxCCR0计数到0时,设置标志位TAIFG(定时器溢出标志)位为1。中断标志位的设置过程,如下图所示。,定时器A工作模式增计数模式,【例1】利用TA0定时器,使其工作在增计数模式,采用SMCLK作为其计数参考时钟,并启用TA0CCR0计数中断,在TA0中断服务程序中反转P1.0口状态,以便于用示波器进行观察。,#includevoidmain(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR|=0 x01;/P1.0设为输出TA0CCTL0=CCIE;/CCR0中断使能TA0CCR0=50000;TA0CTL=TASSEL_2+MC_1+TACLR;/SMCLK,增计数模式,清除TAR计数器_bis_SR_register(LPM0_bits+GIE);/进入LPM0,使能中断/TA0中断服务程序#pragmavector=TIMER0_A0_VECTOR_interruptvoidTIMER0_A0_ISR(void)P1OUT=0 x01;/反转P1.0口输出状态,定时器A工作模式连续数模式(1/3),连续计数模式此模式下,定时器从当前值计数到0FFFFH后,又从0开始重新计数。如下图所示,此时捕获/比较寄存器TAxCCR0和其它捕获/比较寄存器的工作方式相同。,定时器A工作模式连续数模式(2/3),标志位的设置过程,如下图所示:当定时器从0FFFFh计数到0时,中断标志TAIFG置位。,定时器A工作模式连续数模式(3/3),连续计数模式的典型应用:产生多个定时信号:通过中断处理程序在相应的比较寄存器TAxCCRx上加上一个时间差来实现。这个时间差是当前时刻(即相应的TAxCCRx中的值)到下一次中断发生时刻所经历的时间,如下图所示。,【例2】利用TA1定时器,使其工作在连续计数模式下,采用SMCLK作为其计数参考时钟,使能TAIFG中断。在TA1中断服务程序中反转P1.0口状态,以便于用示波器进行观察。,#includevoidmain(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,并启动中断,/TA1中断服务程序#pragmavector=TIMER1_A1_VECTOR_interruptvoidTIMER1_A1_ISR(void)switch(_even_in_range(TA1IV,14)case0:break;/无中断case2:break;/TA1CCR1CCIFG中断case4:break;/TA1CCR2CCIFG中断case6:break;/TA1CCR3CCIFG中断case8:break;/TA1CCR4CCIFG中断case10:break;/TA1CCR5CCIFG中断case12:break;/TA1CCR6CCIFG中断case14:P1OUT=0 x01;/TAIFG中断break;default:break;,定时器A工作模式增/减计数模式(1/3),增/减计数模式该模式下,定时器先增计数到TAxCCR0的值,然后反向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0计数器数值的2倍。增/减计数模式时计数器中数值的变化情况如图4-35所示。,定时器A工作模式增/减计数模式(2/3),运行时改变周期寄存器TAxCCR0当计数器正在运行且在减计数方向时改变TAxCCR0的值,定时器将会继续减计数方向到0。定时器减到0后,新的周期才有效。当定时器在增计数方向时。如果新的计数周期大于或者等于原来的计数周期,或者比当前的计数值大,定时器会增计数到新的计数周期,再反向计数。如果新的计数周期小于当前的计数值,则定时器将立即开始减计数。但是,在定时器减计数之前有一个额外的计数。,定时器A工作模式增/减计数模式(3/3),定时器TAxR的值从TAxCCR01增计数到TAxCCR0时,中断标志TAxCCR0CCIFG置位;当定时器从0001h减计数到0000h时,中断标志TAIFG置位。标志位的设置情况如4-36图所示。,【例3】利用TA0定时器,使其工作在增/减计数模式,采用SMCLK作为其计数参考时钟,并启用TA0CCR0计数中断,在TA0中断服务程序中反转P1.0口状态,以便于用示波器进行观察。通过观察并与【例2】示例示波器观察的波形相比较,本例中的波形周期为【例2】示例示波器观察波形周期的2倍,即验证了增/减计数的原理。,#includevoidmain(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);/进入LPM0并启用全局中断/TA0中断服务程序#pragmavector=TIMER0_A0_VECTOR_interruptvoidTIMER0_A0_ISR(void)P1OUT=0 x01;/反转P1.0引脚输出状态,定时器A捕获/比较模块(1/5),Timer_A有多个相同的捕获/比较模块,为实时处理提供灵活的手段,每个模块都可用于捕获事件发生的时间或产生定时间隔。通过TACCTLx中的CAP位选择模式,该模块既可用于捕获模式,也可用于比较模式。当发生捕获事件或定时时间到都将引起中断。捕获/比较模块的结构,如下图所示。,捕获/比较模块的逻辑结构,定时器A捕获/比较模块(3/5),捕获模式当TACCTLx中的CAP=1,该模块工作在捕获模式。每个捕获/比较寄存器可以用来记录时间事件,例如:测量软件程序所用时间测量硬件事件之间的时间测量系统频率用CM1和CM0位选择捕获条件,可以选择禁止捕获、上升沿捕获、下降沿捕获或者上升沿下降沿都捕获。当捕获完成后,定时器的值被复制到TAxCCRn寄存器,并且中断标志CCIFG置位。如果总的中断允许位GIE允许,相应的中断允许位CCIE也允许,则将产生中断请求。如下图所示:,定时器A捕获/比较模块(4/5),捕获模式的信号,定时器A捕获/比较模块(5/5),比较模式当TACCTLx中的CAP=0,该模块工作在比较模式。比较方式主要用于为软件或应用硬件产生定时,还可为D/A转换功能或者马达控制等各种用途产生脉宽调制(PWM)输出信号。在计数器TAxR计数到TAxCCRn(n代表具体的捕获比较寄存器)的值时:中断标志CCIFG置位内部信号EQUx=1EQUx根据输出模式影响输出输入信号CCI被锁存在SCCI,定时器A输出单元(1/5),每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有8种工作模式,可产生基于EQUx的多种信号。除模式0外,其他模式的输出都在定时器时钟上升沿时发生变化。输出模式2,3,6,7不适合输出单元0,因为EQUx=EQU0。输出单元在输出控制位OUTMODx的控制下,有8种输出模式输出信号。这些模式与TAxR、TACCTLx、TAxCCR0的值有关,如下表所示。,定时器A输出单元(2/5),定时器A中断(1/2),Timer_A中断可由计数器溢出引起,也可以来自捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获/比较外部信号以产生中断。Timer_A模块使用两个中断向量:一个单独分配给捕获/比较寄存器TAxCCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。TAxCCR0中断如下图所示:,定时器A中断(2/2),TAxCCR1TAxCCRx和定时器按照优先次序结合共用一个中断向量,属于多源中断。中断向量寄存器用于确定哪个标志请求中断。TAxCCR1TAxCCRx中断,如下图所示:,定时器A典型应用实现PWM(1/5),PWM信号是一种具有固定周期不定占空比的数字信号,如下图所示:,如果Timer_A定时器的计数器工作在增计数方式,输出采用输出模式7(复位/置位模式),则可利用寄存器TAxCCR0控制PWM波形的周期,用某个寄存器TAxCCRx控制占空比。这样Timer_A就可以产生出任意占空比的PWM波形。如下图所示:,定时器A典型应用实现PWM(2/5),可以随时间变化任意改变PWM信号的占空比,具体做法:保持CCR0值(周期不变);改变CCRx值(改变占空比)。如下图所示:,定时器A典型应用实现PWM(3/5),如果PWM信号占空比随时间变化,那么经过滤波之后的输出信号就是幅度变化的模拟信号,因此通过控制PWM信号的占空比,就可以产生不同的模拟信号,实现D/A转换。如下图所示:PWM不需要修改占空比和时间时,CPU在做完Timer_A初始化工作之后,Timer_A就能自动输出PWM,而不需利用中断维持PWM输出,此时CPU就可以进入低功耗状态。,例:设ACLK=LFXT1=32768Hz,MCLK=SMCLK=DCOCLK=32ACLK=1.048576MHz,利用Timer_A输出周期为512/32768=15.625ms、占空比分别为75%和25%的PWM矩形波:#includevoidmain(void)WDTCTL=WDTPW+WDTHOLD;/StopWDTwhile(BAKCTL/Internalloadcap,定时器实现PWM例程,/LoopuntilXT1faultflagiscleareddoUCSCTL7/P1.2andP1.3optionsselect,定时器实现PWM例程,TA0CCR0=512-1;/PWMPeriodTA0CCTL1=OUTMOD_7;/CCR1reset/setTA0CCR1=384;/CCR1PWMdutycycleTA0CCTL2=OUTMOD_7;/CCR2reset/setTA0CCR2=128;/CCR2PWMdutycycleTA0CTL=TASSEL_1+MC_1+TACLR;/ACLK,upmode,clearTAR_bis_SR_register(LPM3_bits);/EnterLPM3_no_operation();/Fordebugger由程序知:P1.2TA0CCR1-75%PWM,P1.3TA0CCR2-25%PWM。周期15.625ms。,定时器实现PWM例程,与之相关的寄存器,Timer_A控制寄存器(TAxCTL)TASSEL:第89位,Timer_A时钟源选择控制位。00:TAxCLK;01:ACLK;10:SMCLK;11:TAxCLK反转后的时钟;ID:第67位,输入分频器。00:1分频;01:2分频;10:4分频;11:8分频;MC:第45位,工作模式控制位。00:停止模式,定时器被停止;01:增计数模式,定时器增计数到TAxCCR0;10:连续计数模式,定时器增

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论