您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第9章_MC9S12XS128定时器模块及其应用实例
《MC9S12XS单片机原理及嵌入式系统开发》合肥工业大学吴晔,张阳,滕勤《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例本章内容9.1TIM模块概述9.2TIM模块结构和工作原理9.3TIM模块的自由运行计数器和定时器基本寄存器及设置9.4TIM模块的输入捕捉功能及寄存器设置9.5TIM模块的输出比较功能及寄存器设置9.6TIM模块的脉冲累加器功能及寄存器设置9.7TIM模块应用实例《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述定时器/计数器的特点:(1)可以有多种工作方式——定时方式或计数方式等。(2)计数器的模值可变——计数的最大值有一定的限制,取决于计数器的位数。计数的最大值限制了定时的最大值。(3)可以根据规定的定时或计数值,当定时时间到或到达计数终点时,发出中断请求信号,以便实现定时或计数控制。定时器——计数脉冲来自于系统工作时钟或经过分频后的系统时钟,即驱动脉冲为内部时钟信号;计数器——计数脉冲来自于芯片外部引脚,即驱动脉冲为外部时钟信号。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述嵌入式系统中定时器/计数器模块的作用:【产生波形输出】从MCU的I/O引脚向外输出一系列符合一定时序规范的周期信号。【测量输入波形】从MCU的I/O引脚上检测外部输入的一系列周期信号的脉宽、周期或频率。【统计脉冲或边沿个数】对端口引脚输入的、由外部事件产生的触发信号进行计数。【作为定时基准】产生内部定时,例如用于定时采样等。MC9S12XS128定时器模块称为TIM(TimerModule)。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例本节内容9.2TIM模块结构和工作原理9.2.1TIM模块结构9.2.2TIM模块工作原理9.2.3TIM模块寄存器9.2.4TIM模块中断系统《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.2TIM模块结构和工作原理9.2.1TIM模块结构【TIM组成】1个16位自由运行计数器8个16位输入捕捉/输出比较通道1个16位脉冲累加器【特点】模块时钟输入具有7位预分频器8个输入捕捉通道带有边沿检测器8个输出比较通道的输出极性可选择16位脉冲累加器带有边沿检测器《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.2TIM模块结构和工作原理9.2.2TIM模块工作原理【工作模式】停止(STOP)模式冻结(Freeze)模式等待(Wait)模式正常(Normal)模式【定时器模块框图】《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.2TIM模块结构和工作原理9.2.2TIM模块工作原理【详细功能框图】《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.2TIM模块结构和工作原理9.2.2TIM模块工作原理【自由运行计数器】TIM的核心——16位自由运行计数器,也称为自由运行主定时器。系统复位时——自由运行计数器为$0000。模块运行时——自由运行计数器从$0000~$FFFF循环递增计数。溢出复零时——置位中断标志。时钟源TIMCLK——PCLK,PACLK,PACLK/256,PACLK/65536。预分频器时钟PCLK——由总线时钟经过一个7位预分频器得到。预分频系数——8种。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.2TIM模块工作原理【输入捕捉】输入捕捉(InputCapture,IC):通过捕获自由运行计数器的计数值来检测外部事件和记录选定的输入信号跳变边沿的时间。当外部事件发生或信号发生变化时,指定的输入捕捉通道对应的引脚上产生一个规定的跳变沿(上升沿或下降沿)。定时器输入通道根据相应引脚上的电平变化,将当前自由运行计数器中的计数值捕捉到通道寄存器中。如果此时允许输入捕捉中断,则产生一次输入捕捉中断申请,利用中断服务程序可读取通道计数器数值,获得事件发生的时刻或信号变化的时刻。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.2TIM模块工作原理【输出比较】输出比较(OutputCompare,OC):输出比较功能利用编程实现特定时刻输出需要的电平,实现对外部电路的控制。用户根据需要设置输出比较寄存器值,自由运行计数器值与输出比较寄存器值每隔4个总线周期比较一次,当两者相等时,会在相应通道引脚上输出预先设定的电平。如果允许输出比较中断,则产生一次中断申请。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.2TIM模块工作原理【脉冲累加器】脉冲累加器(Pulseaccumulator,PA):通过检测相应引脚上的有效边沿统计脉冲个数。TIM模块只有一个16位的脉冲累加器,与PT7引脚复用,其工作方式有事件计数方式和门控时间累加方式两种。【计数方式】工作方式不同,脉冲累加器的计数脉冲的来源不同。★事件计数方式——计数脉冲来自输入引脚,脉冲累加器相当于普通计数器,即对有效边沿计数,有效边沿可设定为上升沿或下降沿。输入引脚上每产生一个有效边沿跳变,脉冲累加计数器的值加1。当脉冲累加器溢出时,将置位中断标志。如果允许脉冲累加器溢出中断,则产生一次中断申请。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.2TIM模块工作原理【脉冲累加器】【计数方式】★门控时间累加方式——门控信号来自输入引脚,时钟信号来自内部时钟PACLK,即总线时钟的64分频(ECLK/64),门控信号可设定为高电平有效或低电平有效。在有效电平期间,脉冲累加器对PACLK时钟信号进行计数。此时,脉冲累加器相当于可控计数器,可用来测量脉冲宽度。门控时间累加方式下,输入引脚上的有效电平将触发脉冲累加器开始对ECLK/64时钟进行计数,输入引脚上有效电平结束时的跳变沿将停止计数,同时置位中断标志。如果允许脉冲累加器中断,则产生一次中断申请。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.3TIM模块寄存器MC9S12XS128的TIM模块共有48个寄存器,其中9个是系统保留寄存器。TIM模块的内存映射表给出了这些寄存器的地址、名称和访问权限。对于每个寄存器,所列的地址是地址偏移量,每个寄存器的绝对地址是TIM模块的基本地址与每个寄存器地址偏移量之和。TIM模块的基本地址是0x0040。TIM模块的寄存器分为3类:控制寄存器、数据寄存器和状态寄存器。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.3TIM模块寄存器【控制寄存器】《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.3TIM模块寄存器【数据寄存器】【状态寄存器】《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.2.4TIM模块中断系统【ECT模块中断源】TIM模块共有11个中断源:1个自由运行定时器溢出中断8个定时器通道中断1个脉冲累加器输入中断1个脉冲累加器溢出中断TIM模块只检测中断并产生中断请求,不会对中断请求进行处理,用户根据需要自行编写中断服务程序处理相应的中断事件。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.1TIM模块概述9.1.3ECT模块的中断系统【ECT模块中断源】默认中断优先级次序:从上到下优先级为从高到低。写入HPRIO中的代码值实际上是中断矢量起始地址的低字节。《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例本节内容9.3TIM模块的自由运行计数器和定时器基本寄存器及设置9.3.1自由运行主定时器与时钟频率设置9.3.2TIM模块基本寄存器及设置《MC9S12XS单片机原理及嵌入式系统开发》第9章MC9S12XS128定时器模块及其应用实例9.3TIM模块的自由运行计数器和定时器基本寄存器及设置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.3TIM模块的自由运行计数器和定时器基本寄存器及设置9.3.1自由运行主定时器与时钟频率设置其中,PCLK称为P时钟,由自由运行计数器预分频器将总线时钟进行2k分频后得到(k=0~7),分频系数由定时器系统控制寄存器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.3TIM模块的自由运行计数器和定时器基本寄存器及设置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.3TIM模块的自由运行计数器和定时器基本寄存器及设置9.3.2TIM模块基本寄存器及设置【TIM模块的基本寄存器】定时器系统控制寄存器TSCR1和TSCR2——用于确定定时器是否工作,设置自由运行计数器预分频器的分频因子、是否允许定
本文标题:第9章_MC9S12XS128定时器模块及其应用实例
链接地址:https://www.777doc.com/doc-6385907 .html