定时器与定时器实验_第1页
定时器与定时器实验_第2页
定时器与定时器实验_第3页
定时器与定时器实验_第4页
定时器与定时器实验_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 定时器计数器及其应用 第1节、定时器/计数器原理、结构及其管脚 第2节、8位定时器模块MTIM结构及应用 第3节、16位定时器TPM结构及应用 第4节、TPM应用于PWM原理及实践第1节、定时器/计数器原理 、结构及其管脚1、基础知识 定时器中的核心部分计数器不能预置某个数值,而且是只读的计数器不能预置某个数值,而且是只读的,写入任何数值没有影响(8位MTIM)或会导致计数器清零(16位的TPM)。采用可读可写的辅助寄可读可写的辅助寄存器存器,与主计数器数值相等时产生匹配事件。可以完成定时、输入捕捉、输出比较、PWM等功能。对于PWM,匹配事件发生时对应一种状态(决定脉宽),而计数器溢

2、出对应另一种状态(决定周期)。 MC9S08QG8系列单片机的定时器分成两大模块两大模块,一个模块完全由8位的计数器、辅助寄存器、状态与控制寄存器、配置寄存器组成,被称为8-BIT MAIN TIMER (MTIM)。该模块的状态与控制寄存器中包含了溢出标志、中断控制和起、停控制位,使用起来比较简单。由于该模块除了输入计数脉冲可以来自外部管脚之外,没有其它管脚与之关联,因此没有输入捕捉、输出比较与PWM功能,只有软件定时能力。 另一个模块就是具有全功能的16BIT的定时器/脉宽调制器模块TPM(Timer/Pulse-Width Modulator),该定时器主计数器与辅助寄存器都是16位的,

3、对于8位的单片机来说,16位寄存器一般会分成两个8位,而且读、写16位的寄存器也会引入锁定与缓冲等策略,以保证每次读写16位寄存器中的某个8位寄存器时,不会发生数值更新。对于全功能的TPM来说,只有一套主计数器的前提下,可以有多套输入捕捉、输出比较或PWM通道(比如MC9S08QG8系列单片机就有2个通道),这些通道共同拥有主计数器,而且这些通道的工作模式可以不一样,每个通道拥有自己的16BIT辅助寄存器、中断允许与标志、输入捕捉与输出比较工作模式设置寄存器。有的单片机称这种一个主计数器配合多个不同工作模式的定时器通道的结构,为可编程计数器阵列(PCA)。第1节、定时器/计数器原理 、结构及其

4、管脚1、基础知识 PTA0/KBIP0/TPMCH0/ADP0/ACMP+8-BIT MODULO TIMER MODULE(MTIM)16-BIT TIMER/PWM MODULE(TPM)PTAPTBPTA5/IRQ/TCLK/RESETPTB5/TPMCH1/SSTPMCH1TPMCH0TCLK定时器与外部管脚的关系= Fbus/48位定时器-MTIM 八位定时器模块的结构MTIM结构 时钟源选择 预分频器 8位计数器MTIMCNT 8位比较器 8位模寄存器MTIMMOD MTIM状态与控制寄存器(MTIMSC)MTIM时钟配置寄存器(MTIMCLK)总线时钟系统固定时钟PTA5上升与下

5、降沿第2节、8位定时器模块MTIM结构及应用MTIM 寄存器MTIMSC7-TOF定时器溢出标志定时器溢出标志当计数器计数到与辅助寄存器MTIMMOD数值相等,并翻转到0时,该只读溢出标志TOF会被置“1”。该溢出标志的清除方法有三种:当TOF为“1”时,读MTIMSC,并给TOF重新写入“0”; 写“1” 给TRST; 1.给辅助寄存器MTIMMOD写入任何数值。6-TOIE溢出中断允许溢出中断允许 如果该位设置为“1”,则当TOF置位时会产生中断。当TOF为“1”时不要设置该允许位,一般的做法是先清除TOF,然后再设置TOIE。即使该位没有设置,还是可以通过软件查询TOF的方法使用定时器的

6、。5-TRST定时器复位设置定时器复位设置该位只能写入,读出总为0,而且写0没有影响,写1时导致计数器为0 x00,同时TOF也清零。4-TSTP定时器停止设置定时器停止设置当该位置“1”,会使计数器停止计数,计数数值保持不变,当清除该位时,计数器从当前数值继续计数。3:0未使用,读出总为0MTIM 寄存器MTIMCLK7:6未使用,读出总为05:4CLKS计数器时钟源选择计数器时钟源选择 通过该两位设置,在四种时钟源中选择其一,改变时钟源时不会影响计数器计数,时钟源切换后,计数器会在新的时钟下继续计数。00选择总线时钟选择总线时钟(BUSCLK);01固定频率时钟(XCLK);10外部时钟T

7、CLK的下降沿;11外部时钟TCLK的上升沿。3:0PS时钟预分频器时钟预分频器 该4位设置计数器输入时钟的预分频数,改变分频数不影响计数器计数,分频数切换后,计数器会在新的分频数下计数。0000 分频数为1; 0001 分频数为2; 0010 分频数为4;0011 分频数为8; 0100 分频数为16; 0101 分频数为32;0110 分频数为64; 0111 分频数为128; 大于等于1000 分频数为256。MTIM 寄存器MTIM计数器(MTIMCNT)该计数器为只读,写入任何数值对其没有影响写入任何数值对其没有影响,复位时为0 x00。MTIM模寄存器(MTIMMOD) 该8位可读

8、写的寄存器保存的数值是计数器计数的最大值,当计数器计数到该最大值时会翻转到0 x00,同时设置TOF标志。如果给该寄存器写入数值0 x00,会导致计数器成为一个没有约束的自由运行的计数器,给MTIMMOD写入数值会导致计数器回0 x00,而且溢出标志TOF也会清零。MTIMMOD复位时为0 x00。MTIM MTIM使用总结 8位定时器的核心计数器MTIMCNT有三种工作模式:停止、自由运行、根据模数值运行。刚复位后计数器是停止的,数值跟模寄存器MTIMMOD一样,都为0 x00,如果此时启动定时器,计数器会进入自由运行模式,如果给MTIMMOD寄存器写入非0数值,则计数器会根据模数值运行。复

9、位后,总线时钟会作为定时器的缺省时钟源,而且分频数也为1,此时只要清除状态与控制寄存器MTIMSC中的停止位( TSTP ),就会使计数器进入自由运行模式。 定时器模寄存器MTIMMOD的存在,使得定时器可以将0 x01到0 xFF中的任何数值作为定时器溢出最大计数数值。 当溢出标志TOF置位时,清除该标志分两步,第一步第一步读取状态与控制寄存器MTIMSC,第二步第二步给TOF写0。如果在这两步之间有溢出事件发生,清除动作取消,溢出标志TOF保持置位状态。对TOF的清除也可以通过对TRST写“1”或者对MTIMMOD写入任何数值。 可以设置MTIMSC寄存器中的TOIE位,以允许TOF中断。

10、当TOF为“1”时,不要设置TOIE,一定要先清除TOF,后设置中断允许。MTIM MTIM使用范例1在中断允许之前添加初始化PTBDD = 0 xFF;PTBD = 0 xFF;SOPT1 =0 x03;MTIMSC = 0 x70; /IE,RST,STOPMTIMCLK = 0 x08; /Fbus/256MTIMMOD = 125; /400000 = 256*125*125MTIM_CNT = 125;/定义一个全局变量,软分频MTIMSC = 0 x40; /START2添加中断服务子程序interrupt 12 void MTIM_ISR() if(-MTIM_CNT=0) MT

11、IM_CNT = 125; /自己的操作; MTIMMOD = 125; /清除标志 3添加全局变量byte MTIM_CNT;0 x003C-3C-MTIMSC0 x003D-MTIMCLK0 x003E-MTIMCNT0 x003F-MTIMMOD定时器/计数器到底有什么用?只用于产生固定时间间隔吗?一定要使用定时器中断吗?电机测速高速时:低速时:高速时测速有没有误差,误差从哪儿来?怎么解决波形输出时有没有误差,误差从哪儿来?怎么解决TPM 1、结构16bit第3节、16位定时器TPM结构及应用2、TPM 特点 与MTIM类似,有时钟源选择、预分频器设置、主计数器、比较器、辅助(模)寄存器

12、、状态与控制寄存器等。与8位定时器不同的地方主要有:1没有启停控制位,但时钟源选择上的4种可能性中,只有3种情况对应有脉冲输入,当时钟选择控制位CLKSB:A为00时,没有任何时钟输入,定时器将处于停止状态;2除了有主计数器、比较器、模寄存器外,还有两个独立的定时器通道,这两个通道可以有对应的外部管脚TPMCH0和TPMCH1(不受方向与数据寄存器的影响不受方向与数据寄存器的影响),每个通道还包含比较器、模寄存器、输入捕捉与输出比较模式设置寄存器,还有独立的中断允许设置与中断标志位;3主计数器、主比较器以及另外的两个通道的比较器、模寄存器都是16位的; 16位TPM的核心部件仍然是一个16-b

13、it的计数器,软件可以随时读取该计数器的数值,而不影响计数器的工作。但对计数器进行写入操作时会导致计数器复位,该计数器的三种工作模式是:自由计数器自由计数器:此时模寄存器TPMMODH:TPMMODL为0 x0000或者是0 xFFFF,计数器总是进行加1动作,当达到0 xFFFF时回0 x0000,产生溢出动作,设置标志。加法计数器加法计数器:如果模寄存器既不是0 x0000,也不是0 xFFFF,则此时计数器加1直到与模寄存器相等时,产生溢出动作,设置标志,计数器回0 x00000。加法计数器可以为2个独立通道处于输入捕捉、输出比较以及沿对齐以及沿对齐PWM工作模式下,提供时钟参考。加减计

14、数器加减计数器:当TPM设置为中间对齐的PWM工作模式时,计数器会有加1和减1的动作。每当计数器加1到与模寄存器数值相等时就开始减1,减到0 x0000时又继续加1,如此循环。每当到达模寄存器数值并开始减1时,产生溢出动作,设置标志。3、TPM 寄存器16位定时器TPM包含的寄存器有: 一个8位的状态与控制寄存器TPMSC; 一个16位的计数器(TPMCNTH:TPMCNTL); 一个16位的模寄存器(TPMMODH:TPMMODL)。另外,2个独立通道中,每个通道包含的寄存器有: 一个8位的状态与控制寄存器TPMCnSC,n表示0或1; 一个16位的通道辅助寄存器(TPMCnVH:TPMCn

15、VL);MTIMSCMTIMCNTMTIMMODTPMSC3、TPM 寄存器7-TOF定时器溢出标志定时器溢出标志 当计数器计数到模寄存器数值并翻转到0 x0000时,该标志置1。当定时器设置为中间对齐的PWM(CPWM)工作模式时,计数器计数到模寄存器数值并开始减1时,该溢出标志置1。清除该标志分成两步,先读TPMSC,然后对TOF写0,如在这两步之间有其它定时器溢出,则清除动作取消。复位时清除TOF,对TOF写1没有影响。6-TOIE定时器中断允许定时器中断允许 该读/写位控制定时器的溢出中断。当TOIE设置为1时,如果TOF为1会产生中断。TOIE为0时,可以通过软件查询TOF的方法使用

16、定时器。5-CPWMS中间对齐中间对齐PWM模式选择位模式选择位 如果该位为0,定时器工作在加法计数器方式,此时计数器的独立通道可以工作在输入捕捉、输出比较和沿对齐PWM模式。该位设置为1,将使得定时器工作在加加/减计数器方式减计数器方式,而且所有(2个)通道都必须工作在中间对齐的PWM模式下。该位复位时为0。4:3CLKSB:A定时器时钟源选择位定时器时钟源选择位该2位的设置可能停止定时器,也可能选择3种时钟源之一作为定时器的输入。00没有时钟输入,定时器停止; 01总线时钟BUSCLK;10固定系统时钟XCLK,参见内部时钟源一节; 11外部输入时钟TPMCLK。外部输入时钟的频率不超过总

17、线时钟的1/4.2:0PS2:0时钟预分频设置时钟预分频设置 该3位设置定时器的分频器,对应关系如下:0001分频; 0012分频; 0104分频; 0118分频;10016分频;10132分频; 11064分频;111128分频。TPM计数器(TPMCNTH : TPMCNTL) 这是两个只读的8位寄存器,而且读取任何一个寄存器都会将这两个寄存器数值保存在某个缓冲中,直到另一个寄存器也被读取,至于哪个寄存器先被读取并不重要。该自动缓冲机制通过以下3种方法可以重新进入准备状态:1MCU复位;2对计数器TPMCNTH或TPMCNTL写入任何数值(导致计数器复位);3对状态和控制寄存器TPMSC写

18、入任何数值。 复位时计数器被清零,在BDM模式下,计数器被冻结,即使在BDM状态下对计数器有读写操作,自动缓冲状态还是维持不变。在停止(STOP)模式下,计数器也停止。在等待(WAIT)模式下,计数器运行正常。 3、TPM 寄存器定时器模寄存器(TPMMODH:TPMMODL) 该可读/写寄存器定义了计数器的最大数值,当计数器计数到与模寄存器数值相等时,对于加法计数器(CPWMS = 0)则翻转到0 x0000,对于加/减计数器(CPWMS = 1),计数器开始递减。此时溢出标志TOF会被置1。对模寄存器的某个8位写入数值时会禁止TOF设置,同时也禁止了中断,直到另一个8位寄存器写入新值。 复

19、位时为0 x0000,此时如果启动定时器则计数器成为“自由计数器”。对模寄存器的更新操作最好在定时器溢出中断中进行,这样比较容易保证在新的溢出之前,两个8位的寄存器数值更新已经完成。另外一个好的习惯就是在对模寄存器第一次写入数值前,先复位主计数器,以保证第一次溢出不会太快。3、TPM 寄存器TPMCnSC 3、TPM 寄存器7-CHnF通道通道n的中断标志的中断标志 如果通道n设置为输入捕捉,当外部管脚出现有效边沿,则置位该中断标志。当通道n设置为输出比较或是边沿对齐的PWM工作模式,当TPM计数器数值与通道n辅助寄存器数值一致时。对于中间对齐的PWM工作模式来说,该标志一般不使用,因为在一个

20、周期中,脉冲有效的两个沿都会设置该标志(有两次比较匹配事件)。如果通道n对应的中断被允许(CHnIE = 1),则标志CHnF置1时会产生中断。清除清除CHnF标志分两步标志分两步,先读取TPMCnSC,然后对CHnF写0。在这两步之间如果有事件发生,需要设置CHnF,则清除标志的动作取消。对该标志写1没有影响。6-CHnIE通道通道n中断允许中断允许 置1该控制位将允许通道n的中断。5:4MSnB:MSnA通道工作模式选择控制位,MSnB决定对应的通道是否设置为PWM模式,而MSnA决定通道在不是PWM模式时,是输入捕捉还是输出比较。更详细用法参见后面表格。3:2ELSnB:ELSnA沿/电

21、平选择控制位 设置通道对应的外部管脚工作模式,具体用法参见后面表格。该控制位的设置需要参考其它三个控制位CPWMS:MSnB:MSnA,对于输入捕捉而言,该控制选择上升沿还是下降沿,而对于输出比较而言,该控制选择比较匹配时,外部管脚被驱动成高电平还是低电平,对于PWM而言,该控制决定了脉宽有效期间对应外部管脚的电平状态。设置该两位为0:0时使得通道对应的外部管脚为通用I/O,该特性可用于临时取消输入捕捉功能,或者是通道设置成不需要外部管脚的软件定时器时,将对应的管脚作为通用I/O使用。对于某些型号的单片机,TPMCH0被设置成外部脉冲输入管脚TCLK。如果要使用TCLK作为定时器时钟源则通道0

22、对应的该控制位必须设置成0:0。3、TPM 寄存器 对于刚设置为输入捕捉而言,对应的外部管脚应最少稳定2个总线时钟周期,否则可能会产生不可预知的捕捉现象。一般来说,编程时改变通道设置后,在允许中断之前应先清除状态位。 模式、沿和电平选择表格:CPWMSMSnB:MSnAELSnB:ELSnA模式功能描述xxx00通道未使用外部管脚,可能是管脚作为TPM的外部时钟输入或者是将管脚作为通用I/O使用。0加法计数器00011011输入捕捉仅上升沿捕捉仅下降沿捕捉上升沿或下降沿都捕捉0100011011输出比较仅软件比较,无管脚输出比较匹配时,外部管脚翻转比较匹配时,外部管脚清0比较匹配时,外部管脚置

23、11x10 x1边沿对齐PWM脉宽有效期间高电平(比较匹配时,外部管脚清0)脉宽有效期间低电平(比较匹配时,外部管脚置1)1加/减xx10 x1中间对齐的PWM脉宽有效期间高电平(比较匹配时,外部管脚清0)脉宽有效期间低电平(比较匹配时,外部管脚置1)3、TPM 寄存器定时器2个独立通道对应的辅助寄存器(TPMCnVH:TPMCnVL) 这些可读/写寄存器用于在输入捕捉模式中保存捕捉的计数器数值,在输出比较和PWM模式中保存与主计数器比较的数值。复位时这些辅助寄存器被清零。对这些8位的寄存器读/写采用了自动锁定机制,以保证每次都能读/写一个完整的16位的数值。该锁定机制对组成16位数值的2个8

24、位寄存器的读/写顺序没有要求,也就是说可以先读/写高8位,也可以先读/写低8位,直到另一个寄存器被读/写,自动解除锁定,也可以通过写写TMPCnSC寄存器寄存器随时解除锁定状态。边沿对齐的边沿对齐的PWM工作模式工作模式 边沿对齐的PWM对应的主计数器为加法计数器(CPWMS = 0),对应的外部管脚输出波形参下图。该PWM信号的周期由模寄存器(TPMMODH:TPMMODL)决定,脉冲有效宽度由通道辅助寄存器(TPMCnVH:TPMCnVL)决定,脉冲有效时的电平特性由ELSnA控制位决定。通过适当的设置,可以产生0%或者是100%的占空比。从图中可以看出,脉冲有效时间从溢出开始,此时对应的

25、主计数器为0 x0000,计数到与通道辅助寄存器相等,产生比较匹配时,脉冲有效时间结束,外部管脚电平发生变化,计数到模寄存器数值时,发生溢出动作,计数器回0,管脚电平再次发生变化,也表明一个周期的结束。通道辅助寄存器(TPMCnVH:TPMCnVL)为0 x0000时对应的占空比为0%,如果通道辅助寄存器数值大于模寄存器数值,则产生100%的占空比,同时为了能产生100%的占空比,则要求模寄存器数值必须小于0 xFFFF。 在模寄存器数值一定时,周期也就确定了,占空比由通道辅助寄存器数值决定,为了获得不同的占空比,修改辅助寄存器数值时锁定机制同样有效。辅助寄存器数值修改后不会在修改的当前周期马

26、上生效,而是要等到主计数器数值为0 x0000之后,也就是要等到有溢出发生的下一个周期才会生效。图 ELSnA = 0时边沿对齐PWM管脚输出波形有效脉宽周期溢出溢出溢出输出比较输出管脚TPMCHn输出比较输出比较第4节、TPM应用于PWM原理及实践TPM用于PWM调制边沿对齐的边沿对齐的PWM工作模式工作模式图 ELSnA = 0时边沿对齐PWM管脚输出波形有效脉宽周期溢出溢出溢出输出比较输出管脚TPMCHn输出比较输出比较周期由模寄存器(TPMMODH:TPMMODL)决定:4000000 / 128 = 31250(计数频率);65535 / 31250 = 2.1 秒(周期)如果设置成

27、周期2秒,则( TPMMODH:TPMMODL ) = 62500;占空比由通道辅助寄存器(TPMCnVH:TPMCnVL)决定:比如使用通道0,且占空比为50%,则 (TPMC0VH:TPMC0VL) = 31250;TPM用于PWM调制中间对齐的中间对齐的PWM工作模式工作模式 这种PWM工作模式对应的计数器为加/减计数器(CPWMS = 1),对应的外部管脚输出波形参见下图。与边沿对齐的PWM工作模式类似,周期还是由模寄存器数值决定,为2x(TPMMODH:TPMMODL),有效脉冲宽度由通道辅助寄存器数值决定,为2 x (TPMCnVH:TPMCnVL)。模寄存器数值应保证在0 x00

28、01到0 x7FFF之间,以免产生歧义。ELSnA同样决定了管脚输出电平的特性。图 ELSnA = 0时中间对齐PWM管脚输出波形脉宽周期 主计数器为0开始递增计数器与模值相等溢出,开始递减 递增到比较输出输出管脚TPMCHn计数器与模值相等溢出,开始递减 递减到比较输出主计数器为0开始递增 递增到比较输出 递减到比较输出2个通道的对齐线TPM用于PWM调制中间对齐的中间对齐的PWM工作模式(续)工作模式(续) 如果通道辅助寄存器为0 x0000或者是负值(最高位为1),管脚输出脉冲占空比为0%,如果通道辅助寄存器数值为正值(最高位为0),且大于非零的模寄存器数值,由于比较输出从未发生,将产生

29、100%的占空比。为了能产生任意占空比的波形,要求模寄存器数值实际为0 x0001到0 x7FFE ,而且这对大多数应用而言,周期已经足够了。对于中间对齐的PWM工作模式而言,模寄存器数值为0 x0000的情形必须禁止,只有这样才能正确由递增计数切换到递减计数方式。 中间对齐的PWM模式比边沿对齐的PWM模式将产生更少的I/O噪声,因为不同通道管脚电平发生变化的时间由通道辅助寄存器数值决定,不会出现边沿对齐PWM模式中,溢出时所有管脚一起变化,而且在实际应用中,有些电机要求使用中间对齐的PWM模式驱动。 需要注意中间对齐的PWM工作模式中的溢出,是指主计数器递增到与模寄存器数值相等,并开始递减

30、一个数后才算溢出事件发生。更新通道辅助寄存器会启动锁定机制,而且更新数值后,不会影响当前周期的输出特性,必须等计数器发生溢出动作之后,新的数值才会生效。4、TPM 应用范例4.1、TPM软件定时器应用 如果不考虑输入捕捉、输出比较、PWM这三种需要外部管脚配合的情形,TPM的应用还是很简单的,因为此时不用考虑2个独立通道,也不用设置TPMCnSC、 ( TPMCnVH:TPMCnVL )这6个寄存器。PTBDD = 0 xFF;PTBD = 0 xFF;SOPT1 =0 x03;TPMMOD = 31250; /4000000 = 31250 * 128TPMSC = 0 x4F; /允许中断

31、,总线时钟128分频interrupt 7 void TPM_ISR() PTBD = 0 xFF; TPMSC = TPMSC&0 x7F;初始化中断子程序寄存器地址0 x0040-TPMSC0 x0045-TPMC0SC0 x0048-TPMC1SC0 x0041-TPMCNTH0 x0041-TPMCNTH0 x0046-TPMC0VH0 x0049-TPMC1VH0 x0042-TPMCNTL0 x0042-TPMCNTL0 x0047-TPMC0VL0 x004A-TPMC1VL0 x0043-TPMMODH0 x0044-TPMMODL4、TPM 应用范例4.2、TPM输入捕捉SOPT1 = 0 x03; /stop COP,Enable RSTSCIBD = 4000000/16/

温馨提示

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

评论

0/150

提交评论