×
嵌入式 > 嵌入式开发 > 详情

MSP430学习笔记(2)定时器A

发布时间:2020-08-31 发布时间:
|
3.定时器A:

所有MSP430系列的FLASH型单片机都含有定时器A(Timer_A),由一个16位定时器和多路比较/捕获通道组成。每个比较/捕获通道都是以16位定时器的定时功能为核心进行单独的控制。

1)定时器由以下部分组成:

a)计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4、8分频作为计数频率。

b)捕获/比较器:用于捕获时间发生的时间或产生时间间隔,每个捕获/比较的结构完全相同,输入输出都决定于各自所带的控制寄存器的控制字,捕获/比较器相互之间独立。

c)输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号并支持PWM。

2)Timer_A寄存器:

a)TACTL:控制寄存器:POR信号后全都自动复位,PUC信号后不受影响。

i.TASSEL1,TASSEL0:选择定时器输入分频器的时钟源,00为TACLK,特定的外部引脚的信号,01为ACLK,10为SMCLK,11为INCLK。

ii.ID1,ID0,输入分频选择,00不分频,01为2分频,10为4分频,11为8分频。(由SSEL1,SSEL0选择时钟源,然后再由ID0和ID1选择分频系数将输入信号分频,分频后的信号才用于计数器计数)。

iii.MC1,MC0:计数模式控制位:00为停止计数,01为增计数模式,10为连续计数模式,11为增减计数模式。

iv.TACLR:定时器清除位。POR或CLR置位时定时器和输入分频器复位。CLR由硬件自动复位,其读出时钟为0.

v.TAIE:定时器中断允许位,1时允许定时器溢出中断。

vi.TAIFG:定时器溢出标志位,增计数由CCR0到0时TAIFG置位,连续计数由0FFFFH计数到0时,TAIFG置位,增/减计数模式定时器由1减到0时TAIFG置位。

b)TAR:16位计数器,计数的主体,可读可写。(PA:当计数时钟不是MCLK时,在计数器停止计数时写,否则与CPU产生时间竞争,推荐先停止定时器,修改控制寄存器,再启动定时器工作)。

c)CCTLx:捕获/比较控制寄存器

i.CM1,CM0:选择捕获模式,00为禁止捕获模式,01为上升沿捕获,10为下降沿捕获,11为上升沿和下降沿都捕获。

ii.CCIS1,CCIS0:在捕获模式中用来定义提供捕获事件的输入源,00选择CCIxA,01选择CCIxB,10选择GND,11选择Vcc。

iii.SCS:选择捕获信号与定时时钟同步,异步关系,0异步捕获,1同步捕获。(异步捕获允许在请求时立即将CCIFG置位并捕获定时器的值,用于捕获信号周期远大于定时器周期的情况。实际常用同步捕获模式)。

iv.比较相等信号EQUx将选中的捕获/比较输入信号CCIx(CCIxA,CCIxB,Vcc,GND)进行锁存,可由SCCIx读出。

v.CAP:选择捕获模式还是比较模式,0为比较模式,1为捕获模式。(由比较模式改为捕获模式的顺序:修改控制寄存器,由比较模式切换到捕获模式,再进行捕获)。

vi.OUTMODx:选择输出模式。000为输出,001为置位,010位PWM翻转/复位,011为PWM置位/翻转,100为翻转,101为复位,110为PWM翻转/置位,111为PWM复位/置位。

vii.CCIEx捕获/比较模块中断允许位。0为禁止中断,1为允许中断。

viii.CCIx:捕获/比较模块的输入信号,捕获模式:由CCIS0和CCIS1选择的输入信号可通过该位读出。比较模式:CCIx复位。

ix.OUT:输出信号,0输出低电平,1输出高电平。

x.COV:捕获溢出标志,0为没有捕获溢出,1为发生捕获溢出。当选择比较模式时,没有使COV置位的捕获事件。当选择捕获模式时,如果捕获寄存器的值被读出前再次发生捕获事件,则COV置位。程序可检测COV来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出中断标志位复位,需要软件复位。

xi.CCIFGx:捕获比较中断标志。捕获模式时寄存器CCRx捕获定时器TAR值时置位。比较模式定时器TAR值等于寄存器CCRx值时置位。

xii.CCRx:捕获/比较寄存器:在捕获/比较模块中,可读可写。在捕获方式,当满足捕获条件,硬件自动将计数器TAR数据写入该寄存器。如果测量某窄脉冲(高电平)的脉冲长度,可定义上升沿和下降沿都捕获。在上升沿时捕获一个定时器数据,下降沿再捕获一个。其中CCR0经常用作周期寄存器,其他CCRx相同。

xiii.TAIV:中断向量寄存器。Timer_A中断可由计数器溢出引起,也可以来自捕获/比较寄存器。每个捕获/比较模块可独立编程,由捕获/比较外部信号以产生中断。外部信号可以是上升沿,可以是下降沿,可以两者均有。

1.Timer_A模块使用两个中断向量,一个单独分配给捕获/比较寄存器CCR0,另一个作为公用中断向量用于定时器和其他捕获/比较寄存器。

2.捕获/比较寄存器CCR0中断向量具有最高的优先级,因为其能用于定义增计数和增/减计数模式的周期,需要最快速的服务。CCIFG0在中断时能自动复位。

3.CCR1~CCRx和定时器共用另一个中断向量,属于多源中断,对应的中断标志位CCIFG1~CCIFGx和TAIFG1在读中断向量字TAIV后自动复位。若不访问TAIV寄存器,则需软件清除。

4.如果有Timer_A中断标志位,则TAIV为相应的数据。该数据与PC(程序计数器)相加可使系统自动进入响应的中断服务程序。

3)定时器工作原理:

a)停止模式:用于定时器暂停,不发生复位,所有寄存器现在的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。也可通过CLR来清除定时器的方向记忆特性。

b)增计数模式:捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器,CCR0为16位寄存器,适用于定时周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0值相等(或定时器值大于CCR0时),定时器复位并从0开始计数。

i.当定时器值等于CCR0时,设置标志位CCIFG0为1,当定时器从CCR0计数到0时,设置标志位TAIFG为1。

ii.计数过程中还可以通过改变CCR0的值来重置计数周期。当新周期大于旧周期时,定时器会直接增计数到新周期。

c)连续计数模式:在需要65536个时钟周期的定时器应用场合常用连续计数模式。定时器从当前值计数到0FFFFH后又从0开始计数。当定时器从0FFFFH到0时设置标志位TAIFG。

d)增/减计数模式:需要对称波形的情况经常可以使用增/减计数模式,该模式下,定时器先计数到CCR0的值,然后反向减计数到0。计数周期仍由CCR0定义,它是CCR0的2倍。

4)捕获/比较模块:Timer_A捕获/比较的每个模块都可用于捕获事件发生的时间或产生定时间隔。当捕获时间发生或者定时时间到达都将引发中断。捕获/比较寄存器与定时器总线连接,可在满足捕获条件时将TAR的值写入捕获寄存器;可在TAR的值与比较器值相等时设置标志位。通过CCTLx中的CAPx选择模式,该模块可用于捕获模式,也可用于比较模式。用CCISx1和CCISx2选择捕获的输入信号源,输入信号可以是来自外部引脚的信号,也可以是来自内部的信号。

a)捕获模式:这时如果在选定的引脚上发生设定的脉冲触发沿,则TAR的值写入CCRx。捕获完成后CCIFGx被置位,如果GIE和CCIEx允许,则产生中断。PA:捕获信号与定时器时钟同步,将捕获/比较中断标志置位,并将定时器数值存入捕获寄存器。他们同步特性可避免定时器和捕获信号的时间竞争。非同步信号支持低速定时器的时间应用。捕获时间与定时器时钟可能产生时间竞争,因而导致捕获数据无效。

b)比较方式主要用于软件或者应用硬件产生定时,还可以为D/A转换、马达控制产生PWM信号。独立的输出模块被分配给各个捕获/比较寄存器的每一个,输出模块可以独立运行于比较功能,或以各种方式触发。当TAR的值大于或等于CCR0的值时,EQU0=1;当TAR的值等于相应的CCR1或CCR2时,EQU1=1或EQU2=1。

5)输出单元:每个捕获/比较模块都包含一个输出单元,用于产生输出信号。每个输出单元有8种工作模式,由OUTMOD0~3决定。

6)Timer_A实现PWM:

如果Timer_A定时器的计数器工作在增计数模式,输出采用模式7(复位/置位模式),则可利用寄存器CCR0控制PWM波形的周期,用某个寄存器CCRx来控制占空比。这样Timer_A就能产生任意占空比的PWM波。

改变占空比的方法是:保持CCR0的值(周期不变),改变CCRx的值(占空比变)



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
现场总线系统的功能安全评价