




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章MSP430单片机的定时器/计数器在学习MSP430F249勺定时器之前,我们先回顾一下MSP430F249勺时钟系 统。MSP430F24啲基础时钟模块具有3个振荡器,这3个振荡器分别是LFXT低频 振荡器(32768HZ、XT2高频振荡器(400k16MHz)和DCO内部数字控制振荡 器(约)。这3个振荡器都可以通过软件设定进行1/2/4/8分频,产生单片机工作 需要的3个时钟信号:主时钟MCLK子系统时钟SMCL和辅助时钟ACLK MCLK 可以通过编程选择3个振荡器(LFXT1 XT2 DCC)之一,或它们1/2/4/8分频后 作为其信号源;SMCL1可以选择2个振荡器(XT2
2、DCC),或它们1/2/4/8分频后 作为其信号源;ACL只能由LFXT时钟信号或1/2/4/8分频后作为其信号源。在 MSP430F24单片机的大部分内部设备中,都能选择上述 3种时钟信号MCLK SMCL和ACLK乍为时钟源并对上述时钟信号再进行1/2/4/8分频,应用极其灵活。低频振荡器主要用来降低能量消耗(如使用电池供电的系统),高频振荡器 用来对事件做出快速反应或者供CPUS行大量运算。我们可以根据需要选择合适 的振荡器,也可以在不需要时关闭一些振荡器,节省功耗。看门狗定时器看门狗定时器WDT实际上是一个特殊的定时器,其主要功能是当单片机软件 出现故障(例如外部干扰引起单片机程序跑飞
3、或陷入死循环)时,能使系统重新启动。看门狗定时器的工作原理就是发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位。当不使用看门狗功能时,看门狗定时器可以作 为内部定时器使用。1)看门狗模式单片机系统上电后,WDT模块默认作为看门狗模式,默认使用内部时钟源 DCOCLK经过32768个时钟周期后(若DCOCLK为1MHz,则看门狗时间间隔约 为32ms左右)系统复位。因此,用户使用时,一般在程序中先停止看门狗功能, 然后根据要求配置好,再作为看门狗模式或者定时器模式使用。作为看门狗模式使用时,通过编写程序使 WDT的定时时间略大于程序循环 执行一次的时间,并且程序执行过程中有对看
4、门狗计数器清零的指令,使计数器重新计数,因此程序正常运行时,就会在WDT定时时间到之前对 WDT清零(俗 称定时喂狗),不会产生 WDT溢出。如果由于干扰等原因使得程序跑飞,就不 会在WDT定时时间到之前执行 WDT清零指令,则 WDT就会产生溢出,从而产 生系统复位,CPU重新从头开始执行用户程序,这样程序就可以回到正常运行状 态。为了说明看门狗模式的工作原理,我们来分析下列程序片段:void mai n(void) WDTCTL=WDT PW+WDTHOLD;tD1LED-BlUeR130012PI.U/IACLK/CAOUIC1;2PFXT2OUTC2q XLXT2INP 1.1/rA0
5、P 1.2/rA1P 4.1/rB1P4.2/rB2XT2OUT 52-58-5554-56P 1.3/rA2P 1.4/SMCLKP 1.5/rA0P 1.6/rA1P 1.7/rA2P 4.3/rB3P 4.4/rB4P 4.5/rB5P 4.6/rB6P 4.7/rBCLKP 2.0/ACLK/CA2P 2.1/rAINCLK/CA3P 2.2/CAOUT/rA0/CA4P 2.3/CA0/rA1P 2.4/CA1/rA2P 2.5/ROSC/CA5P 2.6/ADC12CLK/CA6P2.7/rA0/CA7P 5.0/UCB1STE/UCA1CLKP 5.1/UCB1SIMO/UCB1
6、SDAP 5.2/UCB1SOMI/UCB1SCLP 5.3/UCB1CLK/UCA1STEP5.4/MCLKP 3.0/UCB0STE/UCA0CLKP 3.1/UCB0SIMO/UCB0SDAP 3.2/UCB0SOMI/UCB0SCLP 3.3/UCB0CLK/UCA0STE P3.4/UCA0TXD/UCA0SIMOP3.5/UCA0RXD/UCA0SOMIP3.6/UCA 1TXD/UCA1SIMOP3.7/UCA1RXD/UCA1SOMIXT2OUTXT2INRST/NMI TCK TDI/TCLK TDO/TDI TMSP 5.5/SMCLKP 5.6/ACLKP 5.7/rBO
7、UTH/SVSOUTP6.0/A0 P6.1/A1P6.2/A2P6.3/A3P6.4/A4P6.5/A5P6.6/A6P 6.7/A7/SVSINVEREF+VREF+VREF-/VEREF-XINXOUTAVCCAVSSX1I32768HzB Til定时器A寄存器表5-1定时器A的相关寄存器序号地址简写奇存器名称1160HTACTL定时器A控制寄存器2162HTACCTL0捕获/比较控制寄存器 03164HTACCTL1捕获/比较控制寄存器 14166HTACCTL2捕获/比较控制寄存器 25170HTAR定时器A计数器6172HTACCR0捕获/比较寄存器07174HTACCR1捕获/比
8、较寄存器18176HTACCR2捕获/比较寄存器2912EHTAIV中断向量寄存器定时器A控制寄存器TACTL15109 1 871 651 43210未用TASSELxIDxMCx未用TACLRTAIETAIFGTASSELx定时器时钟源选择(x=0、1)定时器模式选择(x=0、1)MC1、MC0模式选择说明宏定义00停止MC 001增计数模式计数值上限为TACCR0MC 110连续计数模式计数值上限为FFFFHMC 211增减计数模式计数值上限为TACCR0MC 3IDxTASSEL1TASSEL0时钟源说明宏定义0 0TACLK外部引脚输入时钟TASSEL 00 1ACLK辅助时钟TAS
9、SEL 11 0SMCLK子系统时钟TASSEL 21 1INCLKTACLK勺反相信号TASSEL 3分频系数(x=0、1)ID1、ID0分频系数宏定义0 0直通ID 00 12分频ID 11 04分频ID 21 18分频ID 3MCxTACLRTAIETAIFG定时器A清除位,该位置位将计数器TAR清零、分频系数清零、 计数模式置为增计数模式。TACLR由硬件自动复位,其读出始终 为0。定时器在下一个有效输入沿开始工作。定时器A中断允许位,0中断禁止;1中断允许定时器A中断标志位,0没有中断;1中断标志建立。增计数模 式:当定时器由CCR0计数到到0时,TAIFG置位。连续计数模 式:当定
10、时器由0FFFFH计数到0时,TAIFG置位。增/减计数模式: 当定时器由CCR0减计数到0时,TAIFG置位。定时器A的16位计数器TAR150TARx这是计数器的主体,内部可读写。如果要写入 TAR计数值或用TACLK控制 寄存器中的控制位来改变定时器工作(特别是修改输入选择位、输入分频器和定 时器清除位时),修改时应先停止定时器,否则输入时钟和软件所用的系统时钟 异步可能引起时间竞争,使定时器响应出错。定时器A有 3个捕获/比较模块,每个模块都有自己的控制寄存器TACCTL02CMx捕获/比较控制寄存器TACCTLx (x=0 1、2)15 1 1413 1 12111098765432
11、10CMxCCISxSCSSCCICAPOUTMODxCCIECCIOUTCOVCCIFG捕获模式(x=0、1)CM1、CM0捕获模式宏定义00禁止捕获CM 001上升沿捕获CM 110下降沿捕获CM 211上升沿与下降沿都捕获CM 3CCISSCSSCCI同步捕获源选择,0异步捕获;1同步捕获。异步捕获模式允许 在请求时立即将CCIFG置位和捕获定时器值,适用于捕获信号 的周期远大于定时器时钟周期的情况。但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器的值可能出错。在实际中 经常使用同步捕获模式,捕获事件发生时,CCIFG置位和捕获定 时器值将与定时器时钟信号同步。同步捕获/比较输入
12、位,仅用于比较模式。比较相等信号EQUx将选择中的捕获、比较输入信号CCIx(CCIxA,CCIxB,VC和 GND)进行锁存,这样当计数器的值继续变化时,锁存器中的值仍然保 持不变,然后可以通过 SCC位读出。模式选择位,0比较模式;1捕获模式。CAPOUTMODx 输出模式(x=0、1、2)表5-2输出模式捕获/比较输入信号选择CCIS1 CCIS0输入信号选择宏定义00CCIxA( x=0、1、2)CCIS 001CCIxB( x=0、1、2)CCIS 110GNDCCIS 211VCCCCIS 3OUTMOD2OUTMOD1OUTMOD0模式 名称说明宏定义000输出输出信号由TACC
13、TLx的 OUT决定OUTMOD 0001置位当计数值达到TACCRx寄存器中的值时,输出信号为 咼电平并保持,直到定时器复位OUTMOD_1010翻转/ 复位当计数值达到 TACCRx寄存器中的值时,输出信号翻 转;当计数值达到 TACCR0寄存器中的值时,输出信 号复位。OUTMOD_2011置位/ 复位当计数值达到TACCRx寄存器中的值时,输出信号置 位;当计数值达到 TACCR0寄存器中的值时,输出信 号复位。OUTMOD_3100翻转当计数值达到TACCRx寄存器中的值时,输出信号翻 转。OUTMOD_4101复位当计数值达到TACCRx寄存器中的值时,输出信号复 位。OUTMOD
14、_5110翻转/置位当计数值达到 TACCRx寄存器中的值时,输出信号翻 转;当计数值达到 TACCR0寄存器中的值时,输出信OUTMOD_6号置位。111复位/ 置位当计数值达到TACCRx寄存器中的值时,输出信号复 位;当计数值达到 TACCR0寄存器中的值时,输出信 号置位。OUTMOD_7CCIECCIOUTCOVCCIFG捕获/比较中断使能位,0中断禁止;1中断允许捕获/比较输入位,用来读取选择的输入信号。输出位,如果OUTMODx设为000时,那么由该位决定输出到OUTx的信号。0输出低电平;1输出高电平。捕获溢出标志。当CAP=1时,选择捕获模式,如果捕获寄存器 的值被读出前再次
15、发生捕获事件,则 COV置位。读捕获寄存器 时不会使溢出标志复位,须用软件复位。捕获/比较中断标志位。捕获模式:寄存器 CCR0捕获了定时器TAR值时置位。比较模式:定时器 TAR值等于寄存器 CCR0值 时置位。定时器A中断矢量寄存器 TAIV1543100TAIVx0中断矢量值确定申请TAIV中断的中断源,具体含义见表 5-5TAIVxTAIV的值中断源中断标志中断优先级0000没有中断咼0012捕获/比较器1TACCR1 CCIFG0104捕获/比较器2TACCR2 CCIFG0116保留1008保留10110定时器溢出TAIFG低11012保留11114保留2.定时器工作原理定时器的4
16、种工作模式:(1)停止模式:定时器停止工作。(2)增计数模式:如果定时器原来处于停止模式,设置增计数模式会同时启动计数器TAR开始计数。当计数值达到TACCR0寄存器的值时,中断标志TACCR0_CCIF置位。当下一个计数时钟到来时,计数器TAR的值变为0,重新开 始新一轮计数。因此定时器的计数周期由TACCR0勺值决定。由于必须用TACCR0 寄存器存放计数的最大值,所以增计数模式比连续模式多占用了 TACCR寄存器。 在增计数期间还可以设置 CCR12来产生中断标记,产生PWM等信号。CClFGx而TAR的中断标志(3)连续计数模式:连续计数模式与增计数模式的区别是连续模式不占用 TACC
17、R(寄存器。当CCRx(x=0、1、2)寄存器的值与TAR的值相等时,若此时 CCRx是处于中断允许的话,则产生相应的中断标志TAIFG位则在TAR计数值从FFFFH专为0时产生中断标志TAIFG定时器A连续 模式计数启动后,TAR的值开始从0-FFFFH-0-FFFFH不.断计重复计数,直至软 件控制其停止计数为止。(4)增减计数模式:增减计数模式也要用到TACCR寄存器,定时器启动后, 计数值先从0增加到TACCR寄存器中的值,然后计数器又开始减少,减少到 0 后,计数器又递增,如此周而复始。在增减计数模式一个周期中,中断标志位 TAIFG和TACCR0_CCIF个置位一次。当计数值达到最
18、大值 TACCR0勺值时,中断 标志TACCR0_cCiF置位;当计数值递减到0时,中断标志TAIFG置位。增减模 式在定时器周期不是 0FFFFH且需要产生对称的脉冲时使用。例如,两个输出驱 动一个H桥时不能同时为高,增减模式支持在输出信号之间有死区时间的应 用。定时器工作原理说明:(1)比较模式:这是定时器的默认模式。如果事先设置好定时器比较值 TACCR(x=0 1、2),并开启定时器中断,当TAR的值增到TACCRX勺时候,中 断标志位CCIFGx(x=O、1、2)置1,进入相应的中断服务程序。比较模式常用 于产生PWM信号或设置给定时间间隔中断。(2)捕获模式:当TACCTL(x=O
19、、1、2)控制寄存器中的CAP置位时,贝U 相应的TACCR处于捕获模式。捕获源可以由 CCISx选择CCIxA,CCIxB,GND,VCC 可以利用外部信号的上升沿、下降沿或上升下降沿触发,完成捕获后相应的捕获 标志位CCIFGx置 1。当捕获事件发生时,硬件自动将计数器TAR的值拷贝到 TACCR寄存器中,同时中断标志CCIFGxS位。捕获模式主要用于测量脉冲周期、 频率、速度等。(3)输出模式:输出模式由 OUTMODx位来确定,如表5-2所示。模式0 用于电平输出,由OUT位来控制TAx(x=0、1、2)管脚的高低电平输出;模式 1和模式5为单脉冲输出,可以用来代替单稳态电路产生单脉冲
20、波形;模式 3和 模式7用来产生脉宽调制信号(PWM信号);模式4为可变频率或移相输出;模 式2和模式6为带死区的PWM模式,广泛用于逆变器、开关电源、变频调速和 斩波器等高效率的功率变换应用场合。图定时器A处于增计数模式定时器工作模式说明:TACCRG作为周期寄存器,TACC1 乍为(1)定时器A工作在增计数模式下,比较寄存器,不同的输出模式产生的输出波形如图所示。图定时器A处于连续模式(2)定时器A工作在连续模式下,TACCROTACCR作为比较寄存器,不同的输 出模式产生的输出波形如图所示。图定时器A处于增减计数模式(3)定时器A工作在增/减计数模式下,TACCRQ作为周期寄存器,TAC
21、C1和TACC2 作为比较寄存器,不同的输出模式产生的输出波形如图所示。定时器A的中断说明:CCRQ 另一CCR1 和定时器A有2个中断向量,一个单独分配给捕获比较寄存器 个作为共用的中断向量用于定时器溢出和其他的捕获比较寄存器(CCR2。CCRQ中断向量具有最高的优先级,CCRQ用于定义增计数和增减计数模式的 周期。CCRQ的中断标志TACCRQ_CCIF在执行中断服务程序时能自动复位。 CCR1 CCR2和定时器溢出共用另一个中断向量,属于多源中断,对应的中断标 志为TACCR1_CCIFGrACCR2_CCIF和TAIFG1在读中断向量字 TAIV后,自动 复位。如果不访问TAIV寄存器
22、,则不能自动复位,须用软件清除;如果相应的 中断允许位为零(不允许中断),则将不会产生中断请求,但中断标志仍存在,这时须用软件清除。实例定时器A定时1秒任务要求:利用定时器A产生设定的时间间隔中断,在中断服务程序中切换 LED灯的亮灭,亮1s灭1s。分析说明:定时器 A的时钟源可以选择为 SMCLK ACLK和外部引脚输入(TACLKINCLK,般选择为 SMCLK和 ACLKACLK为低频晶振 32768Hz及 1/24/8 分频,定时器A可以再对ACLK进行1/24/8分频,定时器A的时基最小为1/32768 秒(约30us),最大为64分频后即,因此定时器 A的定时范围为2s (对应时基
23、 30us)和128s(对应时基)。SMCLK可选择XT2和内部DCO作为时钟源,若SMCLK 选择XT2 (例如8MHz),则定时器A的时基最小为,最大为64分频后即8us, 因此定时器A的定时范围为(对应时基)和 524ms (对应时基8ms)。总而言之,要求定时器时间间隔小于几百毫秒时,定时器A的时钟源采用SMCLK SMCLK-般选取XT2作为时钟源;定时时间间隔几百毫秒至几十秒应采 用ACLK(或者适当分频)作为定时器 A的时钟源。1)硬件电路设计引脚接LED发光二极管,同时用虚拟示波器观察引脚电平变化。 低频晶振采 用32768Hz的晶振,获得稳定的 ACLK时钟源。硬件电路图如图
24、5-7所示,XT2 接8MHz晶振(XT2频率范围为400k16MHz),两个22pF匹配电容,供 MCLK SMCLK选用。一般LED发光二极管管压降,电流510mA,因此限流电阻取300 欧。D1LEDBLueR1U112C1XT2OUTP 1.0/TACLK/CAOUTP 4.0ZrB0P 1.1/TA0P 4.1ZrB1P 1.2/rA1P 4.2ZrB2P 1.3/rA2P 4.3ZrB3P 1.4/SMCLKP 4.4ZrB4P 1.5/rA0P 4.5ZrB5P 1.6/rA1P 4.6ZrB6P 1.7/rA2P4.7/rBCLKP 2.0/ACLK/CA21P5.0/UCB1
25、STE/UCA1CLKP 2.1/rAINCLK/CA3P 5.1/UCB1SIMO/UCB1SDAP 2.2/CAOUT/rA0/CA4P 5.2/UCB1SOMI/UCB1SCLP 2.3/CA0/rA11P5.3/UCB1CLK/UCA1STEP2.4/CA1/rA2P5.4/MCLKP 2.5/ROSC/CA5P 5.5/SMCLKP 2.6/ADC12CLK/CA6P 5.6/ACLKP2.7/rA0/CA7P5.7/rBOUTH/SVSOUTP3.0/UCB0STE/UCA0CLKP 6.0/A0P 3.1/UCB0SIMO/UCB0SDAP 6.1/A1P3.2/UCB0SOMI
26、/UCB0SCLP 6.2/A2P 3.3/UCB0CLK/UCA0STEP6.3/A3P 3.4/UCA0TXD/UCA0SIMOP 6.4/A4P3.5/UCA0RXD/UCA0SOMIP 6.5/A5P 3.6/UCA 1TXD/UCA1SIMOP6.6/A6P3.7/UCA1RXD/UCA1SOMIP6.7/A7/SVSINXT2OUTVEREF+XT2INVREF+RST/nmiVREF-/VEREF-TCKXINTDI/TCLKXOUTTDO/TDIAVCCTMSAVSS58 5r-55T565910 7? F 9 646236X1iDh32768Hz I图实例电路图2)程序设计M
27、SP430F249单片机的程序运行主时钟 MCLK= DCO=定时器A采用增计数 模式,定时器A的时钟源为ACLK=32768Hz时基单位为1/32768秒,设置CCR0 = 32768,则定时时间间隔1s。#in elude void main (void) WDTCTL = WDT PW + WDTHOLD;停止看门狗P1DIR |= 0x01;/ 输出CCTL0 = CCIE;/ CCR0 中断允许CCR0 = 32768;/定时时间间隔1sTACTL = TASSEL_1 + MC_1; /定时器A时钟源为ACLK增计数模式_BIS_SR(LPM0_bits + GIE); / LPM
28、0 模式,总中断允许/定时器AO中断服务程序#p ragma vector=TIMERA0_VECTOR _interrupt void Timer_A (void)/取反厂P1OUT 心 0x01;3)仿真与结果分析程序虽然很短,但是它包含了定时器的基本使用方法。 使用定时器前,先设 置好控制寄存器TACTL时钟源选择、计数模式选择、中断允许和定时时间间隔 CCR0的值。增计数模式,定时器A的计数值达到CCR0 TACCR0_CCIF中断标志 建立,CCR(中断为单源中断,CPU响应中断,进入定时器A0中断服务程序后自 动清除中断标志TACCR0_CCIFG在中断服务程序中,对取反,得到周期
29、 2s的信 号,其中高电平1s,低电平1s,如图所示。仿真时设置参数 MCLK=(Default, ACLK=32768H。卩“匸)“I.ctmicr好瓦4二 HD-=I :亠节吐MU1II0 141C-丄2s、1s 和,若设置定时图实例仿真结果图实例 定时器A产生4路周期信号任务要求:利用定时器 A产生4路周期信号,周期分别为4s、 四路周期信号分别从和 -的A0A3输出。分析说明:定时器A有3个捕获 比较寄存器CCRO CCR1和CCR2器A工作在连续模式,利用3个比较器可以获得3路不同的周期信号,再利用 定时器溢出中断可以再输出1路周期信号。因此,定时器A可以很方便的产生4路时间间隔不同
30、的周期信号。1)硬件电路设计硬件电路如图所示,用虚拟示波器观察 -四路引脚电平变化。P 1.1/TA0P 1.2/TA1P 4.1/rB1P4.2/rB2in:P 1.3/rA2P 1.4/SMCLKP 1.5/rA0 P1.6/rA1P 1.7/rA2P 4.3/rB3P 4.4/TB4P 4.5/rB5P 4.6/rB6P4.7/rBCLKP 5.0/UCB1STE/UCA1CLKP 5.1/UCB1SIMO/UCB1SDAC1XT2OUTP 2.0/ACLK/CA2P 2.1/rAINCLK/CA3P 2.2/CAOUT/rA0/CA4 P 5.2/UCB1SOMI/UCB1SCLP 2
31、.3/CA0/rA1P 5.3/UCB1CLK/UCA1STEP2.4/CA1/rA2P 5.4/MCLKP 2.5/ROSC/CA5P 5.5/SMCLKP 2.6/ADC12CLK/CA6P 5.6/ACLKP2.7/rA0/CA7P 5.7/rBOUTH/SVSOUTC2TF匚I魚X-P3.0/UCB0STE/UCA0CLKP3.1/UCB0SIMO/UCB0SDAP3.2/UCB0SOMI/UCB0SCLP 6.0/A0P6.1/A1P 6.2/A2XT2INP3.3/UCB0CLKUCA0STEP3.4/UCA0TXD/UCA0SIMOP3.5/UCA0RXD/UCA0SOMIP3.
32、6/UCA 1TXD/UCA1SIMOP3.7/UCA1RXD/UCA1SOMIP 6.3/A3P6.4/A4P 6.5/A5P6.6/A6P 6.7/A7/SVSINXT2OUT52555456XT2OUTXT2IN RST/NMITCK TDI/TCLKVEREF+VREF+ VREF-/VEREF-XINXOUTTDO/TDI TMSAVCCAVSS图实例电路图2)程序设计MSP430F249单片机的程序运行主时钟 MCLK= DCO=定时器A采用连续模 式,定时器A的时钟源为ACLK=32768Hz时基单位为1/32768秒,设置CCR0= 32768,则定时时间间隔1s (周期2s)
33、; CCR1 = 3276/2,则定时时间间隔(周期 1S); CCR2= 327688,则定时时间间隔(周期);定时器A溢出中断,定时时间 间隔2s (周期4s)。#in elude void main (void)WDTCTL = WDTPW + WDTHOLD; / 停止看门狗P1SEL |= 0x0E;P1DIR |= 0x0F;CCTL0 = OUTMOD_4 + CCIE;CCTL1 = OUTMOD_4 + CCIE;CCTL2 = OUTMOD_4 + CCIE;/ -功能选择/ 输出/ CCR0翻转,中断允许/ CCR1翻转,中断允许 CCR2翻转,中断允许TACTL = T
34、ASSEL_1 +MC_2 + TAIE; 定时器 A时钟源为 ACLK连续模式,中断允许 _BIS_SR(L PM 0_bits + GIE);#p ragma vector=TIMERAO_VECTOR_interrupt void Timer_A0 (void)CCR0 += 32768;#p ragma vector=TIMERA1_VECTOR_interrupt void Timer_A1(void)/ 定时器 A1 中断服务程序switch( TAIV )/ LPMO模式,总中断允许/定时器A0中断服务程序/周期2sIITAIV中断矢量case 2: CCR1 += 327682
35、; break;case 4: CCR2 += 327688; break;case 10: P10UT 人=0x01;break;/周期1s/周期/溢出中断,周期4s3)仿真与结果分析1路信号周期为4s,定时器A溢出时间间隔为2s,仿真结果见图所示,第在中断程序中对取反;第2路信号周期为2s,比较寄存器CCR0设置值为32768, 1秒钟对TA0()取反一次;第3路信号周期为1s,比较寄存器CCR1设置值为 327682,秒钟对TA1 ()取反一次;第4路信号周期为,比较寄存器 CCR2设置 值为327688,秒钟对TA2 ()取反一次。hJUiffW H 13711氏:KICH-1E B
36、*7?弋 hriijf J-iaiiuLJUlB厂 yGfi:I kJJ II dhW301 PAS DCI * *0iiiiii=Be 彌I图实例仿真结果图实例定时器A产生两路PWM信号任务要求:利用定时器A产生占空比75%和15%的两路PWM信号,周期均 为 20ms。分析说明:定时器A有多种信号输出模式,其中输出模式 3和模式7用来 产生脉宽调制信号(PWM信号),在定时器A的增计数模式,用CCR(控制PWM 信号的周期,CCR1 CCR2控制占空比,可以得到两路不同占空比的 PWM信号。1) 硬件电路设计硬件电路如图所示。U1-njL-LTL-lJ523-58sr-T554-56-P
37、1.0/rACLK/CAOUTP 4.0/rB0P 1.1/rA0P 4.1/rB1P 1.2/rA1P 4.2/rB2P 1.3/rA2P 4.3/rB3P 1.4/SMCLKP 4.4/TB4P 1.5/rA0P 4.5/rB5P 1.6/rA1P 4.6/rB6P 1.7/rA2P4.7/rBCLKP 2.0/ACLK/CA2P 5.0/UCB1STE/UCA1CLKP 2.1/rAINCLK/CA3P 5.1/UCB1SIMO/UCB1SDAP 2.2/CAOUT/rA0/CA4P 5.2/UCB1SOMI/UCB1SCLP 2.3/CA0/rA1P 5.3/UCB1CLK/UCA1S
38、TEP 2.4/CA1/rA2P5.4/MCLKP 2.5/ROSC/CA5P5.5/SMCLKP 2.6/ADC12CLK/CA6P5.6/ACLKP 2.7/rA0/CA7P5.7/rBOUTH/SVSOUTP 3.0/UCB0STE/UCA0CLKP 6.0/A0P 3.1/UCB0SIMO/UCB0SDAP 6.1/A1P 3.2/UCB0SOMI/UCB0SCLP 6.2/A2P 3.3/UCB0CLK/UCA0STEP 6.3/A3P3.4/UCA0TXD/UCA0SIMOP 6.4/A4P 3.5/UCA0RXD/UCA0SOMIP 6.5/A5P3.6/UCA1TXD/UCA1
39、SIMOP 6.6/A6P3.7/UCA1RXD/UCA1SOMIP 6.7/A7/SVSINXT2OUTVEREF+XT2INVREF+rst/nmiVREF-/VEREF-TCKXINTDI/TCLKXOUTTDO/TDIAVCCTMSAVSS4461011MSP430F24936375960=61962X132768Hz图实例电路图2)程序设计MSP430F249单片机的程序运行主时钟 MCLK= DCO= SMCLK = XT2=8MHz 定时器A时钟源为SMCLK的8分频(即1MHz),增计数模式。时基单位1us, CCR0 = 20000则定时时间间隔20ms (即PWM周期=20
40、ms)。两路PWM信号从 (TA1和(TA2输出,设置CCR1=20000*75%=15000则TA1的PWM信号占空比为 75%,设置 CCR2=20000*15%=3000 贝U TA2的 PWM 信号占空比为 15%。/ SMCLK = XT2/SMCLK 8 分频/和输出/ (TA1)和(TA2)输出/ PWM周期/ CCR1复位/置位/ CCR1 PWM 占空比 75%/ CCR2复位/置位/ CCR2 PWM 占空比 15%_1; /定时器A时钟源为SMCLK增计数模式/进入低功耗LPM0#in elude void mai n(void)WDTCTL = WDT PW + WDT
41、HOLD停止看门狗BCSCTL2 |= SELS;BCSCTL2=DIVS0+DIVS1;P1DIR |= 0x0C;P1SEL |= 0x0C;CCR0 = 20000;CCTL1 = OUTMOD_7;CCR1 = 15000;CCTL2 = OUTMOD_7;CCR2 = 3000;TACTL = TASSEL_2 + MC_BIS_SR(L PM 0_bits);3) 仿真与结果分析 仿真结果如图所示,第3路信号为TA1输出的PWM信号,周期为20ms,占空比75%;第4路信号为TA2输出的PWM信号,周期为20ms,占空比15%;图实例仿真结果图ili巴却2V I - mH I弘?k
42、伽I曲弧实例定时器A精确测量输入信号的周期在溢出中断中记录溢出发生次数,周期任务要求:利用定时器A精确测量某输入信号的周期,周期范围0999999us。 分析说明:利用定时器A的脉冲捕获功能可以精确地测量外部输入信号的脉 宽和周期。捕获模式测量输入信号的周期时,一般设置定时器A为连续模式,如 果选定的引脚上出现设定的跳变沿(上升沿或者下降沿),那么定时器A的计数 值被复制到TACCR中,并且中断标志TACCIFG置位。在捕获中断程序中读取捕 获值,相邻两次捕获值之差就是信号周期。由于事件(上升沿或者下降沿)发生 的随机性,注意在需要时使能溢出中断, =65536x溢出次数+两次捕获值之差。1)
43、硬件电路设计XT2接8MHz晶振(XT2频率范围为SMCLK选用。显示使用6位LED共阳极P5 口的输出位码。输入信号源采低频晶振采用 32768Hz的晶振,400k16MHz),两个22pF匹配电容,供模块,单片机P4 口输出每位数码管的段码, 用虚拟仪器中的信号发生器。硬件电路图如图所示。4+W *rts-SIGNAL GENERATORC1C2dPFX28MHzXT2INXT2OUTP 1.0/TACLK/CAOUTP 4.0/TB0P 1.1/rA0P 4.1ZrB1P 1.2/rA1P 4.2ZrB2P 1.3/rA2P 4.3ZrB3P 1.4/SMCLKP 4.4ZrB4P 1.
44、5/rA0P 4.5ZrB5P 1.6/rA1P 4.6ZrB6P 1.7/rA2P4.7/rBCLKP 2.0/ACLK/CA2P 5.0/UCB1STE/UCA1CLKP 2.1/rAINCLK/CA3P 5.1/UCB1SIMO/UCB1SDAP 2.2/CAOUT/rA0/CA4 P 5.2/UCB1SOMI/UCB1SCLP 2.3/CA0/rA1P 5.3/UCB1CLK/UCA1STEP 2.4/CA1ZrA2P5.4/MCLKP 2.5/ROSC/CA5P 5.5/SMCLKP 2.6/ADC12CLK/CA6P 5.6/ACLKP 2.7/rA0/CA7P 5.7/rBOUT
45、H/SVSOUTP 3.0/UCB0STE/UCA0CLKP6.0/A0P 3.1/UCB0SIMO/UCB0SDAP 6.1/A1P 3.2/UCB0SOMI/UCB0SCLP6.2/A2P 3.3/UCB0CLK/UCA0STEP 6.3/A3P3.4/UCA0TXD/UCA0SIMOP 6.4/A4P 3.5/UCA0RXD/UCA0SOMIP6.5/A5P3.6/UCA1TXD/UCA1SIMOP 6.6/A6P 3.7/UCA1RXD/UCA1SOMIP 6.7/A7/SVSINXT2OUTVEREF+XT2INVREF+RST/NMIVREF-/VEREF-TCKXINTDI/TC
46、LKXOUTTDO/TDIAVCCTMSAVSSF - 二二十一二斗石卫实例的硬件电路图2) 程序设计MSP430F249单片机的程序运行主时钟 MCLK= DCO= SMCLK = XT2=8MHz 定时器A时钟源为SMCLK的8分频(即1MHz),连续计数模式。定时器A使用捕获模式测量信号周期时,可以让主计数器TAR工作在连续计数模式。捕获模块设置 TAx(x=02)管脚上升沿触发,每次捕获事件发生后,在 捕获中断程序中读取捕获值,相邻两次捕获值之差就是信号周期。对于计数值溢出的情况,可以在溢出中断程序中记录溢出次数,扩展周期信号的测量范围。#in elude /测量次数#define N
47、UM 16un sig ned int n ew_ea p=0;un sig ned int old_ea p=0;/溢出次数/周期测量值char N1;long diffNUM;char in dex=0;/计算测量周期的平均值long data;char led = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xff;共阳极数码管char positio n =0x20,0x10,0x08,0x04,0x02,0x01;/位码char led_buf = 0,0,0,0,0,0; / 显示缓冲区/值送显示缓冲区函数void data_to_buf(l ong datal)char i;for (i=0;i6;i+)led_bufi = data1%10;/ 低位在前data仁data010;/动态扫描显示函数 void disp(void) char i; unsigned int k;for(i=0;i6;i+) P4OUT = ledled_bufi; P5OUT = positioni;/ 小数点/ 延时/ 关显示/if(i=3) /P4OUT &=0X7F; for ( k=0; k6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士培训心得体会模版
- 个人雇佣工资合同范例
- 住房和房东扣钱合同范例
- 医疗安全管理与医院文化融合
- 小学三年级语文上学期期末成绩分析自己总结模版
- 个人礼品合同范例
- 员工续签合同工作总结模版
- 健康数据助力医疗业务发展策略分析
- 区块链技术在全球供应链管理中的实际运用
- 工作总结演讲与辩论协会招新的工作总结模版
- Unit 5 Animal friends Integration(D) 课件 2024-2025学年译林版(2024)七年级英语下册
- 初中生物呼吸系统的组成 课件-2024-2025学年冀少版生物七年级下册
- 2025水产养殖承包合同范本
- 2024年广东省农业农村厅所属事业单位招聘考试真题
- JJF 2231-2025感应式磁传感器校准规范
- 云南省昆明地区2025届小升初模拟数学测试卷含解析
- 图书馆笔试题及答案
- 第3课 中华文明的起源(教学设计)七年级历史上册同步高效课堂(统编版2024)
- 贵州省贵阳市重点中学2024-2025学年高一年级下册开学考试语文试卷(含答案)
- 2025年高考数学压轴题分层练习:概率与统计(40题)
- 医院抹布拖把标识管理
评论
0/150
提交评论