您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 0第六章 定时器计数器原理及应用
复习旧课:ATmega16有3个外部中断源,分别对应PD2、PD3和PB2。与外部中断有关的寄存器:状态寄存器(SREG);通用中断控制寄存器(GICR);通用中断标志寄存器(GIFR);MCU控制寄存器(MCUCR)。CVAVR编译器的中断操作:CVAVR的C编译器支持在C源程序中直接开发中断程序。当用户使用该功能时,必须在中断服务子程序定义之前用“interrupt”语句通知编译器,该子程序是一个中断操作。用“interrupt”语句定义中断服务子程序的格式为:interrupt[中断向量号或向量号的宏定义]voidhandler(中断函数名)(void)新课讲解:第六章定时器/计数器原理及应用§6.1定时与计数原理6.1.1计数原理所谓计数是指对外部事件进行计数。外部事件的发生以输入有效脉冲来表示。因此计数功能的实质,就是对外部有效脉冲进行计数。当外部发来一个有效脉冲时,在S1闭合的情况下,计数器会加1,即表示记录了一次外部事件。当外部脉冲为连续脉冲时,计数器将不断加1,直到计数器溢出。计数器原理框图如下图所示:图6-1计数器原理框图6.1.2定时原理定时器原理框图如图6-2所示。定时功能实质上是通过计数器的计数来实现的。当计数器的输入脉冲频率恒定时,计数器所记录的数值即代表了时间的概念。例如:若计数频率恒定为1MHZ,即其周期为1,此时表明每微秒计数器加1。当计数器的值从1增加到10时,计数器所记录的时间为10,即定时为10微秒。所以当计数器的计数频率恒定时,可以根据计数器的“计数值”计算出定时时间。由此原理,也可以反过来按定时时间要求计算出计数器的装入初值。图6-2定时器原理框图6.1.3事件捕获原理捕获原理框图如下图所示:当外部捕获事件发生时,立即打开闸门电路将定时器/计数器的当前值装入捕获寄存器。一旦定时器/计数器的当前值被装入捕获寄存器,捕获标志位ICF立即置1并同时产生输入捕获中断请求2。图6-3外部捕获原理框图6.1.4PWM输出原理与方法PWM为脉冲宽度调制。PWM输出的一般形式为一系列的脉冲波形,如图6-4所示。图6-4PWM输出的一般形式在图6-4中,设脉冲的周期为τ,高电平持续时间为t,则t与τ之比定义为PWM的“占空比”,用D表示,即D=t/τ。PWM输出的最大特点是波形的频率恒定,波形的占空比D却可以改变。占空比的改变很具有实际意义,例如小功率直流电机的驱动与调速,其方法就是控制电机电枢电压接通和断开的比值来驱动电机和改变电机的转速,这种方法称为脉宽调速法。PWM原理框图如下图所示:图6-5PWM原理框图定时器/计数器以一定的频率上、下计数,即计数器从00H~FFH(假设定时器/计数器为8位)进行计数,然后计数器反向从FFH~00H进行计数,如此反复。当计数器中的数值与比较寄存器中的数值相等时,比较器的输出按PWM预定的规律输出一系列的脉冲波,如图6-6所示。比较值改变计数器值比较值PWM输出图6-6PWM的输出波形频率一定;比较值越大,占空比越大。新课总结:定时器/计数器工作原理:1、计数原理。计数功能的实质,就是对外部有效脉冲进行加法计数。2、定时原理。定时功能实际上即通过对时钟信号进行计数而间接实现的。3、事件捕获原理。当外部捕获事件发生时,立即打开闸门电路将定时器/计数器的当前值装入捕获寄存器。一旦定时器/计数器的当前值被装入捕获寄存器,捕获标志位ICF立即置1并同时产生输入捕获中断请求2。4、PWM输出原理。定时器/计数器的计数器以一定的频率上、下计数,即计数器从00H~FFH(假设定时器/计数器为8位)进行计数,然后计数器反向从FFH~00H进行计数,如此反复。当计数器的数值与比较寄存器中的数值相等时,比较器的输出按PWM预定的规律输出一系列的脉冲波。布置作业:1、定时/计数器在实现计数功能时,计数值与计数初值的关系?2、定时/计数器在实现定时功能时,定时时间与计数初值的关系?复习旧课:定时器/计数器原理:1、计数原理。2、定时原理。3、事件捕获原理。4、PWM输出原理。新课讲解:§6.2ATmega16的定时器/计数器资源(一)ATmega16内部有3个定时器/计数器:2个8位的定时器/计数器――T/C0、T/C2;1个16位的定时器/计数器――T/C1。各定时器/计数器功能:功能名称作为片内时钟的定时器对外部触发信号计数的计数器选择异步外部时钟(32.768KHz),用作实时时钟输出比较功能PWM功能输入捕获功能时钟预分频T/CO√√(PB0)T0√(PB3)OC0√√T/C2√√(PC6)TOCS1√(PD7)OC2√√T/C1√√(PB1)T1√(PD5)OC1A(PD4)OC1B√√(PD6)ICP√输出比较功能:当定时器/计数器的值与比较寄存器的值相等时,输出引脚动作。6.2.1T/C的预分频器T/CO和T示意图:/C1的预分频器为一个10位的预定比例分频器。lkI/O为内部时钟。预分频器有4种不同的分频比例,它们是clkI/O/8、clkI/O/64、clkI/O/256、clkI/器不对其进行预分频。CO/1024。其中一路未经分频送入T/CO和T/C1。TO(PB0)和T1(PBl)为从外部引脚来的时钟源,预分频时钟选择位CS02(CS12)、CS01(CS11)、CS00(CS10):选择8种时钟源。P.2.28器(TCCR0)0的工作参数。2的工作参数。的计数值。前的计数值。前的计数值。前的计数值。数器2相比较的数据。/计数器2在异步计数方式下的工作状态。6.2.3方式时,计数时钟直接来自外部引脚TOCS1,因此计数时钟与系统时钟是不用4MHz晶振,用T/C0做定时器,256分频,使用T/C0溢出中断服务子程序在PD0引脚64μs计一个脉冲,当TCNT0初值设为6,每计250个脉冲(16序:mega16.herruptserviceroutineoid)SR10:预分频器复位。6位定时/计数器T/C0、T/C2●定时/计数器0的寄控制寄存定时/计数器0的寄控制寄存器用于控制定时/计数器●定时/计数器2的寄控制寄存器(TCCR2)定时/计数器2的寄控制寄存器用于控制定时/计数器●定时/计数器中断屏蔽寄存器(TIMSK)定时/计数器0的寄控制寄存器用于存储当前●定时/计数器中断标志寄存器(TIFR)定时/计数器0的寄控制寄存器用于存储当●定时/计数器0计数寄存器(TCNT0)定时/计数器0的寄控制寄存器用于存储当●定时/计数器2计数寄存器(TCNT2)定时/计数器2的寄控制寄存器用于存储当●定时/计数器2的输出比较寄存器(OCR2)定时/计数器2的输出比较寄存器存储与定时/计●异步状态寄存器(ASSR)异步状态寄存器用于标识定时T/C2的异步操作当T/C2采用异步工作同步的。例1:设采产生周期为32ms的对称方波。设采用4MHz晶振,256分频,则ms),T/C0溢出一次。在溢出中断服务子程序使PD0改变极性,则产生周期为32ms的对称方波。程#include//Timer0overflowintinterrupt[TIM0_OVF]voidtimer0_ovf_isr(v{//ReinitializeTimer0valueTD.0;idmain(void)ortDinitializationr0initialization15.625kHzd、CS0为100,故为256分频;WGM01、WGM00为00,故为一TCNT0=0x06;nter(s)Interrupt(s)initialization断开放2:设采用4MHz晶振,用T/C0做定时器,256分频,使用查询T/C0溢出中断标志位TOV0方式ortDinitializationr0initializationTCNT0=0x06;PORTD.0=!POR}vo{//PPORTD=0x00;DDRD=0xFF;//Timer/Counte//Clocksource:SystemClock//Clockvalue:4.000MHz/256=//Mode:Normaltop=FFh//OC0output:DisconnecteTCCR0=0x04;//CS02、CS01般模式;COM01、COM00为00,OC0断开。//初值为6OCR0=0x00;//Timer(s)/CouTIMSK=0x01;//T/C0溢出中断使能//GlobalenableinterruptsSREG|=0X80;//全局中while(1){};}例,PD0引脚产生周期为32ms的对称方波。#includemega16.hvoidmain(void){//PPORTD=0x00;DDRD=0xFF;//Timer/Counte//Clocksource:SystemClock//Clockvalue:4.000MHz/256=15.625kHzd、CS0为100,故为256分频;WGM01、WGM00为00,故为一TCNT0=0x06;nter(s)Interrupt(s)initializationRTD.0=!PORTD.0;);新课总结:ATmega16内部有3个定时器/计数器:2个8位的定时器/计数器――T/C0、T/C2;1个可以选择不同频率的计数源,这些计数源由分频器对主时钟的不同功能寄存器:T/C0控制寄存器—TCCR0、T/CO计数寄存器—TCNT0、T/CO输出比较寄的溢出中断服数进行计数,并通过PD口发光二极管进行显用T/C0定时1s,定时时间到了以后,对PC5状态取反。(分别采用查//Mode:Normaltop=FFh//OC0output:DisconnecteTCCR0=0x04;//CS02、CS01般模式;COM01、COM00为00,OC0断开。//初值为6OCR0=0x00;//Timer(s)/CouTIMSK=0x00;while(1){POwhile(!(TIFR&0X01)TIFR|=0x01;TCNT0=0X06;};}16位的定时器/计数器――T/C1。ATmega16单片机的定时/计数器分频构成。定时/计数器0和定时/计数器1共用一个分频器,定时/计数器2拥有自己独立的分频器。特殊存器—OCR0、T/C中断屏蔽寄存器—TIMSK、T/C中断标志寄存器—TIFR。布置作业:1.使用T/C0的内部时钟源,产生1ms的定时溢出中断,同时利用T/C0务子程序,使PD6脚的输出频率为1Hz的方波。2.外部脉冲信号通过PB0(T0)输入,T/C0对脉冲个示。(亮为1,灭为0)。3.系统采用4MHz晶振,询方式和中断方式)。复习旧课:ATmega16内部有3个定时器/计数器:2个8位的定时器/计数器――T/C0、T/C2;1个可以选择不同频率的计数源,这些计数源由分频器对主时钟的不同功能寄存器:T/C0控制寄存器—TCCR0、T/CO计数寄存器—TCNT0、T/CO输出比较寄§6.2ATmega16的定时器/计数器资源(二)6.2.4PWM模式下的T/C,T/C0、T/C2以及输出比较寄存器OCR0、OCR2分别组成8位无比较输出模式、相位可调PWM模式COMn116位的定时器/计数器――T/C1。ATmega16单片机的定时/计数器分频构成。定时/计数器0和定时/计数器1共用一个分频器,定时/计数器2拥有自己独立的分频器。特殊存器—OCR0、T/C中断屏蔽寄存器—TIMSK、T/C中断标志寄存器—TIFR。新课讲解:0、T/C2当选择相位可调的PWM模式后奇边非对称,相位可调的脉宽调制PWM,输出引脚分别为PB3(OCR0)和PD7(OCR2)。T/C0和T/C2作为上/下计数器,从现在00H~FFH,然后反向计数回到00H。当计数器中的数值与OCR0、OCR2的数值一致时,PB3(OCR0)和PD7(OCR2)引脚按照COM00、COM01和COM20、COM21的设置动作,见表6-5所示。表6-5T/C0、T/C2COMn0OCn引脚00OCn不占用PB3或PD7引脚0
本文标题:0第六章 定时器计数器原理及应用
链接地址:https://www.777doc.com/doc-4918387 .html