微控设计网版本:1.4日期:2007.4.原文:TIMSP430x2xxfamily.pdf翻译:李璘中国计量学院编辑:DC微控技术论坛版主注:以下文章是翻译TIMSP430x2xxfamily.pdf文件中的部分内容。由于我们翻译水平有限,有整理过程中难免有所不足或错误;所以以下内容只供参考.一切以原文为准。详情请密切留意微控技术论坛。微控设计网(Timer_B,以后简写为TB)是一个16位的定时/计数器,并复合了捕获/比较寄存器。Timer_B3(拥有3个捕获比较器)只存在于MSP430x2xx中。章节9.1Timer_B介绍..........................................9-29.2Timer_B操作方法............................................9-49.3Timer_B寄存器...........................................9-199.1Timer_B介绍TB是一个16位的定时/计数器,拥有3个或7个捕获/比较寄存器。TB可以支持捕获/比较功能、PWM输出和定时器功能。TB还有扩展中断的功能,中断可以由定时器溢出产生或捕获比较寄存器产生。TB的特性如下:l4种操作模式的异步16位定时/计数器l可选择配置的时钟源l3个或7个可配置的捕获/比较器l可配置的PWM输出l加载时同步的双缓冲比较锁存l对所有TB中断快速响应的中断向量寄存器9.1.1和定时器A的相同点和不同点定时器B和定时器A的不同点如下:l定时器B的长度是可编程的,可编程为8,10,12,16位l定时器BTBCCRx寄存器是双缓冲的,并可以编组l所有定时器B的输出可以为高阻抗状态lSCCI位功能在定时器B中不存在TB的结构图见图9−1.图9−1.TB结构图微控设计网模块由用户软件来配置,TB的配置将在下面的章节讨论。9.2.116位定时/计数器微控设计网位定时/计数器寄存器TBR,随着时钟信号的每个上升沿增/减(这由操作模式决定)。TBR可以被软件读写。另外,定时器在溢出时可以产生中断。TBR可以由TBCLR位清除,如果TB处于up/down模式,TBCLR置位也会清除时钟分频器和计数方向。注意:对TB寄存器的修改建议在进行修改定时器的操作(对中断允许、中断标志和TBCLR的操作除外)时,先停止定时器,以避免产生未知的误操作。当定时器时钟和CPU时钟不同步时,对TBR的读会由于定时器的运行而导致所读的结果是不可预料的。因此,当定时器运行时,需要多读几次,通过软件多数表决的方式来确定正确的读数。对TBR的写操作是立即生效的。TBR的长度定时器B可以通过CNTLx位将它配置为8,10,12或16位定时器。最大的计数数值TBRmax,可以相应为0FFh,03FFh,0FFFh,和0FFFFh。在8-,10-,和12-位模式下,对TBR写数据数据时,数据的高4位必须为0。时钟源的选择和分频定时器的时钟源可以是内部时钟源ACLK,SMCLK,或外部源TBCLK和INCLK。时钟源由TBSSEL位来选择,所选择的时钟可以通过IDx位进行2、4或8分频,当TBCLR置位时,分频器复位。9.2.2启动定时器定时器可以通过以下2种方式启动或重新启动:l当定时器计数到MCX0并且时钟源处于活动状态时l当定时器模式为up或up/down模式时(即单调增和增减模式),定时器可以通过写0到TBCL0来停止计数。定时器可以通过写一个非0的数值来重新开始计数。在这种情况下,定时器从0开始增计数。9.2.3定时器模式控制定时器有4种操作模式,见表9-1,他们分别是停止、单调增、连续和增减模式。操作模式由MCx位来选择。表9-1定时器模式MCx模式说明00停止模式定时器暂停01单调增模式定时器循环地从0增到TBCL0的值10连续模式定时器循环地从0连续增加到0FFFFH11增减模式定时器循环地从0增到TBCL0的值再连续减至0(1)单调增模式微控设计网(max)的情况。定时器重复增计数值寄存器TBCL0的值,而TBCL0的值取决于定时周期,如图9-2,定时器计数周期为TBCL0+1。当定时器的值等于TBCL0时,定时器就回到0重新计数。如果当定时器的值大于TBCL0,而此时选择单调增模式,定时器立即从0重新开始计数图9−2.单调增模式当定时器计数到TBCL0的值时,中断标志TBCCR0CCIFG位置位。当定时器由TBCL0返回0时,TBIFG中断标志置位。图9−3说明了标志置位循环图9−3.单调增模式标志位的变化修改周期寄存器TBCL0在定时器在运行时修改TBCL0(并且TBCL0加载模式为立即模式),如果新的周期值大于或等于旧的周期值,或大于当前的定时器计数值,那么定时器立刻开始执行新的周期计数;如果新周期小于当前的计数值,那么定时器回到0。但是,在回到0之前会多一个额外的计数。连续模式在连续模式中,定时器重复计数到TBR(max),然后重新从0开始增计数,如图9-4。捕获比较寄存器TBCL0以及其他捕获比较器工作方式一样。图9−4.连续模式微控设计网(max)到0时,TBIFG中断标志置位。图9−5表示了标志位的设置图9−5.连续模式标志位的设置连续模式的使用连续模式可以用于产生统一的时间间隔和输出频率。当每个时间间隔完成时就产生一个中断。下一个时间间隔的值在进入中断服务子程序时写入TBCLx。图9-6显示了2个独立的时间间隔t0和t1写入捕获比较寄存器。在该应用中,时间间隔由硬件控制,与中断响应没有冲突。如果想产生多于3个或7个的时间间隔可以使用捕获比较寄存器。图9−6.连续模式时间间隔时间间隔可以由其他模式产生,TBCL0也可以作为周期寄存器使用。如果旧的TBCLx的数据之和与新的相比,要比TBCL0大,那么操作就会复杂得多。当旧的TBCLx的值加上tx比TBCL0的值大,那么旧TBCL0的值必须被减掉以获得正确的时间间隔。微控设计网且需要产生对称的脉冲时使用。定时器增计数到TBCL0再从TBCL0减计数到0,如图9-7,周期是TBCL0值的2倍。注意:TBCL0TBRmax的情况如果TBCL0TBRmax,那么计数方式就和连续模式一样,不会从TBRmax减到0。图9−7.增减模式该模式下,计数方向是固定的,即让定时器停止后再重新启动定时器,它就会沿着停止时的计数方向和数值开始计数。如果要从0开始,就需要将TBCLR置位来清除方向。TBCLR位也会清除TBR的值和定时器的时钟分频。在增减模式中,TBCCR0CCIFG中断标志和TBIFG中断标志在一个周期中只置位一次,它们相隔1/2个定时器周期。当定时器计数到由TBCL0−1变到TBCL0时,CCIFG置位;而定时器完成减计数从0001h到0000h时,TBIFG置位。图9-8表示了标志位的置位状况。图9−8.增减模式下的标志改变TBCL0周期寄存器如果定时器正处于减计数时改变TBCL0的值(TBCL0的加载模式为立即模式),定时器会继续减到0,新的周期在减到0后开始;如果正处于增计数状态,并且新的周期已经锁存到TBCL0,如果新周期大于等于原来的周期,或比当前计数值要大,定时器会增计数到新的周期再减计数;如果正处于增计数状态,新周期小于原来的周期,定时器立刻开始减计数,但是,在定时器开始减计数之前会多计一个数。微控设计网增减模式的使用增减模式支持在输出信号之间有死区时间的应用(参阅TB输出章节)。例如,避免出现过载情况,2个输出驱动一个H桥不能同时为高。在图9-9的例中,tdead为tdead=ttimer×(TBCL1−TBCL3)tdead——同时输出时必须没有反应的时间段ttimer——定时器时钟周期TBCLx——比较锁存器x的内容可以同时加载成组的比较锁存来保证死区时间图9−9.增减模式的输出9.2.4捕获比较模块定时器B中有3个或7个相同的捕获比较模块TBCCRx,其中的任何一个模块可以用于定时器数据的捕获或产生时间间隔。捕获模式当CAP=1时,选择捕获模式。捕获模式用于记录时间事件,比如速度估计或时间测量。捕获输入CCIxA和CCIxB连接外部的引脚或内部的信号,这通过CCISx位来选择。CMx位选择捕获输入信号触发沿:上升沿、下降沿或2者都捕获。捕获事件发生于所选择的输入信号的触发沿。如果发生了捕获事件:微控设计网置位在任何时刻,可以通过CCI位读取输入信号的电平。MSP430x2xx系列的器件允许CCIxA和CCIxB连接于不同的信号(请参考器件手册)。捕获信号可能会和定时器时钟不同步,并导致竞争条件的发生。将SCS位置位可以在下个定时器时钟使捕获同步,一般建议将之置位,见图例9-10图9−10.捕获信号(SCS=1)如果第二次捕获在第一次捕获的值被读取之前发生,捕获比较寄存器就会产生一个溢出逻辑,COV位在此时置位,如图9-11,COV位必须软件清除。图9−11.捕获循环微控设计网通过软件初始化捕获捕获可以由软件初始化。CMx位可以配置捕获的触发沿。CCIS1和CCIS0位可以捕获电压在VCC和GND之间的信号,初始化捕获器举例MOV#CBP+SCS+CCIS1+CM_3,&TBCCTLx;配置TBCCTLxXOR#CCIS0,&TBCCTLx;TBCCTLx=TBR比较模式比较模式通过将CBP=0来进入。比较模式用于选择PWM输出信号或在特定的时间间隔中断。当TBR计数到TBCLx的值时:l中断标志CCIFG=1;l内部信号EQUx=1;lEQUx根据输出模式来影响输出信号比较锁存TBCLx微控设计网