增强型运动控制定时器eTimer1.1概述一个eTimer模块提供:•6个相同的计数器/计时器通道•一个监视计时器功能(可能在每个eTimer模块实例中都不可用)每个16位的计数器/定时器通道包含一个预分频器、一个计数器、一个负载寄存器、一个存储寄存器、两个队列捕获寄存器、两个比较寄存器、两个比较预加载寄存器和四个控制寄存器。当计数器的终端值到达时,Load寄存器为计数器提供初始值。对于真正的模块计数,计数器也可以通过CMPLD1或CMPLD2寄存器进行初始化。当其他计数器被读取时,持有寄存器将捕获计数器的值。该特性支持对级联计数器的读取。捕获寄存器允许外部信号对计数器的当前值进行“快照”。COMP1和COMP2寄存器提供了计数器被比较的值。如果发生匹配,则可以设置OFLAG信号,清除或切换。在匹配时,如果启用了一个中断,并且将新的比较值加载到从CMPLD1和CMPLD2中获得的COMP1或COMP2寄存器中。预分频器提供了不同的时间基,可以用来计时。计数器提供了计算内部或外部事件的能力。在eTimer模块中,输入管脚脚是可共享的。1.2特性eTimer模块设计包括这些独特的功能:••16位计数器/定时器:6路。•向上/向下计数。•可级联的计数器。•增强可编程的上/下模计数。•最大的计数率等于外部时钟的外设时钟/2。•最大的计数率等于内部时钟的外设时钟。•一次或多次计数。•预加载计数器。•比较寄存器是可预加载的。•计数器可以共享可用的输入插脚。•每个计数器的单独预分频器。•每个计数器都有捕获和比较能力。•连续和单次捕捉,以提高速度测量。•DMA支持捕获寄存器和比较寄存器。•32位的看门狗监视功能,可以检测停滞的方数计数(可能在每个eTimer模块实例中都不能使用)。•安全关键应用的OFLAG比较。•在调试模式和停止模式下可编程操作。•可编程输入滤波器。•计数开始可以在计数器之间同步。1.3模块框图eTimer块图显示在下图中。1.4通道框图2.0外部信号描述每个eTimer模块都有6个外部信号,可以用作输入或输出。每个模块的辅助输入的数量是依赖于设备的。有关更多信息,请参阅配置部分。eTimer还与外围总线接口。2.1TIO[n:0]-定时器输入/输出这些引脚可以独立配置为定时器输入源或输出标志。在图39-2中,TIO信号被显示为主要输入,以及来自OFLAG控制块的输出。2.2TAI[n:0]-Timer辅助输入这些针脚作为计时器通道的备选输入选项。TAI信号被显示在AuxInp1..n。3.0内存映射和寄存器定义寄存器的地址是一个基本地址和一个地址偏移量的总和。基本地址是在芯片级定义的,并且地址偏移是在模块级别定义的。每个计时器通道都有一组寄存器,一个用于监视计时器的设置,以及一组配置寄存器。某些寄存器被标记为不能访问字节。但是,如果一个字节访问发生,就不会产生错误。监视计时器寄存器的基本地址等于eTimer的基本地址加上100h的偏移量。4.0功能描述4.1一般的每个通道都有两种基本的操作模式:它可以计算内部或外部事件,也可以在外部输入信号的情况下计算内部时钟源,从而确定外部输入信号的宽度。•计数器可以计算所选输入管脚的上升、下降或两边的边数。•计数器可以解码并计算经过编码的输入信号。•计数器可以在“以方向计数”的形式中使用双输入来计数和下降。•计数器的终端计数值(模块化)是可编程的。•在达到终端计数后,被加载到计数器的值是可编程的。•计数器可以重复计数,也可以在完成一个计数循环后停止。•计数器可以被编程为一个程序值,然后立即重新初始化,或者它可以通过比较值进行计数,直到计数“滚”到0。•每个计数器/计时器的外部输入都可以在模块内的每个通道中共享。外部输入可以被用作:•计数命令•计时器命令•它们可以触发当前的计数器值,以“捕获”•它们可以用来生成中断请求外部输入的极性是可选择的。每个通道的主要输出是输出信号OFLAG。OFLAG输出信号可以是:•当计数器达到程序值时,设置、清除或切换。•OFLAG输出信号可以输出到外部的pin,而不是将这个大头针作为一个计时器输入。•OFLAG输出信号允许每个计数器生成方波、PWM或脉冲流输出。•信号输出信号的极性是可编程的。任何通道都可以被指定为“主人”。主的比较信号可以被广播到模块内的其他频道。当主通道的比较事件发生时,可以将其他通道配置为重新初始化它们的计数器和/或将它们的OFLAG输出信号强制到预先确定的值。4.2计数模式选择的外部信号以eTimer的基本时钟频率进行采样,然后通过一个转换检测器运行。当使用外部信号时,最大计数率是eTimer的基本时钟频率的一半。内部时钟源可以用来在eTimer的基本时钟频率上时钟计数器。如果计数器被编程为一个特定的值,然后停止,当计数终止时,在CTRL1寄存器中的CNTMODE字段被清除。4.2.1停止准备模式如果CNTMODE字段设置为“000”,则计数器是无效的。没有计数会发生。Stop模式还将禁用所选输入pin上的输入转换所导致的中断。4.2.2计数模式如果CNTMODE字段设置为“001”,计数器将计数所选时钟源的上升边缘。这种模式对于产生周期性中断的时间是很有用的,或者在传送带通过传感器的传送带上计算诸如“小部件”之类的外部事件。如果选定的输入通过设置PIPS位来反转,那么选中的外部输入信号的负边缘就会被计算在内。请通过变频VARIABLE-FREQUENCYPWMMode模式查看CASCADE-COUNTMode计数模式,以获得该操作模式的附加功能。4.2.3EDGE-COUNT模式如果将CNTMODE字段设置为'010',计数器将计算选中的外部时钟源的两条边。这种模式对于计数外部环境中的变化非常有用,比如一个简单的编码器。4.2.4GATED-COUNT模式如果将CNTMODE字段设置为“011”,则计数器将计数,而所选的辅助输入信号较高。此模式用于时间外部事件的持续时间。如果选择的输入通过设置SIPS位来反转,那么计数器就会计数,而选择的辅助输入是低的。4.2.5正交QUADRATURE-COUNT模式如果将CNTMODE字段设置为100,则计数器将对主要的和次要的外部输入进行解码,将其作为正交编码信号进行解码。正交信号通常是由旋转或线性传感器产生的,用来监测电机轴或机械设备的运动。正交信号是在相位上90度的方波。对正交信号的解码提供了计数和方向信息。下图显示了一个时间图,说明了一个正交增量位置编码器的基本操作。4.2.6SIGNED-COUNT模式如果CNTMODE字段被设置为'101',计数器计数主时钟源,而所选的辅助源提供选择的计数方向(向上/向下)。4.2.7TRIGGERED-COUNT模式如果将CNTMODE字段设置为“110”,则计数器将开始计算主时钟源,在出现正输入后(负输入如果SIPS=1),则将开始计算主时钟源。计数将一直持续到一个比较事件发生或另一个正输入转换被检测到。后续的辅助输入转换将继续重新启动并停止计数,直到发生比较事件。4.2.8一次性模式如果CNTMODE字段设置为“110”,并且计数器被设置为在比较事件(LENGTH=1)中重新初始化,并且OFLAGOUTMODE设置为“0101”(在init中清除,设置比较),计数器在“单次模式”下工作。外部事件导致计数器计数,当到达终端计数时,输出被断言。这种“延迟”输出可以用来提供定时延迟。4.2.9CASCADE-COUNT模式如果将CNTMODE字段设置为“111”,则计数器的输入连接到另一个选定计数器的输出。计数器将随着在选择的源计数器中发生的事件而计数和下降。这种“级联”或“菊花链”模式使多个计数器被级联,以产生较长的计数器长度。当在级联模式下运行时,在模块之间使用一种特殊的高速信号路径,而不是OFLAG输出信号。如果选择的源计数器正在向上计数,并且它经历一个比较事件,计数器将会增加。如果选择的源计数器正在向下计数,并且它经历一个比较事件,计数器将会被减小。两个计数器可能被级联以创建一个32位宽的同步计数器。当在计数器模块中读取任何计数器时,模块内的所有计数器的值都在各自的持有寄存器中被捕获。这个操作支持读取一个级联的计数器链。首先读取一个级联的计数器链的任何计数器,然后读取链中的其他计数器的保存寄存器。级联计数器模式是同步的。4.2.10脉冲输出模式如果计数器设置CNTMODE=001,和OFLAGOUTMODE设置为“1111”(封闭的时钟输出),和ONCE位被设置,然后计数器将输出被选时钟相同频率的一个脉冲流的,输出脉冲的数量等于比较值减去初始化值。这种模式对驱动步进电机系统非常有用。4.2.11固定频率脉宽调制方式如果计数器设置CNTMODE=001,数通过翻转(LENGTH=0),连续计数(ONCE=0)和OFLAGOUTMODE是‘0111’然后计数器的输出产生一个脉冲宽度调制(PWM)信号频率等于计数时钟频率除以65536和脉宽占空比等于比较值除以65536。这种操作方式通常用于驱动PWM放大器,用于驱动电机和逆变器。4.2.12变频PWM模式如果计数器设置CNTMODE=001,数到比较(LENGTH=1),连续计数(ONCE=0)和OFLAGOUTMMODE是‘0100’(OFLAG和交替切换比较寄存器),那么计数器的输出产生一个脉冲宽度调制(PWM)信号的频率和脉冲宽度是由可编程的COMP1文件和COMP2寄存器值决定的,并输入时钟频率。这种PWM生成方法的优点是允许几乎任何期望的PWM频率和/或恒定的周期。这种操作方式通常用于驱动PWM放大器,用于驱动电机和逆变器。CMPLD1和CMPLD2寄存器对于这种模式特别有用,因为它们编程时间在PWM当前周期正在进行的时候计算下一个PWM循环的值。4.2.13比较寄存器的使用情况双比较寄存器(COMP1和COMP2)提供了双向的模块化计数能力。应该将COMP1寄存器设置为期望的最大count值或FFFFh,以便在滚动之前显示最大的无符号值,而COMP2寄存器应该被设置为最小的count值或0000h,以表示在滚动之前的最小无符号值。如果输出模式设置为0100,则OFLAG将在使用交替比较寄存器时切换。在这个可变频率PWM模式下,COMP2值定义了所需的脉冲宽度,而COMP1寄存器定义了关闭时间。当OFLAG=0时使用COMP1,当OFLAG=1时使用COMP2。可以使用使用CTRL2[FORCE]andCTRL2[VAL]来强制使用OFLAG。当计数器活跃时,在改变COMP1和COMP2时谨慎使用。如果计数器已经传递了新的值,它将被计数为FFFFh或0000h,翻转,然后开始计算新值。该检查是:CNTR=COMPx,而不是CNTRCOMP1或CNTR小于COMP2。使用CMPLD1和CMPLD2寄存器来预加载比较值将有助于最小化这个问题。4.2.14比较负载寄存器的使用CMPLD1、CMPLD2和CCCTRL寄存器提供了高度的灵活性,可以在不同的比较事件上装载比较寄存器和用户定义的值。为了在使用这些寄存器时确保正确的功能,我们强烈建议使用本节中描述的以下方法。比较负载特性的目的是允许比较寄存器的更快更新。可以使用中断来更新一个比较寄存器。但是,由于中断事件发生和中断服务之间的延迟,所以计数器可能已经通过中断服务例程更新比较寄存器的时间来计算新的比较值。然后计数器会继续计数,直到它滚动到新的比较值。为了解决这个问题,比较寄存器在硬件上更新,就像计数器寄存器被重新初始化到存储在加载寄存器中的值一样。比较load特性允许用户计算新的比较值,并将它们存储到比较器负载寄存器中。当比较事件发生时,比较器负载寄存器中的新比较值被写入比较寄存器中,从而消除了软件的使用。比较负载特性的目的是在变频PWM模式下使用。COMP1寄存器确定了OFLAG的逻辑低部分的脉冲宽度,并确定了OFLAG的逻辑高部分的脉冲宽度。波形的周期由COMP1和COMP2值和主时钟源的频率决定。参见图39-8。