MSP430F249的定时器计数器课件_第1页
MSP430F249的定时器计数器课件_第2页
MSP430F249的定时器计数器课件_第3页
MSP430F249的定时器计数器课件_第4页
MSP430F249的定时器计数器课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 MSP430定时器计数器在学习MSP430F249的定时器之前,我们先回顾一下MSP430F249的时钟系统。MSP430F249的基础时钟模块具有3个振荡器,这3个振荡器分别是LFXT1低频振荡器(32768Hz)、XT2高频振荡器(400k16MHz)和DCO内部数字控制振荡器(约1.1MHz)。这3个振荡器都可以通过软件设定进行1/2/4/8分频,产生单片机工作需要的3个时钟信号:主时钟MCLK、子系统时钟SMCLK和辅助时钟ACLK。 第1页,共43页。MCLK可以通过编程选择3个振荡器(LFXT1、XT2、DCO)之一,或它们1/2/4/8分频后作为其信号源;SMCLK可以选

2、择2个振荡器(XT2、DCO),或它们1/2/4/8分频后作为其信号源;ACLK只能由LFXT1时钟信号或1/2/4/8分频后作为其信号源。在 MSP430F249单片机的大部分内部设备中,都能选择上述3种时钟信号MCLK、SMCLK和ACLK作为时钟源并对上述时钟信号再进行1/2/4/8分频,应用极其灵活。第2页,共43页。5.1 看门狗定时器看门狗定时器WDT实际上是一个特殊的定时器,其主要功能是当单片机软件出现故障(例如外部干扰引起单片机程序跑飞或陷入死循环)时,能使系统重新启动。看门狗定时器的工作原理就是发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位。当不使用看门狗

3、功能时,看门狗定时器可以作为内部定时器使用。第3页,共43页。为了说明看门狗模式的工作原理,我们来分析下列程序片段:void main(void)WDTCTL=WDTPW+WDTHOLD;/停止看门狗初始化部分while(1)WDTCTL=WDT_ARST_250;/看门狗模式,定时250ms程序主体第4页,共43页。程序说明:在while循环中,设置看门狗时间间隔为250ms(时钟源为ACLK),同时计数器清零,然后执行程序主体,如此反复执行。如果程序主体执行时间加上所有中断程序执行时间之和小于设定的看门狗时间间隔250ms,那么程序总是正常进行的;如果系统受到干扰,程序跑飞或陷入死循环,这

4、时在250ms时间内执行不到WDTCTL=WDT_ARST_250指令,从而看门狗计数器没有被清零,看门狗计数器溢出WDTIFG标志置位,产生PUC复位信号,系统重新启动,这样系统就脱离了死循环状态。第5页,共43页。PUC复位后WDTCTL=0 x6900WDTPW 看门狗定时器访问安全口令,读取时总为0 x69,写入时必须为0 x5A,否则产生一个PUC信号。WDTHOLD 看门狗暂停位,0 看门狗定时器正常工作;1 看门狗定时器停止WDTNMIES NMI边沿选择,0上升沿触发NMI中断;1下降沿触发NMI中断3)看门狗定时器相关寄存器控制寄存器WDTCTL第6页,共43页。WDTNMI

5、E 复位引脚和NMI选择,0 RST/NMI引脚为复位端;1 RST/NMI引脚为边沿触发的非屏蔽中断输入。WDTTMSEL 看门狗定时器模式选择,0看门狗模式;1 定时器模式WDTCNTCL 计数器清零控制位,0 无作用;1 计数器清零,即WDTCNT=0WDTSSEL 时钟源选择位,0 SMCLK; 1 ACLKWDTISx 时间间隔选择位,x=0、1第7页,共43页。第8页,共43页。实例5-1 看门狗定时器的应用 任务要求:利用看门狗定时器产生设定的时间间隔中断,在中断服务程序中切换LED灯亮1s灭1s。分析说明:看门狗定时器的时钟源只有SMCLK和ACLK两种,4种分频值,只能实现几

6、种简单的定时间隔中断。第9页,共43页。#include void main(void) WDTCTL = WDT_ADLY_1000; / 看门狗定时时间间隔为1s IE1 |= WDTIE; / 允许WDT中断 P1DIR |= 0 x01; / P1.0输出 _BIS_SR(LPM3_bits + GIE); / 进入LPM3低功耗模式,总中断允许#pragma vector=WDT_VECTOR_interrupt void watchdog_timer(void) /看门狗中断服务程序 P1OUT = 0 x01; / P1.0 取反第10页,共43页。5.2 定时器AMsp430f

7、249单片机的定时器A是具有3个捕获/比较寄存器的16位定时器/计数器。定时器A可以用来实现计数、延时、信号频率测量、信号触发检测、脉冲脉宽信号测量。定时器A还可以实现下列功能: (1)PWM信号输出功能:通过设置TA的工作模式,结合CCR0、CCR1或CCR2计数,直接从CCR0、CCR1或CCR2中子模块的OUT.x端输出。(2)Slope AD转换功能:利用定时器A与比较器A结合设计成斜边数模转换器。(3)实现软USART功能:利用CCR0子模块中的捕获输入功能,结合TAR实现通用串行异步通讯功能(USART)。 (4)ADC12模块的采样信号:利用定时器的TAR或CCR0实现OUT.x

8、输出得到ADC12模块所需要的采样触发信号。第11页,共43页。第12页,共43页。第13页,共43页。第14页,共43页。第15页,共43页。TACLR 定时器A清除位,该位置位将计数器TAR清零、分频系数清零、计数模式置为增计数模式。TACLR 由硬件自动复位,其读出始终为 0。定时器在下一个有效输入沿开始工作。TAIE 定时器A中断允许位,0中断禁止;1中断允许TAIFG 定时器A中断标志位,0没有中断;1中断标志建立。增计数模式:当定时器由 CCR0 计数到到 0 时,TAIFG 置位。连续计数模式:当定时器由 0FFFFH计数到 0 时,TAIFG 置位。增/减计数模式:当定时器由

9、CCR0 减计数到 0 时,TAIFG 置位。第16页,共43页。第17页,共43页。SCS 同步捕获源选择,0异步捕获;1同步捕获。异步捕获模式允许在请求时立即将 CCIFG 置位和捕获定时器值,适用于捕获信号的周期远大于定时器时钟周期的情况。但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器的值可能出错。在实际中经常使用同步捕获模式,捕获事件发生时,CCIFG 置位和捕获定时器值将与定时器时钟信号同步。第18页,共43页。SCCI同步捕获/比较输入位,仅用于比较模式。比较相等信号 EQUx 将选择中的捕获、比较输入信号CCIx(CCIxA,CCIxB,VCC 和 GND)进行锁存,这

10、样当计数器的值继续变化时,锁存器中的值仍然保持不变,然后可以通过 SCCI位读出。CAP 模式选择位,0 比较模式;1 捕获模式。OUTMODx 输出模式(x=0、1、2)第19页,共43页。第20页,共43页。CCIE 捕获/比较中断使能位,0中断禁止;1 中断允许CCI 捕获/比较输入位,用来读取选择的输入信号。OUT 输出位,如果OUTMODx设为000时,那么由该位决定输出到OUTx的信号。0 输出低电平;1输出高电平。COV 捕获溢出标志。当 CAP=1 时,选择捕获模式,如果捕获寄存器的值被读出前再次发生捕获事件,则COV置位。读捕获寄存器时不会使溢出标志复位,须用软件复位。CCI

11、FG 捕获/比较中断标志位。捕获模式:寄存器 CCR0 捕获了定时器 TAR 值时置位。比较模式:定时器 TAR 值等于寄存器 CCR0 值时置位。第21页,共43页。第22页,共43页。2. 定时器工作原理定时器的4种工作模式:(1)停止模式:定时器停止工作。(2)增计数模式:如果定时器原来处于停止模式,设置增计数模式会同时启动计数器TAR开始计数。当计数值达到TACCR0寄存器的值时,中断标志TACCR0_CCIFG置位。当下一个计数时钟到来时,计数器TAR的值变为0,重新开始新一轮计数。因此定时器的计数周期由TACCR0的值决定。由于必须用TACCR0寄存器存放计数的最大值,所以增计数模

12、式比连续模式多占用了TACCR0寄存器。在增计数期间还可以设置 CCR12 来产生中断标记,产生PWM等信号。第23页,共43页。(3)连续计数模式:连续计数模式与增计数模式的区别是连续模式不占用TACCR0寄存器。当CCRx(x=0、1、2)寄存器的值与TAR的值相等时,若此时CCRx是处于中断允许的话,则产生相应的中断标志CCIFGx。而TAR的中断标志TAIFG位则在TAR计数值从FFFFH转为0时产生中断标志TAIFG。定时器A连续模式计数启动后,TAR的值开始从0-FFFFH-0-FFFFH.不断计重复计数,直至软件控制其停止计数为止。第24页,共43页。(4)增减计数模式:增减计数

13、模式也要用到TACCR0寄存器,定时器启动后,计数值先从0增加到TACCR0寄存器中的值,然后计数器又开始减少,减少到0后,计数器又递增,如此周而复始。在增减计数模式一个周期中,中断标志位TAIFG和TACCR0_CCIFG个置位一次。当计数值达到最大值TACCR0的值时,中断标志TACCR0_CCIFG置位;当计数值递减到0时,中断标志TAIFG置位。增减模式在定时器周期不是 0FFFFH 且需要产生对称的脉冲时使用。例如,两个输出驱动一个 H 桥时不能同时为高,增减模式支持在输出信号之间有死区时间的应用。第25页,共43页。定时器 A 的中断说明:定时器 A 有2个中断向量,一个单独分配给

14、捕获比较寄存器 CCR0,另一个作为共用的中断向量用于定时器溢出和其他的捕获比较寄存器(CCR1和CCR2)。CCR0 中断向量具有最高的优先级,CCR0用于定义增计数和增减计数模式的周期。CCR0的中断标志TACCR0_CCIFG 在执行中断服务程序时能自动复位。CCR1、CCR2 和定时器溢出共用另一个中断向量,属于多源中断,对应的中断标志为TACCR1_CCIFG、TACCR2_CCIFG和 TAIFG1,在读中断向量字 TAIV 后,自动复位。如果不访问 TAIV 寄存器,则不能自动复位,须用软件清除;如果相应的中断允许位为零(不允许中断),则将不会产生中断请求,但中断标志仍存在,这时

15、须用软件清除。第26页,共43页。实例5.2 定时器A定时1秒任务要求:利用定时器A产生设定的时间间隔中断,在中断服务程序中切换LED灯的亮灭,亮1s灭1s。分析说明:定时器A的时钟源可以选择为SMCLK、ACLK和外部引脚输入(TACLK、INCLK),一般选择为SMCLK和ACLK。ACLK为低频晶振32768Hz及1/2/4/8分频,定时器A可以再对ACLK进行1/2/4/8分频,定时器A的时基最小为1/32768秒(约30us),最大为64分频后即1.95ms,因此定时器A的定时范围为2s(对应时基30us)和128s(对应时基1.95ms)。SMCLK可选择XT2和内部DCO作为时钟

16、源,若SMCLK选择XT2(例如8MHz),则定时器A的时基最小为0.125us,最大为64分频后即8us,因此定时器A的定时范围为8.19ms(对应时基0.125us)和524ms(对应时基8ms)。第27页,共43页。第28页,共43页。#include void main(void) WDTCTL = WDTPW + WDTHOLD;/ 停止看门狗 P1DIR |= 0 x01; / P1.0输出 CCTL0 = CCIE; / CCR0中断允许 CCR0 = 32768; /定时时间间隔1s TACTL = TASSEL_1 + MC_1; / 定时器A时钟源为ACLK,增计数模式 _

17、BIS_SR(LPM0_bits + GIE); / LPM0模式,总中断允许#pragma vector=TIMERA0_VECTOR_interrupt void Timer_A (void) /定时器A0中断服务程序 P1OUT = 0 x01; / P1.0取反第29页,共43页。实例5.3 定时器A产生4路周期信号任务要求:利用定时器A产生4路周期信号,周期分别为4s、2s、1s和0.25s,四路周期信号分别从P1.0和 P1.1P1.4的A0A3输出。分析说明:定时器A有3个捕获比较寄存器CCR0、CCR1和CCR2。若设置定时器A工作在连续模式,利用3个比较器可以获得3路不同的周

18、期信号,再利用定时器溢出中断可以再输出1路周期信号。因此,定时器A可以很方便的产生4路时间间隔不同的周期信号。第30页,共43页。MSP430F249单片机的程序运行主时钟MCLK= DCO=1.1MHz。定时器A采用连续模式,定时器A的时钟源为ACLK=32768Hz。时基单位为1/32768秒,设置CCR0 = 32768,则定时时间间隔1s(周期2s);CCR1 = 32768/2,则定时时间间隔0.5s(周期1s);CCR2 = 32768/8,则定时时间间隔0.125s(周期0.25s);定时器A溢出中断,定时时间间隔2s(周期4s)。第31页,共43页。实例5.4 定时器A产生两路

19、PWM信号 任务要求:利用定时器A产生占空比75%和15%的两路PWM信号,周期均为20ms。分析说明:定时器A有多种信号输出模式,其中输出模式3和模式7用来产生脉宽调制信号(PWM信号),在定时器A的增计数模式,用CCR0控制PWM信号的周期,CCR1、CCR2控制占空比,可以得到两路不同占空比的PWM信号。第32页,共43页。MSP430F249单片机的程序运行主时钟MCLK= DCO=1.1MHz。SMCLK = XT2=8MHz,定时器A时钟源为SMCLK的8分频(即1MHz),增计数模式。时基单位1us,CCR0 = 20000,则定时时间间隔20ms(即PWM 周期=20ms)。两

20、路PWM信号从P1.2(TA1)和P1.3(TA2)输出,设置CCR1=20000*75%=15000,则TA1的PWM信号占空比为75%,设置CCR2=20000*15%=3000,则TA2的PWM信号占空比为15%。第33页,共43页。实例5.5 定时器A精确测量输入信号的周期 任务要求:利用定时器A精确测量某输入信号的周期,周期范围0999999us。分析说明:利用定时器A的脉冲捕获功能可以精确地测量外部输入信号的脉宽和周期。捕获模式测量输入信号的周期时,一般设置定时器A为连续模式,如果选定的引脚上出现设定的跳变沿(上升沿或者下降沿),那么定时器A的计数值被复制到TACCRx中,并且中断

21、标志TACCIFGx置位。在捕获中断程序中读取捕获值,相邻两次捕获值之差就是信号周期。由于事件(上升沿或者下降沿)发生的随机性,注意在需要时使能溢出中断,在溢出中断中记录溢出发生次数,周期=65536x溢出次数+两次捕获值之差。第34页,共43页。第35页,共43页。MSP430F249单片机的程序运行主时钟MCLK= DCO=1.1MHz。SMCLK = XT2=8MHz,定时器A时钟源为SMCLK的8分频(即1MHz),连续计数模式。定时器A使用捕获模式测量信号周期时,可以让主计数器TAR工作在连续计数模式。捕获模块设置TAx(x=02)管脚上升沿触发,每次捕获事件发生后,在捕获中断程序中

22、读取捕获值,相邻两次捕获值之差就是信号周期。对于计数值溢出的情况,可以在溢出中断程序中记录溢出次数,扩展周期信号的测量范围。第36页,共43页。5.3 定时器BMSP430F249单片机的定时器B是具有7个捕获/比较寄存器的16位定时器/计数器。TB 可以支持捕获/比较功能、PWM 输出和定时器功能,TB 的捕获比较寄存器是双缓冲结构,定时器B比定时器A使用更为灵活。定时器B与定时器A的大多数功能相同,它们的主要区别如下:定时器B的长度是可编程的,可编程为8,10,12,16位;定时器B的TBCCRx(x=06)寄存器是双缓冲的,并可以成组工作;所有定时器B的输出可以为高阻抗状态;SCCI位功

23、能在定时器B中不存在。 第37页,共43页。定时器 B 可以通过 CNTL0、CNTL1 位将它配置为 8,10,12 或 16 位定时器,相应的最大计数数值分别为0FFh,03FFh,0FFFh和0FFFFh。在 8,10和 12位模式下,对 TBR 写入数据时,数据的高4位必须为0。时钟源的选择和分频:定时器的时钟源可以是内部时钟源 ACLK, SMCLK,或外部源 TBCLK 和 INCLK。时钟源由 TBSSEL0、TBSSEL1位来选择,所选择的时钟可以通过 ID0、ID1 位进行 2、4、8 分频,当 TBCLR 置位时,分频器复位。第38页,共43页。第39页,共43页。实例5-6

温馨提示

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

评论

0/150

提交评论