S12增强型定时器模块.ppt

上传人:小飞机 文档编号:5447062 上传时间:2023-07-08 格式:PPT 页数:92 大小:608KB
返回 下载 相关 举报
S12增强型定时器模块.ppt_第1页
第1页 / 共92页
S12增强型定时器模块.ppt_第2页
第2页 / 共92页
S12增强型定时器模块.ppt_第3页
第3页 / 共92页
S12增强型定时器模块.ppt_第4页
第4页 / 共92页
S12增强型定时器模块.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《S12增强型定时器模块.ppt》由会员分享,可在线阅读,更多相关《S12增强型定时器模块.ppt(92页珍藏版)》请在三一办公上搜索。

1、基于HCS12的嵌入式系统设计,合肥工业大学吴 晔,张 阳,滕 勤,基于HCS12的嵌入式系统设计,第9章 S12增强型捕捉定时器模块,本章内容9.1 ECT模块概述9.2 自由运行计数器及定时器基本寄存器9.3 输入捕捉功能及寄存器设置9.4 输出比较功能及寄存器设置9.5 脉冲累加器功能及寄存器设置9.6 模数递减计数器功能及寄存器设置9.7 ECT模块基础应用实例,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,【可编程定时器/计数器的特点】多种工作方式定时方式或计数方式等。计数器的模值可变计数的最大值有一定的限制,取决于计数器的位数。计数的最大值限制了定时的最大值。可以根据规定

2、的定时或计数值,当定时时间到或到达计数终点时,发出中断请求信号,以便实现定时或计数控制。【定时器】计数脉冲来自于系统时钟或经过分频后的系统时钟,即驱动信号为内部时钟脉冲;【计数器】计数脉冲来自于芯片外部引脚,即驱动信号为外部脉冲。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,嵌入式系统中定时器/计数器模块的作用:【产生波形输出】从MCU的I/O引脚向外输出一系列符合一定时序规范的周期信号。【测量输入波形】检测MCU I/O引脚上输入的一系列周期信号的脉宽、周期或频率。【统计脉冲或边沿个数】对端口引脚输入的、由外部事件产生的触发信号进行计数。【作为定时基准】产生内部定时,例如用于定时

3、采样等。S12系列MCU的定时器模块称为增强型捕捉定时器(ECT)模块(Enhanced Capture Timer Module)。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.1 ECT的基本组成与工作原理【ECT组成】1个16位自由运行计数器8个16位输入捕捉/输出比较(IC/OC)通道2个16位脉冲累加器1个16位模数递减计数器MDC【特点】4个输入捕捉通道具有16位缓冲(保持)寄存器4个输入捕捉通道具有可选择延迟时间的延迟计数器4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器具有4位预分频器的模数递减计数器,基于HCS12的嵌入式系统设计,9.1 ECT模

4、块概述,【ECT的运行模式】停止(STOP)模式 冻结(Freeze)模式 等待(Wait)模式 正常(Normal)模式,图9.1 ECT模块框图,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.1 ECT的基本组成与工作原理自由运行计数器:ECT的核心16位自由运行计数器,也称为自由运行主定时器。系统复位时自由运行计数器为$0000。模块运行时自由运行计数器从$0000$FFFF循环递增计数。溢出复零时置位中断标志。时钟源TIMCLK PCLK,PACLK,PACLK/256,PACLK/65536。预分频器时钟PCLK由总线时钟经过一个7位预分频器得到。预分频系数 8种。

5、,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.1 ECT的基本组成与工作原理1.输入捕捉输入捕捉(Input Capture,IC):输入引脚上的跳变沿(上升沿或下降沿)触发输入捕捉,将当前自由运行计数器中的计数值复制到通道寄存器中,并置位中断标志,如果允许中断,则产生一次输入捕捉中断。带保持寄存器的IC通道可以在不产生中断的条件下,连续记录两次自由运行计数器的值。,9.2 输入捕捉模块框图,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.1 ECT的基本组成与工作原理2.输出比较输出比较(Output Compare,OC):根据需要设置输出比较寄存器的值

6、,自由运行计数器的值与输出比较寄存器的值每隔4个总线周期比较一次,当两者相等时,会在规定的通道引脚上输出预定的电平。如果允许中断,会产生一次输出比较中断。,9.3 输出比较模块框图,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.3 输出比较模块框图,9.1.1 ECT的基本组成与工作原理3.脉冲累加器脉冲累加器(Pulse accumulator,PA):脉冲计数器,可以统计相应管脚上的脉冲个数或在管脚上有效电平期间对内部时钟进行计数。ECT内有4个8位脉冲累加器,与4个带缓冲的通道相联,可以级联形成2个16位的脉冲累加器。每个脉冲累加器有一个缓冲器(保持寄存器),可以在外部引脚

7、出现预定动作时,保存其累加值。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,3.脉冲累加器根据工作方式不同,脉冲累加器的计数脉冲来自不同的渠道。【计数方式】事件计数方式计数脉冲直接来自引脚逻辑,脉冲累加器相当于计数器,对有效边沿计数,有效边沿可设定为上升沿或下降沿。输入引脚上每产生一个有效边沿跳变,脉冲累加计数器的值加1。当脉冲累加器溢出时,将置位中断标志。如果允许中断,则产生一次溢出中断。门控时间累加方式脉冲累加器相当于可控计数器。门控信号来自引脚逻辑,时钟信号来自内部时钟PACLK(=ECLK/64)。门控信号可设定为高电平有效或低电平有效,在有效电平期间,脉冲累加器对ECLK

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

9、器中赋初值。但MDC的常数寄存器与其计数寄存器MCCNT使用相同的地址,加载时通过特殊的时序实现。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.1 ECT的基本组成与工作原理4.模数递减计数器复位后,MCCNT=$FFFF。MDC启动后,MCCNT从当前值开始递减计数。当计数值减到0时,置位中断标志。如果允许中断,则向CPU发出中断请求。【计数方式】单次计数方式当计数值减到$0000时,MDC便停止计数。循环(连续)计数方式当计数值减到$0000时,自动加载定时常数,并继续递减计数。,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.2 模块内存映射ECT模块

10、的寄存器分为3类:控制寄存器、数据寄存器和状态寄存器。控制寄存器定时器系统控制寄存器TSCR1、TSCR2定时器控制寄存器TCTL1TCTL4定时器IC/OC选择寄存器 TIOS输入控制覆盖寄存器 ICOVW延迟计数器控制寄存器 DLYCT定时器中断允许寄存器 TIE输入控制系统控制寄存器 ICSYS定时器强制输出比较寄存器 CFORC输出比较7屏蔽寄存器 OC7M定时器溢出触发寄存器1 TTOV16位脉冲累加器A控制寄存器 PACTL16位脉冲累加器B控制寄存器 PBCTL模数递减计数器控制寄存器MCCTL输入控制脉冲累加器寄存器 ICPAR,基于HCS12的嵌入式系统设计,9.1 ECT模

11、块概述,数据寄存器定时器计数寄存器 TCNT定时器IC/OC寄存器 TC0TC7输入捕捉保持寄存器TC0HTC3H输出比较7数据寄存器 OC7D脉冲累加器计数寄存器 PACN0PACN38位脉冲累加器保持寄存器PA0HPA3H模数递减计数器计数寄存器 MCCNT 状态寄存器主定时器中断标志寄存器TFLG1、TFLG2脉冲累加器A标志寄存器PAFLG脉冲累加器B标志寄存器 PBFLG模数递减计数器标志寄存器 MCFLG,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,9.1.3 ECT模块的中断系统ECT模块中断源:8个定时器通道中断1个模数递减计数器向下溢出中断1个脉冲累加器A输入中断

12、1个脉冲累加器A溢出中断1个脉冲累加器B溢出中断,图9.4 ECT模块中断源,基于HCS12的嵌入式系统设计,9.1 ECT模块概述,表9.5 ECT模块中断描述,9.1.3 ECT模块的中断系统 ECT模块中断源:,基于HCS12的嵌入式系统设计,9.2 自由运行计数器及定时器基本寄存器,9.2.1 自由运行主定时器与时钟频率设置16位自由运行主定时器的工作频率决定输入捕捉/输出比较的分辨能力。定时器计数寄存器TCNT对多路转换器输出的时钟信号进行计数,当计数值从$FFFF溢出变为$0000时,主定时器中断标志寄存器TFLG2中的中断标志TOF置位,如果此时定时器系统控制寄存器TSCR2中的

13、中断允许位TOI=1,将向CPU申请中断。设置TOI=0可以禁止自由运行计数器溢出中断,向TFLG2中写入$80将清除TOF标志。,基于HCS12的嵌入式系统设计,9.2 自由运行计数器及定时器基本寄存器,9.2.1 自由运行主定时器与时钟频率设置自由运行主定时器的时钟TIMCLK由4选1多路转换器提供,时钟源的切换由16位脉冲累加器A控制寄存器 PACTL中的CLK1和CLK0控制,时钟可以是PCLK、PACLK、PACLK/256、PACLK/65536。,基于HCS12的嵌入式系统设计,9.2 自由运行计数器及定时器基本寄存器,9.2.1 自由运行主定时器与时钟频率设置其中,PCLK称为

14、P时钟,由预分频器将总线时钟进行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)之间循环计数

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

16、ontrol Register 1,TSCR1)TSFRZ:冻结模式下定时器和模数计数器停止位 1=只要MCU处于冻结模式,禁止定时器和模数计数器。0=冻结模式下允许定时器和模数计数器继续运行。TFFCA:快速清除定时器所有标志位 1=对于TFLG1寄存器,读输入捕捉或写输出比较通道将清除相应通道的标志CnF。对于TFLG2寄存器,对TCNT寄存器的任何访问将清除TOF标志。对PACN3和PACN2寄存器的任何访问将清除PAFLG寄存器中的PAOVF和PAIF标志。对PACN1和PACN0寄存器的任何访问将清除PBFLG寄存器中的PBOVF标志。0=定时器标志普通清除方式。允许清除定时器标志,

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

18、9.2 自由运行计数器及定时器基本寄存器,表9.6 预分频系数选择,2.定时器系统控制寄存器2(Timer System Control Register 2,TSCR2)PR2、PR1、PR0:定时器预分频器选择位,3.定时器计数寄存器(Timer Count Register,TCNT)16位主定时器是一个递增计数器,不停地对时钟信号TIMCLK进行计数,定时器计数寄存器TCNT的内容即为计数结果。,基于HCS12的嵌入式系统设计,9.2 自由运行计数器及定时器基本寄存器,9.2.2 ECT模块的基本寄存器4.主定时器中断标志寄存器2(Main Timer Interrupt Flag 2

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

20、边沿可以是上升沿、下降沿或任意跳变,由定时器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA位决定。要求引脚输入的最小脉宽大于2个模块时钟周期。设置EDGxB:EDGxA=00,可以关闭边沿检测器,停止该通道的捕捉。捕捉完成后,主定时器中断标志寄存器TFLG1中的中断请求标志CnF置位,如果定时器中断允许寄存器TIE中的中断允许位CnI=1,且CCR中的控制位I=1,则系统会产生一次输入捕捉中断。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,9.3.1 ECT模块的输入捕捉功能如果不采用中断方式响应引脚事件,可以置CnI=0,通过软件查询标志CnF来进行处理。各

21、个IC/OC通道可以单独发出中断请求,也可以分别关闭中断。事件处理后,可以向TFLG1寄存器的对应位写入1,清除标志CnF。ECT的IC通道组由4个标准的带缓冲通道IC0IC3(引脚PT0PT3)和4个非缓冲通道IC4IC7(引脚PT4PT7)组成。每个通道的IC/OC寄存器TCn都具有覆盖保护功能,以防止IC寄存器内容尚未读出之前,上一次捕捉的值被新值所覆盖。用户可以通过设置输入控制覆盖寄存器 ICOVW的相应位,决定是否允许某个通道用新的捕捉值覆盖上一次的捕捉值。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,1带缓冲的IC通道【带缓冲的IC通道组成】边沿检测、延迟滤波

22、、捕捉寄存器和保持寄存器。(1)边沿检测引脚逻辑电平的变化由内部边沿检测电路判别,判别规则由定时器控制寄存器TCTL3和TCTL4中的控制位EDGxB和EDGxA的状态决定,判别结果送到延迟计数器进行滤波处理。(2)延迟滤波在通道入口设置有延迟计数器,当延迟功能有效时,输入引脚检测到一个有效边沿后,延迟计数器按照预先选择的M时钟(模块时钟,等于内部总线时钟)周期数,延迟给定的时间间隔,才产生输出脉冲。延迟时间由延迟计数器控制寄存器DLYCT中的DLY1、DLY0决定。延迟计数结束后,延迟计数器自动清0。要求输入信号两个有效边沿之间的持续时间必须大于设定的延迟时间。,基于HCS12的嵌入式系统设

23、计,9.3 输入捕捉功能及寄存器设置,9.3.1 ECT模块的输入捕捉功能1带缓冲的IC通道(3)输入捕捉与锁存延迟后的有效信号送到输入捕捉逻辑,根据输入控制系统控制寄存器ICSYS控制位BUFEN的状态和输入控制覆盖寄存器 ICOVW相关位的设置,决定是否将TCNT的当前值捕捉到捕捉寄存器TCn中,以及是否将TCn中原来的捕捉值锁存到保持寄存器TCnH中。保持寄存器允许在不产生中断的条件下,连续捕捉两次不同时刻的值。当输入捕捉寄存器TCn的值被读取后或被锁存到保持寄存器TCnH中时,相应的TCn被清空。同样,当保持寄存器的内容被读出时,TCnH也被清空。根据中断允许寄存器TIE中CnI位的设

24、置,决定是否向CPU提出中断请求。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,1带缓冲的IC通道(4)带缓冲的IC通道的工作模式【工作模式】锁存模式和队列模式,由输入控制系统控制寄存器ICSYS的控制位LATQ决定。【锁存模式】每个有效的引脚事件只将自由定时器的值放入捕捉寄存器TCn,而TCn到TCnH的传送必须依赖模数递减计数器复0或其他强制锁存命令实现。当输入控制系统控制寄存器ICSYS中的LATQ=1时,为输入捕捉锁存模式。通过一个有效的输入引脚跳变,主定时器中的值被复制到捕捉寄存器TCn中(n=03)。在下述情况下,TCn中原来的捕捉值被锁存到各自的保持寄存器T

25、CnH中。这些情况包括:模数递减计数器自然回0向模数计数器直接写入$0000向模数计数器控制寄存器MCCTL强制锁存控制位ICLAT直接写1。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,【锁存模式】【1】覆盖控制如果输入控制覆盖寄存器ICOVW中的相应位NOVWx0,当发生新的输入捕捉时,输入捕捉寄存器TCn的值将被新值所覆盖。如果发生锁存操作,其保持寄存器TCnH的内容也会被覆盖。如果ICOVW寄存器中的相应位NOVWx1,TCn或TCnH必须处于清空状态才允许写入,否则不能写入新值。这样就可以在读取捕捉值或将该捕捉值转移到保持寄存器之前,避免TCn和TCnH被覆盖。

26、,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,【2】锁存条件对于一个给定的周期,当模数递减计数器向下溢出(计数值等于0)时,TCn中的内容被锁存到各自的保持寄存器TCnH中。当输入控制系统控制寄存器ICSYS中的控制位BUFEN=1时,向模数递减计数器和其计数寄存器MCCNT写入$0000,将使TCn的内容锁存到各自的保持寄存器TCnH中。当ICSYS寄存器中的控制位BUFEN=1时,向模数计数器控制寄存器MCCTL强制锁存控制位ICLAT写1,将使TCn中的内容锁存到各自的保持寄存器TCnH中。,图9.9 锁存模式下的ECT模块框图,基于HCS12的嵌入式系统设计,9.

27、3 输入捕捉功能及寄存器设置,【队列模式】TCn与TCnH形成一个类似先进先出的队列,每次捕捉值从TCn寄存器进入,随着下一个捕捉值的到来移入TCnH寄存器,程序可以从TCnH取得结果。然而,这个队列是开放的,即程序也可以直接从TCn取得捕捉结果。当输入控制系统控制寄存器ICSYS中的LATQ=0时,为输入捕捉队列模式。一旦输入引脚上出现一个有效的电平跳变,主定时器中的值被复制到捕捉寄存器TCn中。【1】覆盖控制如果输入控制覆盖寄存器ICOVW中的相应位NOVWx0,当发生新的输入捕捉时,IC寄存器中的值将被锁存到其保持寄存器中,IC寄存器存储新的定时器值。如果ICOVW寄存器中的相应位NOV

28、Wx1,TCn或TCnH必须处于清空状态才允许写入,否则不能写入新值。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,图9.10 队列模式下定时器模块框图,【队列模式】【2】锁存条件在队列模式下,读TCnH将使相应的脉冲累加器的值锁存到其保持寄存器中。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,【中断标志建立条件】在锁存模式下,LATQ=1,无论输入控制系统控制寄存器ICSYS中的输入捕捉缓冲允许位BUFEN和定时器标志置位模式位TFMOD的状态如何,只有发生捕捉时才会置位中断标志CnF。在队列模式下,LATQ=0,如果BUFEN和TFMOD中任意一

29、个状态为0,中断标志CnF置位条件与LATQ=1时相同。只有当BUFEN=1和TFMOD=1时,捕捉时不会置位中断标志CnF,TCn到TCnH的锁存操作才会置位标志CnF,这样就可以在不产生中断的条件下,连续捕捉两次不同时刻的值。,图9.11 带缓冲的IC通道中断标志建立逻辑,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,2非缓冲IC通道非缓冲IC通道没有保持寄存器,通道入口也没有延迟计数器,但在每个通道入口设置了一个双输入的多路转换器。事件触发信号可以来自于本通道的输入引脚,也可以来自于相关通道延迟计数器的输出,即采用相关的带缓冲的IC通道的边沿信号作为本通道的触发事件。

30、多路转换器的控制信号分别来自于输入控制系统控制寄存器ICSYS中的控制位SH04、SH15、SH26和SH37,即4个非缓冲通道IC4IC7分别与带缓冲的通道IC0IC3相关联。当输入引脚出现有效事件时,引脚电平变化时刻主定时器的计数值被捕获到相应通道的捕捉寄存器中,但受输入控制覆盖寄存器ICOVW的控制。【覆盖控制】如果输入控制覆盖寄存器ICOVW中的相应位NOVWx=0,当发生新的捕捉事件时,TCn的值将被新值所覆盖。如果当ICOVW中的相应位NOVWx1时,当一个新的捕捉发生时,TCn的值将不被覆盖,除非此时它处于清空状态。这将防止捕捉到的值在读之前被覆盖。,基于HCS12的嵌入式系统设

31、计,9.3 输入捕捉功能及寄存器设置,9.3.2 与输入捕捉功能相关的寄存器1.定时器输入捕捉/输出比较选择寄存器(Timer Input Capture/Output Compare Select,TIOS)IOS7:0:输入捕捉或输出比较通道配置位 1=相应的通道用作输出比较。0=相应的通道用作输入捕捉。【注意】ECT模块各通道设置成输入捕捉通道时,具有内部上拉功能;设置成输出比较通道时,具有降功率驱动功能。但上电后处于关闭状态,可以根据需要启用。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,9.3.2 与输入捕捉功能相关的寄存器2.定时器IC/OC寄存器0-7(Ti

32、mer Input Capture/Output Compare Registers 0-7,TC0-TC7)每个IC/OC通道都有一个16位的寄存器。对于IC通道,TCn用于锁存自由运行定时器/计数器的计数值(n=07)。对于OC通道,TCn用于存放比较值。读:任何时候。写:对于输出比较功能,任何时候可写。在输入捕捉期间,写这些寄存器没有意义或无效。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,3.定时器输入捕捉保持寄存器0-3(Timer Input Capture Holding Registers 0-3,TC0H-TC3H)TCnH寄存器被用来锁存带缓冲的IC通

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

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

35、定的计数器延迟。,表9.8 延迟计数器选择,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,6.输入控制覆盖寄存器(Input Control Overwrite Register,ICOVW)NOVWx:输入捕捉覆盖允许位1=不能由事件对相应的捕捉寄存器或保持寄存器写操作,即不允许被覆盖。0=当发生新的输入捕捉或锁存动作时,相应的捕捉寄存器或保持寄存器中的内容可以被覆盖。当IC寄存器的内容被读出或锁存到保持寄存器中时,该IC寄存器被清空。当保持寄存器内容被读出时,该保持寄存器被清空。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,7.输入控制系统控制寄存

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

37、stem Control Register,ICSYS)TFMOD:定时器标志置位模式位该位用来设置定时器中断标志产生的条件。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被清空时,输入捕捉事

38、件将首先用主定时器的内容更新相应的TCn。下一个事件发生时,TCn数据被传送到TCnH寄存器,TCn被更新,TFLG1中的CnF中断标志置位。因此,ICSYS寄存器中的TFMOD位与ICOVW寄存器一起使用,可以使TCn和TCnH捕捉到两个值后,定时器才产生中断,而不是每次捕捉产生一次中断。两次捕捉的结果分别存放在捕捉寄存器和保持寄存器中。在所有其它输入捕捉情况下,中断标志CnF由PTn上的有效外部事件置位。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,7.输入控制系统控制寄存器(Input Control System Control Register,ICSYS)PA

39、CMX:8位脉冲累加计数器最大计数值控制位1=当8位脉冲累加器等于$FF时,将不再继续递增,即进入饱和状态。$FF值表示计数值255。0=正常计数。当计数值达到$FF时,在下一个有效边沿,计数值将变为$00,并在此基础上计数值继续递增。BUFEN:IC缓冲器允许位1=输入捕捉保持寄存器和脉冲累加器保持寄存器允许,即允许使用缓冲。当LATQ=1时,向MCCTL寄存器中的ICLAT位写1,将使输入捕捉寄存器和脉冲累加器寄存器的内容锁存到其保持寄存器中。0=输入捕捉和脉冲累加器保持寄存器禁止。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,LATQ:输入控制锁存或队列模式允许位

40、1=输入捕捉锁存模式允许。输入捕捉通道和脉冲累加器工作在锁存模式,当模数递减计数器自然复0或将0写入到MDC计数寄存器MCCNT中时,产生锁存操作。当锁存事件发生时,IC寄存器和8位脉冲累加器中的内容被传送到其保持寄存器中。同时8位脉冲累加器被清0。0=输入捕捉队列模式允许。输入捕捉通道和脉冲累加器工作在队列模式,通过一个有效的输入引脚跳变,主定时器的值被存储到IC寄存器中。当发生新的捕捉时,IC寄存器中的值将被传送到其保持寄存器中,IC寄存器存入新的定时器值。为了使能IC保持寄存器和脉冲累加器保持寄存器,控制位BUFEN应该被置1,否则LATQ锁存模式被禁止。当LATQ和BUFEN同时置1时

41、,向MCCTL寄存器中的ICLAT位写1,将使输入捕捉寄存器和脉冲累加器寄存器的内容锁存到其保持寄存器中。,基于HCS12的嵌入式系统设计,9.3 输入捕捉功能及寄存器设置,8.定时器中断允许寄存器(Timer Interrupt Enable Register,TIE),C7IC0I:输入捕捉/输出比较“x”中断允许位1=允许输入捕捉/输出比较中断。0=禁止输入捕捉/输出比较中断。9.主定时器中断标志寄存器1(Main Timer Interrupt Flag 1,TFLG1)C7FC0F:输入捕捉/输出比较通道“n”标志位 1=输入捕捉/输出比较通道已经出现有效动作。0=上次清除标志以来,

42、输入捕捉/输出比较通道没有出现有效动作。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,【输出比较】用于产生程序控制下的输出动作或定时器事件,该动作或事件与自由运行计数器同步。【输出比较通道】由16位比较器和主定时器计数寄存器TCNT组成,与输入捕捉共享引脚、通道寄存器、中断逻辑等。当定时器通道配置成输出比较方式时,定时器通道寄存器TCn便作为输出比较寄存器,16位比较器将TCNT的计数值与比较寄存器中的内容与进行比较,若两者相等,便会在该通道的引脚上输出预设的电平,同时置位中断标志CnF。如果允许中断,在产生输出动作时,还会产生一个硬件定时中断。输出比较通道OC7具有特殊

43、的权限,可以废止其他OC通道的动作,直接决定各个输出通道的状态。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,9.4.1 ECT模块的输出比较功能如果定时器输入捕捉/输出比较选择寄存器TIOS的相应位TIOSn=1,则定时器通道IOCn被设置成输出比较(OC)通道(n=07),对应的引脚PTn强制为OC输出引脚。可以根据需要,计算出希望事件出现的时刻,对TCn寄存器赋值。当定时器系统控制寄存器TSCR1中的TEN=1时,自由运行定时器启动,16位比较器开始监视TCNT的计数值,一旦TCNT=TCn,则根据定时器控制寄存器TCTL1或TCTL2中的输出模式选择位OMn和输出

44、电平选择位OLn的设置,在对应引脚产生预定的动作。也可以设置OMn:OLn=00,切断输出控制逻辑与引脚的联系,禁止该通道输出。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,9.4.1 ECT模块的输出比较功能产生输出动作的同时,内部逻辑还将主定时器中断标志寄存器TFLG1中的中断请求标志CnF置1。如果定时器中断允许寄存器TIE中的CnI=1,且CCR中的控制位I=1,则转向TCn中断服务程序。也可以置CnI=0,通过软件查询标志CnF来确定是否出现OC事件。事件处理后,可以向TFLG1寄存器的对应位写入1,以清除中断请求标志CnF。为了响应随后的事件,需要向TCn寄存

45、器重赋定时常数,然后等待下一次事件发生。ECT模块允许通过设置定时器强制输出比较寄存器CFORC中的强制输出比较位FOCn(n=07),迫使某个或几个通道立即产生OMn和OLn所规定的输出比较动作,但强制输出比较不会置位通道标志位CnF。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,定时器通道7输出比较的输出控制部分具有特殊功能,在OC7通道比较成功后,可以“越权”强行设置通道OC0OC6的输出。TC7的输出比较不同于其他通道的输出比较,它能够设置在定时器任何一个I/O引脚上产生输出动作,并且能够设置在比较事件发生时将自由运行计数器复位。如果通道OC7的动作与通道OC0O

46、C6的动作同时发生,OC7通道对它们的强行设置具有更高的优先权。可以通过对输出比较7屏蔽寄存器OC7M的设置,使屏蔽位OC7Mn=1,OC7强行参与管理通道n的输出,但通道OC7对通道OC0OC6的管理仅限于使其引脚PT0PT6清0或置1,不能将引脚电平翻转。引脚的动作来自于输出比较7数据寄存器OC7D中的对应位OC7Dn定义的电平状态,必须事先通过程序设置。当定时器系统控制寄存器TSCR1中的控制位TCRE=1时,如果OC7通道比较成功,则定时器计数寄存器TCNT自动复位到$0000。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,TCTL1:,TCTL2:,表9.9 比

47、较结果输出动作设置,9.4.2 与输出比较功能相关的寄存器1.定时器控制寄存器1和2(Timer Control Registers 1and 2,TCTL1/TCTL2)TCTL1和TCTL2寄存器用来选择输出比较通道的输出模式和输出电平,即OC通道匹配时的动作,每两位管理一个通道。OMn:输出模式OLn:输出电平这8对控制位被译码后,用于规定通道OCn比较成功后产生的输出动作。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,【注意】OMn或OLn=1,与OCn相关的引脚PTn变成与OCn相连的输出,而与DDRT中的对应位无关。为了分别运行16位脉冲累加器A和B(PACA

48、和PACB),而不依赖于输入捕捉或输出比较7和0,必须设置相应的位IOSn=1,OMn=0和OLn=0。屏蔽寄存器OC7M中的OC7M7位或OC7M0位也必须清0。2.定时器强制输出比较寄存器(Timer Compare Force Register,CFORC)定时器强制输出比较寄存器CFORC用于将各个通道设置为强制输出比较,命令MCU直接产生输出比较动作。FOC7:0:通道7:0强制输出比较操作位。1=设置为强制输出比较,且立即在引脚PTn上产生预定的输出比较动作。0=禁止使用强制输出比较。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,3.输出比较7屏蔽寄存器(Ou

49、tput Compare 7 Mask Register,OC7M)当相应的TIOSn(n=06)位被设置成输出比较时,置位OC7Mn(n=06)将使相应的端口设置为输出端口,与DDRT中的对应位状态无关,但OC7Mn并不改变DDRT中对应位的状态。OC7Mn:输出比较7屏蔽位OC7Mn=1,通道n端口引脚输出受TC7输出比较事件的控制。OC7Mn=0,通道n端口引脚输出不受TC7输出比较事件的控制。【注意】当定时器通道7上发生输出比较事件时,在引脚PTn上便出现数据寄存器OC7D中相应位所定义的动作。OC7M比TCTL1或 TCTL2寄存器中控制位OMx和OLx设定的输出比较动作具有更高的优

50、先级。成功的通道7输出比较优于任意通道6:0的输出比较。,基于HCS12的嵌入式系统设计,9.4 输出比较功能及寄存器设置,4.输出比较7数据寄存器(Output Compare 7 Data Register,OC7D)OC7D寄存器用来定义定时器通道7输出比较事件发生时,各引脚的输出动作。若OC7Mn=1,当通道7输出比较成功时,OC7D中的对应位将被传送到定时器端口数据寄存器PORTT中。如果通道7输出比较成功的动作与通道60由OMn和OLn设定的输出比较动作发生在同一个周期,则前者覆盖后者,此时各个通道的动作将依赖于OC7D中各位的状态。,基于HCS12的嵌入式系统设计,9.4 输出比

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号