MC9S12XS128定时器模块及其应用实例.ppt
MC9S12XS单片机原理及嵌入式系统开发,合肥工业大学吴 晔,张 阳,滕 勤,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,本章内容9.1 TIM模块概述9.2 TIM模块结构和工作原理 9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.4 TIM模块的输入捕捉功能及寄存器设置 9.5 TIM模块的输出比较功能及寄存器设置 9.6 TIM模块的脉冲累加器功能及寄存器设置 9.7 TIM模块应用实例,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述定时器/计数器的特点:(1)可以有多种工作方式定时方式或计数方式等。(2)计数器的模值可变计数的最大值有一定的限制,取决于计数器的位数。计数的最大值限制了定时的最大值。(3)可以根据规定的定时或计数值,当定时时间到或到达计数终点时,发出中断请求信号,以便实现定时或计数控制。定时器计数脉冲来自于系统工作时钟或经过分频后的系统时钟,即驱动脉冲为内部时钟信号;计数器计数脉冲来自于芯片外部引脚,即驱动脉冲为外部时钟信号。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述嵌入式系统中定时器/计数器模块的作用:【产生波形输出】从MCU的I/O引脚向外输出一系列符合一定时序规范的周期信号。【测量输入波形】从MCU的I/O引脚上检测外部输入的一系列周期信号的脉宽、周期或频率。【统计脉冲或边沿个数】对端口引脚输入的、由外部事件产生的触发信号进行计数。【作为定时基准】产生内部定时,例如用于定时采样等。MC9S12XS128定时器模块称为TIM(Timer Module)。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,本节内容9.2 TIM模块结构和工作原理9.2.1 TIM模块结构9.2.2 TIM模块工作原理9.2.3 TIM模块寄存器9.2.4 TIM模块中断系统,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.2 TIM模块结构和工作原理 9.2.1 TIM模块结构【TIM组成】1个16位自由运行计数器8个16位输入捕捉/输出比较通道1个16位脉冲累加器【特点】模块时钟输入具有7位预分频器8个输入捕捉通道带有边沿检测器8个输出比较通道的输出极性可选择16位脉冲累加器带有边沿检测器,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.2 TIM模块结构和工作原理 9.2.2 TIM模块工作原理【工作模式】停止(STOP)模式冻结(Freeze)模式等待(Wait)模式正常(Normal)模式【定时器模块框图】,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.2 TIM模块结构和工作原理 9.2.2 TIM模块工作原理【详细功能框图】,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.2 TIM模块结构和工作原理 9.2.2 TIM模块工作原理【自由运行计数器】TIM的核心16位自由运行计数器,也称为自由运行主定时器。系统复位时自由运行计数器为$0000。模块运行时自由运行计数器从$0000$FFFF循环递增计数。溢出复零时置位中断标志。时钟源TIMCLK PCLK,PACLK,PACLK/256,PACLK/65536。预分频器时钟PCLK由总线时钟经过一个7位预分频器得到。预分频系数 8种。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.2 TIM模块工作原理【输入捕捉】输入捕捉(Input Capture,IC):通过捕获自由运行计数器的计数值来检测外部事件和记录选定的输入信号跳变边沿的时间。当外部事件发生或信号发生变化时,指定的输入捕捉通道对应的引脚上产生一个规定的跳变沿(上升沿或下降沿)。定时器输入通道根据相应引脚上的电平变化,将当前自由运行计数器中的计数值捕捉到通道寄存器中。如果此时允许输入捕捉中断,则产生一次输入捕捉中断申请,利用中断服务程序可读取通道计数器数值,获得事件发生的时刻或信号变化的时刻。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.2 TIM模块工作原理【输出比较】输出比较(Output Compare,OC):输出比较功能利用编程实现特定时刻输出需要的电平,实现对外部电路的控制。用户根据需要设置输出比较寄存器值,自由运行计数器值与输出比较寄存器值每隔4个总线周期比较一次,当两者相等时,会在相应通道引脚上输出预先设定的电平。如果允许输出比较中断,则产生一次中断申请。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.2 TIM模块工作原理【脉冲累加器】脉冲累加器(Pulse accumulator,PA):通过检测相应引脚上的有效边沿统计脉冲个数。TIM模块只有一个16位的脉冲累加器,与PT7引脚复用,其工作方式有事件计数方式和门控时间累加方式两种。【计数方式】工作方式不同,脉冲累加器的计数脉冲的来源不同。事件计数方式计数脉冲来自输入引脚,脉冲累加器相当于普通计数器,即对有效边沿计数,有效边沿可设定为上升沿或下降沿。输入引脚上每产生一个有效边沿跳变,脉冲累加计数器的值加1。当脉冲累加器溢出时,将置位中断标志。如果允许脉冲累加器溢出中断,则产生一次中断申请。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.2 TIM模块工作原理【脉冲累加器】【计数方式】门控时间累加方式门控信号来自输入引脚,时钟信号来自内部时钟PACLK,即总线时钟的64分频(ECLK/64),门控信号可设定为高电平有效或低电平有效。在有效电平期间,脉冲累加器对PACLK时钟信号进行计数。此时,脉冲累加器相当于可控计数器,可用来测量脉冲宽度。门控时间累加方式下,输入引脚上的有效电平将触发脉冲累加器开始对ECLK/64时钟进行计数,输入引脚上有效电平结束时的跳变沿将停止计数,同时置位中断标志。如果允许脉冲累加器中断,则产生一次中断申请。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.3 TIM模块寄存器MC9S12XS128的TIM模块共有48个寄存器,其中9个是系统保留寄存器。TIM模块的内存映射表给出了这些寄存器的地址、名称和访问权限。对于每个寄存器,所列的地址是地址偏移量,每个寄存器的绝对地址是TIM模块的基本地址与每个寄存器地址偏移量之和。TIM模块的基本地址是0 x0040。TIM模块的寄存器分为3类:控制寄存器、数据寄存器和状态寄存器。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.3 TIM模块寄存器【控制寄存器】,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.3 TIM模块寄存器【数据寄存器】,【状态寄存器】,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.2.4 TIM模块中断系统【ECT模块中断源】TIM模块共有11个中断源:1个自由运行定时器溢出中断8个定时器通道中断1个脉冲累加器输入中断1个脉冲累加器溢出中断TIM模块只检测中断并产生中断请求,不会对中断请求进行处理,用户根据需要自行编写中断服务程序处理相应的中断事件。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.1 TIM模块概述9.1.3 ECT模块的中断系统【ECT模块中断源】默认中断优先级次序:从上到下优先级为从高到低。写入HPRIO中的代码值实际上是中断矢量起始地址的低字节。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,本节内容9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置9.3.1 自由运行主定时器与时钟频率设置9.3.2 TIM模块基本寄存器及设置,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.1 自由运行主定时器与时钟频率设置16位自由运行主定时器的工作频率决定输入捕捉/输出比较的分辨能力。定时器计数寄存器TCNT对多路转换器输出的时钟信号进行计数,当计数值从$FFFF溢出变为$0000时,主定时器中断标志寄存器TFLG2中的中断标志TOF置位,如果此时定时器系统控制寄存器TSCR2中的中断允许位TOI=1,将向CPU申请中断。设置TOI=0将禁止自由运行计数器溢出中断,向TFLG2中写入$80将清除TOF标志。自由运行主定时器的时钟TIMCLK由4选1多路转换器提供,时钟源的切换由16位脉冲累加器控制寄存器 PACTL中的CLK1和CLK0确定,时钟可以是PCLK、PACLK、PACLK/256、PACLK/65536。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.1 自由运行主定时器与时钟频率设置其中,PCLK称为P时钟,由自由运行计数器预分频器将总线时钟进行2k 分频后得到(k=07),分频系数由定时器系统控制寄存器TSCR2中的PR2、PR1和PR0三位确定(此时,要求定时器系统控制寄存器TSCR1中的PRNT=0,即定时器为普通定时器)。PACLK是16位脉冲累加器的时钟,频率为ECLK/64。为了提高定时器性能,TIM模块增加一个精确定时器分频因子选择寄存器PTPSR,通过定时器系统控制寄存器TSCR1中的PRNT位选择是否使用PTPSR寄存器。当TSCR1寄存器中的PRNT=1(定时器为精确定时器)时,PTPSR寄存器的8位可以对主定时器的预分频值进行附加设置,用来扩大定时范围。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.1 自由运行主定时器与时钟频率设置定时器系统控制寄存器TSCR1中的TEN位是TIMCLK时钟的总开关。当TEN=0时,自由运行主定时器的时钟被关断,定时器停止工作,但并不影响脉冲累加器在事件计数方式下的正常工作。输出比较通道7(OC7)对自由运行主定时器具有特殊的控制功能。当定时器系统控制寄存器TSCR2中的控制位TCRE=1时,如果OC7比较成功,则定时器计数寄存器TCNT自动复位到$0000。这样可利用OC7实现TCNT在$0000$xxxx($FFFF)之间的循环计数,从而在保持较高时钟频率(高分辨力)前提下,缩短计数周期,以满足特殊需要。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】定时器系统控制寄存器TSCR1和TSCR2用于确定定时器是否工作,设置自由运行计数器预分频器的分频因子、是否允许定时器溢出中断、是否允许通过通道7输出比较事件复位定时器计数寄存器TCNT。定时器计数寄存器TCNT自由运行主定时器的数据寄存器,用来对TIMCLK时钟计数。主定时器中断标志寄存器TFLOG2表示主定时器是否产生溢出。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】1.定时器系统控制寄存器1(Timer System Control Register 1,TSCR1)【作用】用于确定定时器是否启动和等待、冻结模式下的行为、标志清除方式等。TEN:定时器使能位1=允许定时器正常运行。0=禁止主定时器(包括计数器),可用于降低功耗。TEN控制着定时器的时钟,要使用TIM模块的输入捕捉/输出比较功能,必须将TEN置位。如果由于任何原因导致定时器未被激活,则脉冲累加器没有ECLK/64时钟,因为ECLK/64时钟由定时器预分频器产生,此时脉冲累加器将不能工作于门控时间累加方式。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】1.定时器系统控制寄存器1(Timer System Control Register 1,TSCR1)TSWAI:等待模式下TIM模块停止位1=当MCU处于等待模式时,禁止定时器模块。定时器中断不能使MCU退出等待模式。0=在等待期间允许TIM模块继续运行。TSWAI还影响脉冲累加器。TSFRZ:冻结模式下定时器和模数计数器停止位1=只要MCU处于冻结模式,禁止定时器和模数计数器。0=冻结模式下允许定时器和模数计数器继续运行。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】1.定时器系统控制寄存器1(Timer System Control Register 1,TSCR1)TFFCA:快速清除定时器所有标志位1=定时器标志快速清除方式。对于TFLG1寄存器,读输入捕捉或写输出比较通道($10$1F)将清除相应通道的标志CnF。对于TFLG2寄存器,对TCNT寄存器的任何访问将清除TOF标志。对PACNT寄存器的任何访问将清除PAFLG寄存器中的PAOVF和PAIF标志。【优点】不需要单独的清零操作,节省了软件的额外开销。需要特别注意的是,防止由于无意的访问导致标志被意外清除。0=定时器标志正常清除方式。允许清除定时器标志,使其正常运行。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】1.定时器系统控制寄存器1(Timer System Control Register 1,TSCR1)PRNT:精确定时器设置位0=使能普通定时器。TCSR2寄存器的PR0、PR1和PR2位用于计数器的分频因子选择。1=使能精确定时器。PTPSR寄存器的所有位被用于精确定时器的分频因子选择。复位后该位只能写一次。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】2.定时器系统控制寄存器2(Timer System Control Register 2,TSCR2)【作用】用来设置TIM模块自由运行计数器预分频器的分频因子、是否允许定时器溢出中断、是否允许通过通道7输出比较事件复位定时器计数寄存器TCNT。TOI:定时器溢出中断允许位1=允许定时器溢出中断,当TOF标志置位时,允许请求硬件中断。0=禁止定时器溢出中断。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】2.定时器系统控制寄存器2(Timer System Control Register 2,TSCR2)TCRE:定时器计数器复位允许该位用来设置是否允许通过成功的输出比较7事件复位定时器/计数器。这种工作模式类似于递增计数模数计数器。1=通过成功的输出比较7复位自由运行计数器。0=禁止计数器复位,计数器自由运行。如果TC7=$0000且TCRE=1,TCNT一直保持$0000。如果TC7=$FFFF且TCRE=1,当TCNT从$FFFF复位到$0000时,TOF将不会置位。【注意】如果TCRE=1且TC70,TCNT的循环周期将是TC7预分频计数器宽度+1个总线时钟。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】2.定时器系统控制寄存器2(Timer System Control Register 2,TSCR2)PR2、PR1、PR0:定时器预分频器选择位当PSCR1中PRNT=0时,这3位规定了插入在总线时钟与主定时器计数器之间2分频的级数。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】3.精确定时器预分频因子选择寄存器(Precision Timer Prescaler Select Register,PTPSR)PTPS7:0:精确定时器预分频选择位。这8位规定了主定时器预分频器的分频比率。只有当TSCR1寄存器中PRNT=1时,该寄存器才有效。预分频因子可跟据PTPS7:0的值和PRNT位状态,计算公式:预分频因子=PTPS7:0+1,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】4.定时器计数寄存器(Timer Count Register,TCNT)16位主定时器是一个递增计数器,不停地对时钟信号TIMCLK进行计数,定时器计数寄存器TCNT的内容即为计数结果。TCNT寄存器值的访问要求在一个时钟周期内完成,且应该按字访问,分别读/写操作高字节寄存器和低字节寄存器可能会产生不同的结果。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.3.2 TIM模块基本寄存器及设置【TIM模块的基本寄存器】5.主定时器中断标志寄存器2(Main Timer Interrupt Flag 2,TFLG2)TFLG2寄存器只有一个标志位TOF,表示何时出现自由运行定时器的溢出中断条件。当TSCR1寄存器中的TEN=1或PACTL寄存器中的PAEN=1时,TFLG2寄存器的第7位写“1”操作将清零,写“0”操作无效。TOF:主定时器溢出标志当16位自由运行定时器从$FFFF溢出变为$0000时,该位置1。向该位写1将清除TOF标志。TOF=1时,如果允许溢出中断(TSCR2寄存器中TOI=1),则将引发中断。在禁止中断的情况下,也可以通过软件查询该标志来进行相应的处理。如果TSCR1寄存器中的TFFCA=1,对TCNT的任何访问将清零TFLG2寄存器。如果TC7=$FFFF且TSCR1寄存器中的TCRE=1,当TCNT从$FFFF溢出复零时,TOF将不会置位。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,本节内容9.4 TIM模块的输入捕捉功能及寄存器设置 9.4.1 TIM模块输入捕捉功能 9.4.2 与输入捕捉功能相关的寄存器及设置,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 S12XS系列MCU的TIM具有8个输入捕捉/输出比较(IC/OC)通道IOC0IOC7,对应于端口PT0PT7。由于输入捕捉与输出比较通道共享引脚、通道寄存器和中断逻辑,因此,每个通道同一时刻只能启用其中一个功能,可以通过设置定时器输入捕捉/输出比较选择寄存器TIOS中的IOSn位,选择输入捕捉/输出比较功能。9.4.1 TIM模块输入捕捉功能 输入捕捉功能通过捕获自由运行计数器来监视外部事件。当通道设置为输入捕捉功能时,自由运行定时器启动后,边沿检测器开始监视引脚事件,一旦引脚电平出现设定的有效跳变,便将自由运行计数器寄存器TCNT的当前值捕捉到捕捉寄存器TCn(n=07)。有效跳变边沿可以是上升沿、下降沿或任意跳变,由定时器控制寄存器TCTL3和TCTL4中的EDGxB和EDGxA位确定。也可设置位EDGxB:EDGxA=00,关闭边沿检测器,停止通道捕捉。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 9.4.1 TIM模块输入捕捉功能由于同步电路原因,引脚输入的最小脉宽要求大于2个总线时钟周期。捕捉完成后,将置位主定时器中断标志寄存器TFLG1中的中断请求标志位CnF,如果定时器中断允许寄存器TIE中的中断允许位CnI=1,且CCR寄存器中的控制位I=1,则产生一次输入捕捉中断申请,转向TCn中断服务程序。如果不采用中断方式响应引脚事件,可以置CnI=0,通过软件查询标志位CnF来进行处理。各个IC/OC通道可以单独发出中断请求,或关闭中断。事件处理完成后,通过向TFLG1寄存器的对应位写入1,以清除标志CnF。TIM模块输入捕捉通道中断标志位C0FC7F的置位条件如图所示。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 9.4.1 TIM模块输入捕捉功能S12XS系列MCU的8路输入捕捉通道都不带缓冲寄存器,也没有覆盖控制寄存器,因此,发生一次输入捕捉事件后,TC寄存器会立即写入新值。如果发生新的捕捉事件时,上一次的数值还没有被读出,上一次捕捉的值将被新值所覆盖。另外,TIM的输入捕捉没有延迟计数器,不可以通过延迟给定的时间间隔产生输出脉冲的方法来避免窄脉宽的影响。S12XS系列MCU的IC模块事件触发信号只能来自于本通道的输入引脚。当输入引脚出现有效事件时,引脚电平变化时刻主定时器的计数值将被捕获到相应通道的捕捉寄存器中。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 与输入捕捉功能相关的寄存器及设置 1.定时器输入捕捉/输出比较选择寄存器(Timer Input Capture/Output Compare Select,TIOS)【作用】用于指定各通道的功能,即配置为输入捕捉或输出比较通道。IOS7:0:输入捕捉或输出比较通道配置位1=相应的通道用作输出比较。0=相应的通道用作输入捕捉。TIM模块各通道设置成输入捕捉通道时,具有内部上拉功能;设置成输出比较通道时,具有降功率驱动功能。但上电后处于关闭状态,可以根据需要启用。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 与输入捕捉功能相关的寄存器及设置2.定时器IC/OC寄存器0-7(Timer Input Capture/Output Compare Registers 0-7,TC0-TC7)每个IC/OC通道都有一个16位的寄存器。对于IC通道,TCn用于锁存自由运行定时器/计数器的计数值(n=07)。对于OC通道,TCn用于存放比较值。各个寄存器中的位取决于相应通道TIOS寄存器中的位,当相应的输入捕捉边沿检测器检测到规定的边沿时,这些寄存器用于锁存自由运行计数器的值;输出比较时用于触发输出动作。,图9.14 定时器输入捕捉/输出比较寄存器,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,与输入捕捉功能相关的寄存器及设置3.定时器控制寄存器3和4(Timer Control Registers 3 and 4,TCTL3/TCTL4)【作用】用于设置对应通道的输入捕捉极性。EDGnB,EDGnA:输入捕捉边沿控制位这8对控制位对输入捕捉边沿检测电路进行设置,控制位的设置如表9-8所示。当EDGnB=EDGnA=0时,第n通道的IC功能与输入引脚断开。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,与输入捕捉功能相关的寄存器及设置4.定时器中断使能寄存器(Timer Interrupt Enable Register,TIE)【作用】TIE寄存器用来对定时器中断进行管理,包含8个中断屏蔽位,与主定时器中断标志寄存器TFLG1中的标志位一一对应。如果TIE中的控制位被清零,禁止相应的中断标志CnF引起硬件中断。如果置位,允许相应的中断标志引起中断。C7IC0I:输入捕捉/输出比较“n”中断使能位1=允许输入捕捉/输出比较中断。0=禁止输入捕捉/输出比较中断。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.4 TIM模块的输入捕捉功能及寄存器设置 与输入捕捉功能相关的寄存器及设置5主定时器中断标志寄存器1(Main Timer Interrupt Flag 1,TFLG1)【作用】表示输入捕捉/输出比较通道何时出现中断条件,当发生输入捕捉/输出比较事件时,这些位被置位。C7FC0F:输入捕捉/输出比较通道“n”标志位1=输入捕捉/输出比较通道已经出现有效动作。0=上次清除标志以来,输入捕捉/输出比较通道没有出现有效动作。向标志寄存器中的某一位写一个1,将清除该标志。当系统控制寄存器TSCR1中的控制位TFFCA=1时,读输入捕捉通道或写输出比较通道TC0TC7将使相应的通道标志CnF清零。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,本节内容9.5 TIM模块的输出比较功能及寄存器设置 9.5.1 TIM模块输出比较功能 9.5.2 与输出比较功能相关的寄存器及设置,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置输出比较用于产生程序控制下的输出动作或定时器事件,该动作或事件与自由运行计数器同步。S12XS MCU的输出比较通道由16位比较器和主定时器计数寄存器TCNT组成,与输入捕捉共享引脚、通道寄存器、中断逻辑等。当定时器通道配置成输出比较方式时,定时器通道寄存器TCn便作为输出比较寄存器,16位比较器将TCNT的计数值与比较寄存器中的内容与进行比较,若两者相等,便会在该通道的引脚上输出预设的电平,同时置位中断标志CnF。在产生输出动作时,如果允许中断,还会产生一个硬件定时中断。输出比较通道OC7具有特殊的权限,可以废止其他OC通道的动作,直接决定各个输出通道的状态。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.1 TIM模块输出比较功能 如果定时器输入捕捉/输出比较选择寄存器TIOS的相应位TIOSn=1,则定时器通道IOCn被设置成输出比较(OC)通道(n=07),对应的引脚PTn强制为OC输出引脚。可以根据需要,计算出希望事件出现的时刻,对TCn寄存器赋值。当定时器系统控制寄存器TSCR1中的TEN=1时,自由运行定时器启动,16位比较器开始监视TCNT的计数值,一旦TCNT=TCn,则根据寄存器TCTL1或TCTL2中的输出模式选择位OMn和输出电平选择位OLn的设置,在对应引脚产生预定的动作,动作包括清0、置1和翻转。也可以设置OMn:OLn=00,切断输出控制逻辑与引脚的联系,禁止该通道输出。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.1 TIM模块输出比较功能产生输出动作的同时,内部逻辑还将主定时器中断标志寄存器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所规定输出比较动作,但强制输出比较不会置位通道标志位CnF。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.1 TIM模块输出比较功能定时器通道7输出比较的输出控制部分具有特殊功能,在OC7通道比较成功后,可以“越权”强行设置通道OC0OC6的输出。TC7的输出比较不同于其他通道的输出比较,它能够设置在定时器任何一个I/O引脚上产生输出动作,并且能够设置在比较事件发生时将自由运行计数器复位。如果通道OC7的动作与通道OC0OC6的动作同时发生,OC7通道对它们的强行设置具有更高的优先权。设置输出比较7屏蔽寄存器OC7M的OC7Mn=1,则OC7强行参与管理通道OC0OC6 的输出,但仅限于使其引脚PT0PT6清0或置1,不能将引脚电平翻转,引脚的动作来自于输出比较7数据寄存器OC7D中的对应位OC7Dn定义的电平状态,必须事先通过程序设置。当定时器系统控制寄存器TSCR1中的控制位TCRE=1时,如果OC7通道比较成功,则定时器计数寄存器TCNT自动复位到$0000。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 1.定时器控制寄存器1和2(Timer Control Registers 1and 2,TCTL1/TCTL2)【作用】用来选择输出比较通道的输出模式和输出电平,即OC通道匹配时的动作,包括切断OC通道与输出引脚的联系。两个寄存器共16位,每两位管理一个通道。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 1.定时器控制寄存器1和2(Timer Control Registers 1and 2,TCTL1/TCTL2)OMn:输出模式OLn:输出电平这8对控制位被译码后,用于规定通道OCn比较成功后产生的输出动作。OMn或OLn=1,与OCn相关的引脚PTn变成与OCn相连的输出,而与DDRT中的对应位无关。OCn、OLn的组合与输出动作的关系如表9.9所示。【注意】为了让定时器端口产生OMn和OLn位规定的输出动作,OC7M寄存器中的相应位应被清0。【注意】对于由OCn驱动的输出,输出比较引脚断开寄存器OCPD中的OCPDn位必须应被清0。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5.2 与输出比较功能相关的寄存器及设置 1.定时器控制寄存器1和2(Timer Control Registers 1and 2,TCTL1/TCTL2)当OMn=0和OLn=0时,输出比较与引脚断开,这使得该引脚可作为GPIO,输出比较可用来产生内部定时信号。为了使脉冲累加器的运行不依赖于通道7的输入捕捉或输出比较,用户必须设置相应位IOSn=1、OMn=0和OLn=0。OC7M寄存器中的OC7M7位也应清0。为了在定时器端口上用OM7和OL7使能输出动作,OC7M寄存器中的OC7M7位也必须清0。这些位的设置参见表9-10。【注】(1)表中IOS7和IOSn应该设置为1;(2)IOSn是TIOS寄存器的n位,OC7Mn是寄存器OC7M的n位。(3)TCn是定时器输入捕捉/输出比较寄存器,IOCn是通道n。(4)OMn/OLn是寄存器TCTL1/TCTL2的n位,OC7Dn是寄存器OC7D中的n位。(5)IOCn=OC7Dn+OMn/OLn表示OC7事件和OCn事件都将改变通道n的值。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 2.定时器强制输出比较寄存器(Timer Compare Force Register,CFORC)【作用】用于将各个通道设置为强制输出比较,命令MCU直接产生输出比较动作。用相应数据位置1对该寄存器进行写操作,立即产生编程为输出比较“n”的动作。除了不置位中断标志以外,产生的动作如同TCn寄存器刚刚与TCNT比较成功一样。FOC7:0:通道7:0强制输出比较操作位。1=设置为强制输出比较,且立即在引脚PTn上产生预定的输出比较动作。0=禁止使用强制输出比较。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 2.定时器强制输出比较寄存器(Timer Compare Force Register,CFORC)如果将1写入控制位FOCn,则对应引脚立即出现寄存器TCTL1或 TCTL2中控制位OMn和OLn所规定的输出比较动作,与输出比较成功(TCNT与TCn内容相等)所产生的动作完全一致,区别只是不置位中断请求标志CnF。【注意】通道7输出比较成功优于任何通道6:0的输出比较。【注意】如果任意通道输出比较成功的同时,发生强制输出比较,那么强制输出比较动作将优先发生,且不会置位中断标志位CnF。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 3.输出比较7屏蔽寄存器(Output Compare 7 Mask Register,OC7M)通道7的OC具有特殊的地位,通道7输出比较成功时,可以直接改变其他7个输出引脚的状态,并覆盖各个引脚原来设定的输出比较动作。OC7M寄存器决定哪些通道将处于通道OC7的管理之下,寄存器中的8个控制位与端口T数据寄存器PORTT的各位一一对应。OC7Mn:输出比较7屏蔽位OC7Mn=1,通道n端口引脚输出受通道7输出比较事件的控制。OC7Mn=0,通道n端口引脚输出不受通道7输出比较事件的控制。,MC9S12XS单片机原理及嵌入式系统开发,第9章 MC9S12XS128定时器模块及其应用实例,9.5 TIM模块的输出比较功能及寄存器设置9.5.2 与输出比较功能相关的寄存器及设置 3