x9第9章 S12增强型定时器模块_第1页
x9第9章 S12增强型定时器模块_第2页
x9第9章 S12增强型定时器模块_第3页
x9第9章 S12增强型定时器模块_第4页
x9第9章 S12增强型定时器模块_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、基于HCS12的嵌入式系统设计,9.1 ECT模块概述 9.2 ECT模块的自由运行计数器及定时器基本寄存器 9.3 ECT模块的输入捕捉功能及寄存器设置 9.4 ECT模块的输出比较功能及寄存器设置 9.5 ECT模块的脉冲累加器功能及寄存器设置 9.6 ECT模块的模数递减计数器功能及寄存器设置 9.7 ECT模块基础应用实例,第9章 S12增强型定时器模块,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(1),嵌入式系统中定时器/计数器的作用: 产生波形输出 测量输入波形 统计脉冲或边沿个数 作为定时基准,9.1.1 ECT的基本组成与工作原理,ECT组成: 1个16位自由运行计

2、数器 8个16位输入捕捉/输出比较通道 2个16位脉冲累加器 1个16位模数递减计数器MDC 特点: 4个输入捕捉通道具有16位缓冲(保持)寄存器。 4个输入捕捉通道具有可选择延迟时间的延迟计数器。 4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器。 具有4位预分频器的模数递减计数器。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(2),ECT的运行模式: 停止(STOP)模式 冻结(Freeze)模式 等待(Wait)模式 正常(Normal)模式,图9.1 ECT模块框图,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(3),自由运行计数器: 16位自由运行计数器

3、也称为自由运行主定时器,是ECT的核心。 系统复位时: 自由运行计数器为$0000。 模块运行时: 自由运行计数器从$0000$FFFF循环递增计数。 溢出复零时: 置位中断标志。 时钟源TIMCLK: PCLK,PACLK,PACLK/256,PACLK/65536。 预分频器时钟PCLK: 由总线时钟经过一个7位的预分频器得到。 预分频系数: 8种。,1. 输入捕捉 输入捕捉(Input Capture,IC):输入引脚上的跳变沿(上升沿或下降沿)触发输入捕捉,将当前自由运行计数器中的计数值复制到通道寄存器中,并置位中断标志,如果允许中断,则产生一次输入捕捉中断。 带保持寄存器的IC通道可

4、以在不产生中断的条件下,连续记录两次自由运行计数器的值。,9.2 输入捕捉模块框图,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(4),2. 输出比较 输出比较(Output Compare,OC):根据需要设置输出比较寄存器的值,自由运行计数器的值与输出比较寄存器的值每隔4个总线周期比较一次,当两者相等时,会在规定的通道引脚上输出预定的电平。如果允许中断,会产生一次输出比较中断。,9.3 输出比较模块框图,3. 脉冲累加器 脉冲累加器(Pulse accumulator,PA):脉冲计数器,可以统计相应管脚上的脉冲个数或在管脚上有效电平期间对内部时钟进行计数。ECT内有4个8位脉冲

5、累加器,与4个带缓冲的通道相联,可以级联形成2个16位的脉冲累加器。每个脉冲累加器有一个缓冲器(保持寄存器),可以在外部引脚出现预定动作时,保存其累加值。 计数方式: 事件计数方式计数脉冲直接来自引脚逻辑,脉冲累加器相当于计数器,对有效边沿计数,有效边沿可设定为上升沿或下降沿。输入引脚上每产生一个有效边沿跳变,脉冲累加计数器的值加1。当脉冲累加器溢出时,将置位中断标志。如果允许中断,则产生一次溢出中断。 门控时间累加方式脉冲累加器相当于可控计数器。门控信号来自引脚逻辑,时钟信号来自内部时钟PACLK(=ECLK/64)。门控信号可设定为高电平有效或低电平有效,在有效电平期间,脉冲累加器对ECL

6、K/64时钟信号计数。有效电平结束时的跳变沿将停止计数,并置位中断标志。如果允许中断,则产生一次硬件中断。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(5),4. 模数递减计数器 16位模数递减计数器(Modulus Down Counter,MDC):可以作为一个时基定时产生中断;也可以用来产生控制信号,将输入捕捉寄存器或脉冲累加器的值锁存到各自的保持寄存器中。 MDC时钟源总线时钟经过4位预分频器提供,有4个分频系数。 MDC的常数(加载)寄存器定时常数可自动重装载,可以根据定时的需要,向加载寄存器中赋初值。但MDC的常数寄存器与其计数寄存器MCCNT使用相同的地址,加载时通过

7、特殊的时序实现。 复位后,MCCNT=$FFFF。MDC启动后,MCCNT从当前值进行递减计数,当计数值减到0时,置位中断标志,如果允许中断,则向CPU发出中断请求。 计数方式: 单次计数方式当计数值减到$0000时,MDC便停止计数。 循环(连续)计数方式当计数值减到$0000时,自动加载定时常数,并继续递减计数。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(6),9.1.2 模块内存映射 ECT模块的寄存器分为3类:控制寄存器、数据寄存器和状态寄存器。 控制寄存器 定时器系统控制寄存器TSCR1、TSCR2 定时器控制寄存器TCTL1TCTL4 定时器IC/OC选择寄存器 TI

8、OS 输入控制覆盖寄存器 ICOVW 延迟计数器控制寄存器 DLYCT 定时器中断允许寄存器 TIE 输入控制系统控制寄存器 ICSYS 定时器强制输出比较寄存器 CFORC 输出比较7屏蔽寄存器 OC7M 定时器溢出触发寄存器1 TTOV 16位脉冲累加器A控制寄存器 PACTL 16位脉冲累加器B控制寄存器 PBCTL 模数递减计数器控制寄存器MCCTL 输入控制脉冲累加器寄存器 ICPAR,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(7), 数据寄存器 定时器计数寄存器 TCNT 定时器IC/OC寄存器 TC0TC7 输入捕捉保持寄存器TC0HTC3H 输出比较7数据寄存器

9、OC7D 脉冲累加器计数寄存器 PACN0PACN3 8位脉冲累加器保持寄存器PA0HPA3H 模数递减计数器计数寄存器 MCCNT 状态寄存器 主定时器中断标志寄存器TFLG1、TFLG2 脉冲累加器A标志寄存器PAFLG 脉冲累加器B标志寄存器 PBFLG 模数递减计数器标志寄存器 MCFLG 9.1.3 ECT模块的中断系统 ECT模块中断源: 8个定时器通道中断 1个模数递减计数器向下溢出中断 1个脉冲累加器A输入中断 1个脉冲累加器A溢出中断 1个脉冲累加器B溢出中断,基于HCS12的嵌入式系统设计,9.1 ECT模块概述(8),表9.5 ECT模块中断描述,表9.5列出了MC9S1

10、2DG128定时器模块的中断源名称、所对应的中断标志寄存器中的中断标志、中断矢量地址、中断屏蔽寄存器及其相应的控制位名称、默认中断优先级次序(按从上到下排列优先级为从高到低)和写入最高中断优先级寄存器HPRIO中的有效代码值。其中,写入HPRIO中的代码值实际上是中断矢量起始地址的低位字节。例如,将$DE写入到HPRIO寄存器,则定时器溢出中断(中断矢量地址为$FFDE$FFDF)被设定为最高优先级。,基于HCS12的嵌入式系统设计,9.2 ECT模块的自由运行计数器及定时器基本寄存器(1),9.2.1 自由运行主定时器与时钟频率设置 16位自由运行主定时器的工作频率决定输入捕捉/输出比较的分

11、辨能力。定时器计数寄存器TCNT对多路转换器输出的时钟信号进行计数,当计数值从$FFFF溢出变为$0000时,主定时器中断标志寄存器TFLG2中的中断标志TOF置位,如果此时定时器系统控制寄存器TSCR2中的中断允许位TOI=1,将向CPU申请中断。设置TOI=0可以禁止自由运行计数器溢出中断,向TFLG2中写入$80将清除TOF标志。 自由运行主定时器的时钟TIMCLK由4选1多路转换器提供(参见图9.27),时钟源的切换由16位脉冲累加器A控制寄存器 PACTL中的CLK1和CLK0控制,时钟可以是PCLK、PACLK、PACLK/256、PACLK/65536,其中,PCLK称为P时钟,

12、由预分频器将总线时钟进行2k分频后得到(k=07),分频系数由定时器系统控制寄存器TSCR2中的PR2、PR1和PR0决定。PACLK是16位脉冲累加器A的时钟,频率为ECLK/64。定时器系统控制寄存器TSCR1中的TEN位是TIMCLK的总开关,当TEN=0时,TIMCLK被切断,定时器停止工作,但并不影响脉冲累加器在事件计数方式下正常工作。 输出比较通道7(OC7)对自由运行主定时器具有特殊的控制功能,当定时器系统控制寄存器TSCR2中的控制位TCRE=1时,如果通道7输出比较成功,则TCNT自动复位到$0000,因而可利用OC7实现TCNT在$0000$($FFFF)之间循环计数。,基

13、于HCS12的嵌入式系统设计,9.2 ECT模块的自由运行计数器及定时器基本寄存器(2),9.2.2 ECT模块的基本寄存器 1. 定时器系统控制寄存器1 (Timer System Control Register 1,TSCR1),TEN:定时器允许位 1 = 允许定时器正常运行。 0 = 禁止主定时器(包括计数器),可用于降低功耗。 TSWAI:等待模式下定时器模块停止位 1 = 当MCU处于等待模式时,禁止定时器模块。定时器中断不能使MCU退出等待模式。 0 = 在等待期间允许ECT模块继续运行。 TSFRZ:冻结模式下定时器和模数计数器停止位。 1 = 只要MCU处于冻结模式,禁止定

14、时器和模数计数器。 0 = 冻结模式下允许定时器和模数计数器继续运行。,基于HCS12的嵌入式系统设计,9.2 ECT模块的自由运行计数器及定时器基本寄存器(3),TFFCA :快速清除定时器所有标志位。 1 = 对于TFLG1寄存器,读输入捕捉或写输出比较通道将清除相应通道的标志CnF。 对于TFLG2寄存器,对TCNT寄存器的任何访问将清除TOF标志。 对PACN3和PACN2寄存器的任何访问将清除PAFLG寄存器中的PAOVF和PAIF标志。 对PACN1和PACN0寄存器的任何访问将清除PBFLG寄存器中的PBOVF标志。 0 = 定时器标志普通清除方式。允许清除定时器标志,使其正常运

15、行。,2. 定时器系统控制寄存器2 (Timer System Control Register 2,TSCR2),TOI:定时器溢出中断允许位 1 = 当TOF标志置位时,允许请求硬件中断。 0 = 禁止定时器溢出中断。,基于HCS12的嵌入式系统设计,9.2 ECT模块的自由运行计数器及定时器基本寄存器(4),表9.6 预分频系数选择,TCRE:定时器计数器复位允许 1 = 通过成功的输出比较7复位自由运行计数器。 0 = 禁止计数器复位,计数器自由运行。 如果TC7 = $0000且TCRE = 1,TCNT一直保持$0000。 如果TC7 = $FFFF且TCRE = 1,当TCNT从

16、$FFFF复位到$0000时,TOF将不会置位。 PR2、PR1、PR0:定时器预分频器选择位,3. 定时器计数寄存器(Timer Count Register,TCNT) 16位主定时器是一个递增计数器,不停地对时钟信号TIMCLK进行计数,定时器计数寄存器TCNT的内容即为计数结果。,基于HCS12的嵌入式系统设计,9.2 ECT模块的自由运行计数器及定时器基本寄存器(5),4. 主定时器中断标志寄存器2(Main Timer Interrupt Flag 2,TFLG2),TOF:主定时器溢出标志 当自由运行定时器溢出时,TOF =1,如果允许中断(TSCR2寄存器中TOI=1),则将引

17、发溢出中断。向该位写1将清除TOF标志。 如果TSCR1寄存器中的TFFCA=1,对TCNT的任何访问将清零TFLG2寄存器。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(1),9.3.1 ECT模块的输入捕捉功能 当定时器IC/OC选择寄存器TIOS中的IOSn=0时,通道定义为输入捕捉。自由运行定时器启动后,边沿检测器便开始监视引脚事件,一旦引脚电平出现设定的有效跳变,自由运行计数器寄存器TCNT的当前值便被捕捉到捕捉寄存器TCn中(n=07)。 有效跳变边沿可以是上升沿、下降沿或任意跳变,由定时器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA

18、位决定。 要求引脚输入的最小脉宽大于2个模块时钟周期。 也可以设置EDGxB:EDGxA=00,关闭边沿检测器,停止该通道的捕捉。 捕捉完成后,主定时器中断标志寄存器TFLG1中的中断请求标志CnF置位,如果定时器中断允许寄存器TIE中的中断允许位CnI=1,且CCR中的控制位I=1,则系统会产生一次输入捕捉中断。如果不采用中断方式响应引脚事件,可以置CnI=0,通过软件查询标志CnF来进行处理。各个IC/OC通道可以单独发出中断请求,也可以分别关闭中断。事件处理后,可以向TFLG1寄存器的对应位写入1,清除标志CnF。 ECT的IC通道组由4个标准的带缓冲通道IC0IC3(引脚PT0PT3)

19、和4个非缓冲通道IC4IC7(引脚PT4PT7)组成。每个通道的IC/OC寄存器TCn都具有覆盖保护功能,以防止IC寄存器内容尚未读出之前,上一次捕捉的值被新值所覆盖。用户可以通过设置输入控制覆盖寄存器 ICOVW的相应位,决定是否允许某个通道用新的捕捉值覆盖上一次的捕捉值。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(2),1带缓冲的IC通道 带缓冲的IC通道组成:边沿检测、延迟滤波、捕捉寄存器和保持寄存器。 (1) 边沿检测 引脚逻辑电平的变化由内部边沿检测电路判别,判别规则由定时器控制寄存器TCTL3和TCTL4中的控制位EDGxB和EDGxA的状态决定

20、,判别结果送到延迟计数器进行滤波处理。 (2) 延迟滤波 在通道入口设置有延迟计数器,当延迟功能有效时,输入引脚检测到一个有效边沿后,延迟计数器按照预先选择的M时钟(模块时钟,等于内部总线时钟)周期数,延迟给定的时间间隔,才产生输出脉冲。延迟时间由延迟计数器控制寄存器DLYCT中的DLY1、DLY0决定。延迟计数结束后,延迟计数器自动清0。要求输入信号两个有效边沿之间的持续时间必须大于设定的延迟时间。 (3) 输入捕捉与锁存 延迟后的有效信号送到输入捕捉逻辑,根据输入控制系统控制寄存器ICSYS控制位BUFEN的状态和输入控制覆盖寄存器 ICOVW相关位的设置,决定是否将TCNT的当前值捕捉到

21、捕捉寄存器TCn中,以及是否将TCn中原来的捕捉值锁存到保持寄存器TCnH中。保持寄存器允许在不产生中断的条件下,连续捕捉两次不同时刻的值。 当输入捕捉寄存器TCn的值被读取后或被锁存到保持寄存器TCnH中时,相应的TCn被清空。同样,当保持寄存器的内容被读出时,TCnH也被清空。 根据中断允许寄存器TIE中CnI位的设置,决定是否向CPU提出中断请求。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(4),(4) 带缓冲的IC通道的工作模式 由输入控制系统控制寄存器ICSYS的控制位LATQ决定。 锁存模式 每个有效的引脚事件只将自由定时器的值放入捕捉寄存器TC

22、n,而TCn到TCnH的传送必须依赖模数递减计数器复0或其他强制锁存命令实现。 如图9.9所示,当输入控制系统控制寄存器ICSYS中的LATQ=1时,为输入捕捉锁存模式。通过一个有效的输入引脚跳变,主定时器中的值被复制到捕捉寄存器TCn中(n=03)。在下述情况下,TCn中原来的捕捉值被锁存到各自的保持寄存器TCnH中。这些情况包括: 模数递减计数器自然回0 向模数计数器直接写入$0000 向模数计数器控制寄存器MCCTL强制锁存控制位ICLAT直接写1。 如果输入控制覆盖寄存器ICOVW中的相应位NOVWx0,当发生新的输入捕捉时,输入捕捉寄存器TCn的值将被新值所覆盖。如果发生锁存操作,其

23、保持寄存器TCnH的内容也会被覆盖。 如果ICOVW寄存器中的相应位NOVWx1,TCn或TCnH必须处于清空状态才允许写入,否则不能写入新值。这样就可以在读取捕捉值或将该捕捉值转移到保持寄存器之前,避免TCn和TCnH被覆盖。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(5), 对于一个给定的周期,当模数递减计数器向下溢出(计数值等于0)时,TCn中的内容被锁存到各自的保持寄存器TCnH中。 当输入控制系统控制寄存器ICSYS中的控制位BUFEN=1时,向模数递减计数器和其计数寄存器MCCNT写入$0000,将使TCn的内容锁存到各自的保持寄存器TCnH中。

24、 当ICSYS寄存器中的控制位BUFEN=1时,向模数计数器控制寄存器MCCTL强制锁存控制位ICLAT写1,将使TCn中的内容锁存到各自的保持寄存器TCnH中。,图9.9 锁存模式下的ECT模块框图,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(6), 队列模式 TCn与TCnH形成一个类似先进先出的队列,每次捕捉值从TCn寄存器进入,随着下一个捕捉值的到来移入TCnH寄存器,程序可以从TCnH取得结果。然而,这个队列是开放的,即程序也可以直接从TCn取得捕捉结果。 如图9.10所示,当输入控制系统控制寄存器ICSYS中的LATQ=0时,为输入捕捉队列模式。一

25、旦输入引脚上出现一个有效的电平跳变,主定时器中的值被复制到捕捉寄存器TCn中。 如果输入控制覆盖寄存器ICOVW中的相应位NOVWx0,当发生新的输入捕捉时,IC寄存器中的值将被锁存到其保持寄存器中,IC寄存器存储新的定时器值。 如果ICOVW寄存器中的相应位NOVWx1, TCn或TCnH必须处于清空状态才允许写入,否则不能写入新值。 在队列模式下,读TCnH将使相应的脉冲累加器的值锁存到其保持寄存器中。 在上述两种模式下,ECT通道0通道3中断标志C0FC3F的建立条件如图9.11所示。 在锁存模式下,LATQ=1,无论输入控制系统控制寄存器ICSYS中的输入捕捉缓冲允许位BUFEN和定时

26、器标志置位模式位TFMOD的状态如何,只有发生捕捉时才会置位中断标志CnF。 在队列模式下,LATQ=0,如果BUFEN和TFMOD中任意一个状态为0,中断标志CnF置位条件与LATQ=1时相同。只有当BUFEN=1和TFMOD=1时,捕捉时不会置位中断标志CnF,TCn到TCnH的锁存操作才会置位标志CnF,这样就可以在不产生中断的条件下,连续捕捉两次不同时刻的值。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(7),图9.10 队列模式下定时器模块框图,2非缓冲IC通道 非缓冲IC通道没有保持寄存器,通道入口也没有延迟计数器,但在每个通道入口设置了一个双输入

27、的多路转换器。事件触发信号可以来自于本通道的输入引脚,也可以来自于相关通道延迟计数器的输出,即采用相关的带缓冲的IC通道的边沿信号作为本通道的触发事件。多路转换器的控制信号分别来自于输入控制系统控制寄存器ICSYS中的控制位SH04、SH15、SH26和SH37,即4个非缓冲通道IC4IC7分别与带缓冲的通道IC0IC3相关联。 当输入引脚出现有效事件时,引脚电平变化时刻主定时器的计数值被捕获到相应通道的捕捉寄存器中,但受输入控制覆盖寄存器ICOVW的控制。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(8),图9.11 带缓冲的IC通道中断标志建立逻辑, 如果

28、输入控制覆盖寄存器ICOVW中的相应位NOVWx=0,当发生新的捕捉事件时,TCn的值将被新值所覆盖。 如果当ICOVW中的相应位NOVWx1时,当一个新的捕捉发生时,TCn的值将不被覆盖,除非此时它处于清空状态。这将防止捕捉到的值在读之前被覆盖。,9.3.2 与输入捕捉功能相关的寄存器 1. 定时器输入捕捉/输出比较选择寄存器(Timer Input Capture/Output Compare Select,TIOS),基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(9),IOS7:0:输入捕捉或输出比较通道配置位。 1 = 相应的通道用作输出比较。 0 =

29、相应的通道用作输入捕捉。,2. 定时器IC/OC寄存器0-7(Timer Input Capture/Output Compare Registers 0-7,TC0-TC7),每个IC/OC通道都有一个16位的寄存器。对于IC通道,TCn用于锁存自由运行定时器/计数器的计数值(n=07)。对于OC通道,TCn用于存放比较值。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(10),3. 定时器输入捕捉保持寄存器0-3(Timer Input Capture Holding Registers 0-3,TC0H-TC3H) TCnH寄存器被用来锁存带缓冲的IC通道

30、的输入捕捉寄存器TC0TC3的值(n=03)。,4. 定时器控制寄存器3和4(Timer Control Registers 3 and 4,TCTL3/ TCTL4) TCTL3和TCTL4寄存器用于设置对应通道的输入捕捉极性。,TCTL3:,TCTL4:,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(11),EDGnB,EDGnA:输入捕捉边沿控制位 这8对控制位对输入捕捉边沿检测电路进行设置,控制位的设置如表9.7所示。,当EDGnB=EDGnA=0时,第n通道的IC功能与输入引脚断开。 TCTL4中的4对控制位还用来设置8位脉冲累加器PAC0PAC3。

31、对于16位脉冲累加器PACB,TCTL4中的控制位EDG0B和EDG0A将决定触发的边沿。,表9.7 边沿检测器电路设置,5. 延迟计数器控制寄存器(Delay Counter Control Register,DLYCT),DLYx:延迟计数器选择位 延迟时间的确定如表9.8所示。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(12),如果允许,检测到输入捕捉引脚上的有效边沿后,延迟计数器对预先选择的总线时钟周期进行计数,然后在其输出产生一个脉冲。在预设的延迟后,只有当输入信号的电平与跳变前的电平相反时才产生脉冲输出。,表9.8 延迟计数器选择,延迟计数之后,

32、延迟计数器将自动清零。输入信号周期两个有效边沿之间的间隔应该大于选定的计数器延迟。,6. 输入控制覆盖寄存器(Input Control Overwrite Register,ICOVW),NOVWx:输入捕捉覆盖允许位 1 = 不能由事件对相应的捕捉寄存器或保持寄存器写操作,即不允许被覆盖。 0 = 当发生新的输入捕捉或锁存动作时,相应的捕捉寄存器或保持寄存器中的内容可以被覆盖。 当IC寄存器的内容被读出或锁存到保持寄存器中时,该IC寄存器被清空。当保持寄存器内容被读出时,该保持寄存器被清空。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(13),SHxy:输

33、入捕捉通道x和y共享输入动作控制位 非缓冲通道IC4IC7分别可以共享带缓冲的通道IC0IC3的输入信号,取决于SHxy位的设置。 1 = 输入通道x的动作在通道y上产生同样的效果。端口引脚x和相应的边沿检测器对通道y有效,即通道x的的边沿检测器和延迟电路同时作用于x、y通道。其中,通道配对情况为xy=04,15,26,37。 0 = 正常操作。x、y通道各自使用对应的端口引脚。,7. 输入控制系统控制寄存器(Input Control System Control Register,ICSYS),基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(14),TFMOD

34、:定时器标志置位模式位 该位用来设置定时器中断标志产生的条件。 1 = 在队列模式(BUFEN=1且 LATQ=0)下,仅当相应的保持寄存器出现锁存时,TFLG1寄存器中的定时器标志C3FC0F置位。 如果未使用队列模式,定时器标志C3FC0F置位情况与TFMOD=0时相同。 0 = 当端口引脚PTn上出现有效的输入捕捉跳变时,TFLG1寄存器中的定时器标志C3FC0F置位。 通过设置输入捕捉为队列模式(LATQ=0)且输入缓冲允许(BUFEN=1),当TFMOD=1和NOVW寄存器中的NOVWx=1,且相应的TCn和TCnH被清空时,输入捕捉事件将首先用主定时器的内容更新相应的TCn。下一个

35、事件发生时,TCn数据被传送到TCnH寄存器,TCn被更新,TFLG1中的CnF中断标志置位。因此,ICSYS寄存器中的TFMOD位与ICOVW寄存器一起使用,可以使TCn和TCnH捕捉到两个值后,定时器才产生中断,而不是每次捕捉产生一次中断。两次捕捉的结果分别存放在捕捉寄存器和保持寄存器中。 在所有其它输入捕捉情况下,中断标志CnF由PTn上的有效外部事件置位。 PACMX:8位脉冲累加计数器最大计数值控制位 1 = 当8位脉冲累加器等于$FF时,将不再继续递增,即进入饱和状态。$FF值表示计数值255。 0 = 正常计数。当计数值达到$FF时,在下一个有效边沿,计数值将变为$00,并在此基

36、础上计数值继续递增。,基于HCS12的嵌入式系统设计,9.3 ECT模块的输入捕捉功能及寄存器设置(15),BUFEN:IC缓冲器允许位 1 = 输入捕捉保持寄存器和脉冲累加器保持寄存器允许,即允许使用缓冲。 当LATQ=1时,向MCCTL寄存器中的ICLAT位写1,将使输入捕捉寄存器和脉冲累加器寄存器的内容锁存到其保持寄存器中。 0 = 输入捕捉和脉冲累加器保持寄存器禁止。 LATQ:输入控制锁存或队列模式允许位 1 = 输入捕捉锁存模式允许。 输入捕捉通道和脉冲累加器工作在锁存模式,当模数递减计数器自然复0或将0写入到MDC计数寄存器MCCNT中时,产生锁存操作。当锁存事件发生时,IC寄存

37、器和8位脉冲累加器中的内容被传送到其保持寄存器中。同时8位脉冲累加器被清0。 0 = 输入捕捉队列模式允许。 输入捕捉通道和脉冲累加器工作在队列模式,通过一个有效的输入引脚跳变,主定时器的值被存储到IC寄存器中。 当发生新的捕捉时,IC寄存器中的值将被传送到其保持寄存器中,IC寄存器存入新的定时器值。 为了使能IC保持寄存器和脉冲累加器保持寄存器,控制位BUFEN应该被置1,否则LATQ锁存模式被禁止。 当LATQ和BUFEN同时置1时,向MCCTL寄存器中的ICLAT位写1,将使输入捕捉寄存器和脉冲累加器寄存器的内容锁存到其保持寄存器中。,基于HCS12的嵌入式系统设计,9.3 ECT模块的

38、输入捕捉功能及寄存器设置(16),8. 定时器中断允许寄存器(Timer Interrupt Enable Register,TIE),C7FC0F :输入捕捉/输出比较通道“n”标志位 1 = 输入捕捉/输出比较通道已经出现有效动作。 0 = 上次清除标志以来,输入捕捉/输出比较通道没有出现有效动作。,C7IC0I:输入捕捉/输出比较“x”中断允许位 1 = 允许输入捕捉/输出比较中断。 0 = 禁止输入捕捉/输出比较中断。 9. 主定时器中断标志寄存器1(Main Timer Interrupt Flag 1,TFLG1),基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及

39、寄存器设置(1),输出比较用于产生程序控制下的输出动作或定时器事件,该动作或事件与自由运行计数器同步。 输出比较通道由16位比较器和主定时器计数寄存器TCNT组成,与输入捕捉共享引脚、通道寄存器、中断逻辑等。 当定时器通道配置成输出比较方式时,定时器通道寄存器TCn便作为输出比较寄存器,16位比较器将TCNT的计数值与比较寄存器中的内容与进行比较,若两者相等,便会在该通道的引脚上输出预设的电平,同时置位中断标志CnF。在产生输出动作时如果允许中断,还会产生一个硬件定时中断。 输出比较通道OC7具有特殊的权限,可以废止其他OC通道的动作,直接决定各个输出通道的状态。 9.4.1 ECT模块的输出

40、比较功能 如果定时器输入捕捉/输出比较选择寄存器TIOS的相应位TIOSn=1,则定时器通道IOCn被设置成输出比较(OC)通道(n=07),对应的引脚PTn强制为OC输出引脚。可以根据需要,计算出希望事件出现的时刻,对TCn寄存器赋值。,基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及寄存器设置(2),当定时器系统控制寄存器TSCR1中的TEN=1时,自由运行定时器启动, 16位比较器开始监视TCNT的计数值,一旦TCNT=TCn,则根据寄存器TCTL1或TCTL2中的输出模式选择位OMn和输出电平选择位OLn的设置,在对应引脚产生预定的动作。也可以设置OMn:OLn=00

41、,切断输出控制逻辑与引脚的联系,禁止该通道输出。 产生输出动作的同时,内部逻辑还将主定时器中断标志寄存器TFLG1中的中断请求标志CnF置1。如果定时器中断允许寄存器TIE中的CnI=1,且CCR中的控制位I=1,则转向TCn中断服务程序。也可以置CnI=0,通过软件查询标志CnF来确定是否出现OC事件。 事件处理后,可以向TFLG1寄存器的对应位写入1,以清除中断请求标志CnF。为了响应随后的事件,需要向TCn寄存器重赋定时常数,然后等待下一次事件发生。 ECT模块允许通过设置定时器强制输出比较寄存器CFORC中的强制输出比较位FOCn(n=07),迫使某个或几个通道立即产生OMn和OLn所

42、规定输出比较动作,但强制输出比较不会置位通道标志位CnF。 定时器通道7输出比较的输出控制部分具有特殊功能,在OC7通道比较成功后,可以“越权”强行设置通道OC0OC6的输出。TC7的输出比较不同于其他通道的输出比较,它能够设置在定时器任何一个I/O引脚上产生输出动作,并且能够设置在比较事件发生时将自由运行计数器复位。如果通道OC7的动作与通道OC0OC6的动作同时发生,OC7通道对它们的强行设置具有更高的优先权。,基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及寄存器设置(3),可以通过对输出比较7屏蔽寄存器OC7M的设置,使OC7Mn=1,OC7强行参与管理通道n的输出,

43、但通道OC7对通道OC0OC6的管理仅限于使其引脚PT0PT6清0或置1,不能将引脚电平翻转,引脚的动作来自于输出比较7数据寄存器OC7D中的对应位OC7Dn定义的电平状态,必须事先通过程序设置。 当定时器系统控制寄存器TSCR1中的控制位TCRE=1时,如果OC7通道比较成功,则定时器计数寄存器TCNT自动复位到$0000。,9.4.2 与输出比较功能相关的寄存器 1. 定时器控制寄存器1和2(Timer Control Registers 1and 2,TCTL1/ TCTL2),TCTL1:,TCTL2:,基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及寄存器设置(4)

44、,OMn:输出模式 OLn:输出电平 这8对控制位被译码后,用于规定通道OCn比较成功后产生的输出动作。当OMn或OLn为1时,与OCn相关的引脚PTn变成与OCn相连的输出,而与DDRT中的对应位无关。 为了分别运行16位脉冲累加器A和B(PACA和PACB),而不依赖于输入捕捉或输出比较7和0,必须设置相应的位IOSn =1,OMn=0和OLn=0。OC7M寄存器中的OC7M7位或OC7M0位也必须清0。,表9.9 比较结果输出动作设置,2. 定时器强制输出比较寄存器(Timer Compare Force Register,CFORC),FOC7:0:通道7:0强制输出比较操作位。 1=

45、 设置为强制输出比较,且立即在引脚PTn上产生预定的输出比较动作。 0= 禁止使用强制输出比较。,基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及寄存器设置(5),当相应的TIOSn(n=06)位被设置成输出比较时,置位OC7Mn(n=06)将使相应的端口设置为输出端口,与DDRT中的对应位状态无关,但OC7Mn并不改变DDRT中对应位的状态。 OC7Mn:输出比较7屏蔽位 OC7Mn=1,通道n端口引脚输出受TC7输出比较事件的控制。 OC7Mn=0,通道n端口引脚输出不受TC7输出比较事件的控制。 4. 输出比较7数据寄存器(Output Compare 7 Data R

46、egister,OC7D),3. 输出比较7屏蔽寄存器(Output Compare 7 Mask Register,OC7M),基于HCS12的嵌入式系统设计,9.4 ECT模块的输出比较功能及寄存器设置(6),TOVx:溢出触发控制位 当定时器溢出时,TOVx触发输出比较。这个特性仅在输出比较模式下起作用。当TOVx=1时,触发输出优先于强制输出比较,但对通道7无效。 1 = 允许根据溢出特性触发输出比较引脚。 0 = 禁止根据溢出特性触发输出比较引脚。,若OC7Mn=1,当通道7输出比较成功时,OC7D中的对应位将被传送到定时器端口数据寄存器PORTT中。 如果通道7输出比较成功的动作与

47、通道60由OMn和OLn设定的输出比较动作发生在同一个周期,则前者覆盖后者,此时各个通道的动作将依赖于OC7D中各位的状态。,5. 定时器溢出触发寄存器1(Timer Toggle On Overflow Register 1,TTOV),基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(1),ECT内4个8位脉冲累加器PAC0PAC3与4个带缓冲的输入捕捉通道IC0IC3相关联,共享引脚PT0PT3、边沿检测和延迟计数电路。4个8位脉冲累加器可以独立使用,也可级联形成2个16位的脉冲累加器A和B。 脉冲累加器的核心是一个计数器PACNT,用来对输入脉冲进行计数。

48、每个8位脉冲累加器都配有1个8位计数寄存器PACNx,用来反映计数结果,程序可以随时读取或写入设定的初值。 每个8位脉冲累加器配有1个8位保持寄存器PAxH,用来锁存脉冲累加器中的计数值。 由于与输入捕捉共享通道资源,因此当作为脉冲累加器使用时,对应通道的引脚必须通过寄存器TIOS设置为IC方式。 9.5.1 ECT模块的脉冲累加器功能 1. 脉冲累加器的计数方式 根据工作方式的不同,脉冲累加器的计数脉冲来自不同的渠道。 (1) 事件计数方式 当寄存器PACTL中的控制位PAMOD=0时,16位脉冲累加器A工作于事件计数方式,即对有效边沿计数。注意,8位脉冲累加器和16位脉冲累加器B只能工作于

49、这种方式。,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(2),8位脉冲累加器的计数脉冲来自于引脚PT0PT3,16位脉冲累加器A和B的计数脉冲分别来自于引脚PT7和PT0。对于8位脉冲累加器,有效边沿通过定时器控制寄存器TCTL4中的控制位EDGxA和EDGxB设置(x=03);对于16位脉冲累加器B,有效边沿通过控制位EDG0A和EDG0B设置;对于16位脉冲累加器A,有效边沿通过脉冲累加器A控制寄存器PACTL中的控制位PEDGE设置。 输入引脚上每个有效边沿跳变,脉冲累加计数器的值加1。脉冲累加器未溢出时,程序可以随时读取脉冲累加器计数寄存器来获得计数

50、值,也可以写计数寄存器设定初始值。8位脉冲累加器的计数寄存器为PACNx(x=03)。16位脉冲累加器A和B的计数寄存器分别为PACN32和PACN10。 当脉冲累加器溢出时,将置位PAFLG寄存器中的PAOVF标志或PBFLG中的PBOVF标志。如果允许中断(寄存器PACTL中的PAOVI=1或PBCTL中的PBOVI=1),则产生一次溢出中断。 向PAOVF位或PBOVF位写入1时,将自动清除对应的标志。当TSCR1寄存器中的TFFCA=1时,对PACN3和PACN2寄存器的任何访问将清除PAOVF标志,而对PACN1和PACN0寄存器的任何访问将清除PBOVF标志。其中,PAOVF标志仅

51、限于16位脉冲累加器A和8位脉冲累加器PAC3使用,对应的溢出中断允许位是PAOVI;而PBOVF标志则仅限于16位脉冲累加器B和8位脉冲累加器PAC1使用,对应的溢出中断允许位是PBOVI。PAC2和PAC0没有溢出中断功能。,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(3),(2) 门控时间累加方式 当脉冲累加器A控制寄存器PACTL中的控制位PAMOD=1时,脉冲累加器工作于门控时间累加方式,但这种方式仅限于16位脉冲累加器A。 在门控时间累加方式下,门控信号来自引脚PT7,而时钟信号为PACLK(总线时钟的64分频ECLK/64),门控信号可通过脉冲

52、累加器A控制寄存器PACTL中的控制位PEDGE设定为高电平有效或低电平有效。在有效电平期间,脉冲累加器对PACLK时钟信号进行计数。输入引脚上的有效电平跳变沿将触发脉冲累加器开始计数,而有效电平结束时的跳变沿将停止计数,并使输入有效边沿标志PAIF置位。如果允许中断(寄存器PACTL中的PAI=1),则产生一次硬件输入中断。 当脉冲累加器溢出时,将置位寄存器PAFLG中的PAOVF标志。如果允许脉冲累加器A溢出中断(寄存器PACTL中的PAOVI=1),则产生一次溢出中断。 对PAOVF位写入1时,将自动清除该标志。当TSCR1寄存器中的TFFCA=1时,对PACN32寄存器的任何访问将清除

53、PAFLG寄存器中的PAOVF标志和PAIF标志。在脉冲累加器未溢出时,程序可以随时读取计数寄存器PACN32来获得计数值,也可以写计数寄存器PACN32设定初始值。 注意,门控时间累加方式的时间基准为ECLK/64,它来自一个公用的分频器,该分频器受定时器控制寄存器TSCR1中控制位TEN的控制。因此,这种方式要求定时器必须使能,即设置TEN=1,否则脉冲累加器无法得到计数脉冲。 此外,虽然脉冲累加器是ECT模块的一个子系统,但控制位PAEN和PBEN与TEN相互独立。当TEN=0时,只要满足PAEN=1且PAMOD=0或PBEN=1,PACNT仍然可以对引脚的有效边沿计数。而且,即使是PA

54、EN=0和PBEN=0以及PAxEN=0,脉冲累加器子系统关闭,脉冲累加器的计数寄存器PACNx仍然可以访问,PACNx支持写操作,这为设置计数初值提供了方便。,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(4),4个8位的脉冲累加器独立使用还是级联使用,取决于16位脉冲累加器A控制寄存器PACTL和16位脉冲累加器B控制寄存器PBCTL中的控制位PAEN、PBEN以及输入控制脉冲累加器寄存器ICPAR中的控制位PA3ENPA0EN的设置。当PAEN=PBEN=0时,PAC3PAC0可独立工作。但8位的脉冲累加器只能工作于事件计数方式。 如图9.26所示,当T

55、IOS中的IOSx=0时(x=03),PTx引脚信号进入边沿检测电路,有效边沿将被送到延迟计数部分进行窄脉冲消除,然后送到脉冲累加器计数寄存器PACNx。当寄存器ICPACR中的PAxEN=1时,对应的PACx通道允许,则脉冲累加器计数寄存器PACNx对输入脉冲进行计数。各通道的有效边沿可以通过定时器控制寄存器TCTL4中的控制位EDGxA和EDGxB单独设置,延迟时间则通过延迟计数器控制寄存器DLYCT设置。但所有通道共用一个延迟时间,不能分别设置。,图9.26 8位脉冲累加器框图,2. 8位脉冲累加器PAC3PAC0,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存

56、器设置(5),对于8位脉冲累加器PACx,引脚PTx上出现的信号有效边沿将使主定时器中断标志寄存器TFLG1中的标志CxF置位。如果允许中断(定时器中断允许寄存器TIE中的控制位CxI=1),则产生一次硬件中断。向CxF位写入一个1,将清除该标志。 当计数寄存器PACNx从$FF溢出到$00时(x=3、1),寄存器PAFLG中的PAOVF或PBFLG中的PBOVF标志置1,如果寄存器PACTL中的PAOVI=1或PBCTL中的PBOVI=1,且CCR中I=1,将向CPU申请中断。通过程序向PAOVF或PBOVF写1将清除对应的标志。当TSCR1寄存器中的TFFCA=1时,读PACN3和PACN

57、2寄存器将清除PAOVF标志,而读PACN1和PACN0寄存器将清除PBOVF标志。注意,只有PACN3和PACN1具有溢出中断功能,而PACN2和PACN0则没有。 PAC3PAC0通道设置了饱和记忆功能,当输入控制系统控制寄存器ICSYS中的控制位PACMX=1时,该功能启动。这时,如果某个通道计数器PACNx=$FF,那么PACNx将停止对后续事件的计数,而保持在$FF。因此,如果某个PACNx=$FF,说明其计数值255。如不需要,该功能可以关闭。这可以用来监视某个通道的计数值是否已经达到预定的目标值。 当ICSYS中的BUFEN=1时,保持寄存器PAxH有效,可以保存PACNx的累计

58、结果,传送控制信号由MCCTL中的ICLAT或模数递减计数器MDC发出,但与ICSYS寄存器中的LATQ有关。当BUFEN=0时,保持寄存器无效。,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(6),与带缓冲的输入捕捉通道相同,脉冲累加器也有两种工作方式:锁存方式和队列方式。在锁存方式下,保持寄存器PCxH的加载依靠MDC计数器或者强制命令实现,而在队列方式下,则依靠IC通道的TCxH读命令。 (1) 脉冲累加器的锁存方式 当LATQ=1,脉冲累加器处于锁存模式。模数递减计数器回0、将$0000写入模数计数器或强制锁存控制位ICLAT被置1三者之一发生时,脉冲

59、累加器的值将被锁存到对应的保持寄存器中,同时,脉冲累加器被清空。 (2) 脉冲累加器的队列方式 当LATQ=0,脉冲累加器处于队列模式,读输入捕捉保持寄存器TCxH将使相应的脉冲累加器的内容锁存到其保持寄存器中。同时,脉冲累加器被清空。 脉冲累加器设置了覆盖限制功能,当保持寄存器为空时,将允许进行结果传送。但当保持寄存器非空时,则禁止覆盖。覆盖控制通过寄存器ICSYS实现。 由于PAC0PAC3与带缓冲通道IC0IC3共享相同的引脚,并且共享入口逻辑,因此,在锁存工作模式和队列工作模式下,脉冲累加器与输入捕捉可以同时工作,对同一引脚进行记录,前者记录脉冲或边沿的数量,后者记录具体时刻。,基于HCS12的嵌入式系统设计,9.5 ECT模块的脉冲累加器功能及寄存器设置(7),如图9.27所示,4个8位脉冲累加器PAC0PAC3可以通过级联形成两个16位脉冲累加器PACA、PACB,它们共享边沿检测与延迟电路。 当寄存器PACTL中的PAEN=1时,通道PAC3、PAC2不复存在,这时,输入控制脉冲累加器寄存器ICPAR中的控制位PAEN3、PAEN2无效,PACN3与PACN2级联成16位脉冲累加器A,并使用引脚PT7,而不是引脚PT2。,3. 16位脉冲累加器PACA和PA

温馨提示

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

评论

0/150

提交评论