1 / 24

定时器

定时器. 02-4-8. 蒋俊峰. __ _ _________________ _____ ___ 清华 Motorola 单片机与 DSP 应用开发研究中心. 定时器基本功能. MC68HC908GP32 的定时器具有以下特征: 每个定时器具有两路独立的输入捕捉/输出比较通道; 带缓冲( Buffered) 和不带缓冲( Unbuffered) 的脉宽调制波; 七种可编程选择的分频因子; 自由运行计数或预置计数; 计数器停止或清除; 16位输入捕捉和输出比较寄存器; 定时器溢出中断、每路通道的输入捕捉/输出比较中断。. 定时器模块结构. PS2. PS1.

tosca
Download Presentation

定时器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 定时器 02-4-8 蒋俊峰 ____________________________清华Motorola单片机与DSP应用开发研究中心

  2. 定时器基本功能 MC68HC908GP32的定时器具有以下特征: • 每个定时器具有两路独立的输入捕捉/输出比较通道; • 带缓冲(Buffered)和不带缓冲(Unbuffered)的脉宽调制波; • 七种可编程选择的分频因子; • 自由运行计数或预置计数; • 计数器停止或清除; • 16位输入捕捉和输出比较寄存器; • 定时器溢出中断、每路通道的输入捕捉/输出比较中断。

  3. 定时器模块结构 PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter TOF Interrupt Logic 16-bit Comparator TOIE TMOD Port Logic TOV0 TnCH0 ELS0B ELS0A CH0MAX 16-bit Comparator TCH0 CH0F Interrupt Logic Interrupt Logic 16-bit Latch CH0IE CH0IE MS0A MS0B MS0B Port Logic TOV1 TnCH1 ELS1B ELS1A CH1MAX 16-bit Comparator TCH1 CH1F Interrupt Logic Interrupt Logic 16-bit Latch CH1IE CH1IE MS1A PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter TOF Interrupt Logic Timer Reference 16-bit Comparator TOIE TMOD Port Logic TOV0 TnCH0 ELS0B ELS0A CH0MAX Timer Channel 0 16-bit Comparator TCH0 CH0F Interrupt Logic 16-bit Latch CH0IE MS0A MS0B Internal Bus Port Logic TOV1 TnCH1 ELS1B ELS1A CH1MAX Timer Channel 1 16-bit Comparator TCH1 CH1F Interrupt Logic 16-bit Latch CH1IE MS1A

  4. 定时器模块-自由运行计数溢出 16位的自由运行计数器在MCU复位结束后,从 $FFFC开始连续计数,当达到最大值$FFFF时翻转到$0000,同时置位状态寄存器的溢出位TOF,然后重新开始计数。 • 分频电路框图

  5. 定时器模块-预置计数溢出 定时器1预置计数高位寄存器 T1MODH $0023 定时器1预置计数低位寄存器 T1MODL $0024 向16位预置计数寄存器写入一个确定的数值,则计数器每进行一次计数都会将计数和预置计数寄存器的值进行比较,如果相同就产生溢出。 若总线频率为2MHz,分频因子为32,计数器时钟2MHz/32,即计数器每16μs计数一次。如果预置计数寄存器设置为$F424(十进制62500),就可以得到1秒间隔的定时器溢出。

  6. 定时器状态和控制寄存器T1SC TOF - 定时器溢出标志位 定时器溢出,则定时器计数清零,该位置1。 TOIE - 定时器溢出中断允许位 置1允许溢出中断,置0不允许溢出中断。 TSTP –定时器计数停止/恢复位 置1保持当前计数,置0恢复计数。 TRST –定时器计数清零 置1清除计数和分频因子。 PS2~PS0 –定时器分频因子设定位 设定分频因子。

  7. 定时器模块-预置计数溢出实例(1) T1SC EQU $0020 T1MODH EQU $0023 T1MODL EQU $0024 b_TOF EQU $07 …… MOV #$96,T1MODH MOV #$00,T1MODL MOV #%01010110,T1SC;定时器1溢出中断允许 ;Fbus=2.4576MHz PS[2..0]=#%110 分频因子为64 ;timer's clock=2.4576/64 Timer1 will overFLOW flow just 1s. ……

  8. 定时器模块-预置计数溢出实例(2) TIME_INT: ;定时器溢出中断程序 SEI LDA T1SC ;读取状态和控制寄存器 BCLR b_TOF,T1SC ;清除溢出标志位 …… ;中断内容 CLI RTI ;填写中断向量表 ORG $DFF2 ;GP32IDK Timer1 Overflow Interrupt Vector ENTRY FDB TIME_INT

  9. 定时器模块-输入捕捉 输入捕捉用来监测外部的事件和输入信号。当外部事件发生或信号发生变化时,在指定的输入捕捉引脚上发生一个指定的沿跳变(上升或下降沿)。定时器捕捉到特定的沿跳变后,把自由运行计数器当前的值锁存到输入捕捉寄存器。如果在输入捕捉控制寄存器中设定允许输入捕捉中断,系统会产生一次输入捕捉中断 。 用途: 1、通过记录输入信号的 连续的沿跳变,就可以 用软件算出输入信号的 周期和脉宽 。 2、配合输出比较来做延时。

  10. 定时器模块-输入捕捉 0:0 General Purpose I/O ELS1B ELS1A 0:1 Capture on Rising Edge 1:0 Capture on Falling Edge 1:1 Capture on Either Edge PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter 16-bit Counter TOF Interrupt Logic 16-bit Comparator TOIE TMOD Port Logic TOV0 TnCH0 ELS0B ELS0A CH0MAX 16-bit Comparator TCH0 CH0F Interrupt Logic 16-bit Latch CH0IE MS0A MS0B 0 Internal Bus Port Logic TOV1 TnCH1 TnCH1 ELS1B ELS1A CH1MAX 16-bit Comparator TCH1 TCH1 CH1F Interrupt Logic 16-bit Latch CH1IE MS1A 0

  11. 定时器模块-输出比较 输出比较寄存器是一个16位寄存器,自由运行计数器的值每递增一次就和它比较一次,如果相等就置位CHXF位并根据预先的设定输出高电平、低电平或翻转输出比较引腿的电平。 典型用途: 产生一定间隔 的脉冲。

  12. 定时器模块-输出比较 0:0 General Purpose I/O ELS0B ELS0A 0:1 Toggle Output on Compare 1:0 Clear Output on Compare 1:1 Set Output on Compare PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter 16-bit Counter TOF Interrupt Logic 16-bit Comparator TOIE TMOD Port Logic TOV0 TnCH0 TnCH0 ELS0B ELS0A CH0MAX 16-bit Comparator TCH0 TCH0 CH0F Interrupt Logic 16-bit Latch CH0IE MS0A 1 MS0B 0 Internal Bus Port Logic TOV1 TnCH1 ELS1B ELS1A CH1MAX 16-bit Comparator TCH1 CH1F Interrupt Logic 16-bit Latch CH1IE MS1A

  13. 定时器模块-不带缓冲的输出比较 (1) 利用不带缓冲的输出比较功能产生一个脉宽为5S的方波。使用MC68HC908GP32 MCU,外部晶振频率为8M,内部总线频率为2M,定时器预分频因子为4,每一次计数时间为2μS,每65536次计数,定时器溢出翻转一次,时间为131.072ms。5s/131.072ms = 38次翻转,剩余$25A0次计数。 编程时使用定时器的通道1,该通道将以PORTA的第0个引脚作为输出比较引脚,在该脚上接入一个发光二极管,可以看到二极管以5s的周期闪烁。

  14. 定时器模块-不带缓冲的输出比较(2) PORTA EQU $00 ;寄存器定义 DDRA EQU $04 T1CH0H EQU $26 T1CH0L EQU $27 T1SC0 EQU $25 TCOUNT EQU $A0 ;变量定义 TEMP EQU $A1 ORG $8000 INIT: LDA #%00000001 STA T1SC MOV #$FF,PORTA LDA #%00000001 STA DDRA ;PA0输出 LDA #%00010100 STA T1SC0 ;输出比较,电平翻转

  15. 定时器模块-不带缓冲的输出比较 (3) BEGIN: LDA PORTA EOR #%00000001 STA PORTA LDHX T1CH0H AIX #$25A0 ;加剩余次数$25A0 STHX T1CH0H MOV #38,TCOUNT LOOP1: BRCLR 7,T1SC0,LOOP1 LDA T1CH0L LDA T1SC0 ;清除CH0F位 BCLR 7,T1SC0 DBNZ TCOUNT,LOOP1 BRA BEGIN

  16. 定时器模块-带缓冲的输出比较 带缓冲的输出比较功能使用了同一定时器的两路通道,将这两路通道联合起来共同组成一个带缓冲的输出比较。该输出比较波形将出现在TCH0引脚上 。

  17. 定时器模块-脉宽调制PWM 脉宽调制波是一种可以使用程序来控制改变波形占空比,周期,相位的波形。 预置计数寄存器的值将决定脉宽调制波的周期,两次溢出之间的时间就是脉宽调制波的周期。 定时器的每一个通道都可以设置为在溢出时自动翻转电平 。每一个通道的输出比较寄存器的值将决定脉宽调制波的占空比。在一次时钟溢出的周期内输出电平将发生两次翻转,而从发生时钟溢出到发生输出比较之间的时间决定了脉宽调制波的占空比。

  18. 定时器模块-不带缓冲脉宽调制PWM

  19. 定时器模块-不带缓冲脉宽调制 0:0 General Purpose I/O ELS0B ELS0A 0:1 Toggle Output on Compare 1:0 Clear Output on Compare 1:1 Set Output on Compare 1 0 TCH0 Duty Cycle = TMOD ELS0B ELS0A 1 1 Overflow Compare PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter 16-bit Counter TOF Interrupt Logic 16-bit Comparator 16-bit Comparator TOIE Toggle on Overflow TMOD TMOD Port Logic 1 TOV0 TnCH0 TnCH0 ELS0B ELS0A CH0MAX 16-bit Comparator TCH0 TCH0 CH0F Interrupt Logic 16-bit Latch CH0IE MS0A 1 0 MS0B Internal Bus Port Logic TMOD Period TOV1 TMOD ³ TCH0 TnCH1 ELS1B ELS1A CH1MAX 16-bit Comparator TCH1 CH1F Interrupt Logic Pulse Width 16-bit Latch TCH0 CH1IE MS1A

  20. 定时器模块-不带缓冲脉宽调制 0:0 General Purpose I/O ELS0B ELS0A 0:1 Toggle Output on Compare 1:0 Clear Output on Compare 1:1 Set Output on Compare 1 0 TCH0 Duty Cycle = TMOD ELS0B ELS0A 1 1 Overflow Compare PS2 PS1 PS0 Internal Bus Clock Prescaler TSTOP TRST 16-bit Counter 16-bit Counter TOF Interrupt Logic 16-bit Comparator 16-bit Comparator TOIE Toggle on Overflow TMOD TMOD Port Logic 1 TOV0 TnCH0 TnCH0 ELS0B ELS0A CH0MAX 16-bit Comparator TCH0 TCH0 CH0F Interrupt Logic 16-bit Latch CH0IE MS0A 1 0 MS0B Internal Bus Port Logic TMOD Period TOV1 TMOD ³ TCH0 TnCH1 ELS1B ELS1A CH1MAX 16-bit Comparator TCH1 CH1F Interrupt Logic Pulse Width 16-bit Latch TCH0 CH1IE MS1A

  21. 定时器模块-不带缓冲脉宽调制 Compare Interrupt Overflow Interrupt Overflow Interrupt Overflow Interrupt New TCH Value New TCH Value New TCH Value Compare Interrupt Compare Interrupt Compare Interrupt Compare Interrupt New TCH Value New TCH Value Intermediate TCH Value • Clear Output on Compare • Toggle Output on Overflow Period Too Late! Too Late! Compare Interrupt Period TCH < TCNT

  22. 定时器模块-不带缓冲脉宽调制 Overflow Interrupt New TCH Value Overflow Interrupt Overflow Interrupt Compare Interrupt New TCH Value Compare Interrupt Compare Interrupt New TCH Value Compare Interrupt Compare Interrupt New TCH Value Intermediate TCH Value New TCH Value • Clear Output on Compare • Toggle Output on Overflow Period Too Late! Too Late! Compare Interrupt Period TCH < TCNT

  23. 定时器模块-带缓冲脉宽调制PWM

  24. 谢谢大家! • 清华Motorola单片机与DSP应用开发研究中心 • jiangjunfeng@263.net

More Related