《ebfAVR单片机定时计数器的结构与应用实用教案》由会员分享,可在线阅读,更多相关《ebfAVR单片机定时计数器的结构与应用实用教案(30页珍藏版)》请在金锄头文库上搜索。
1、3. 计数器类型 计数器类型是指计数器的计数运行方式,可分为加一(减一)计数器,单程计数或双向计数等。4. 计数器的上下限 计数器的上下限指计数单元的最小值和最大值。一般情况下,计数器的下限值为零,上限值为计数单元的最大计数值,即255(8位)或65535(16位)。需要注意的是,当计数器工作在不同模式下时,计数器的上限值并不都是计数单元的最大计数值255或65535,它将取决于用户的配置和设定。5. 计数器的事件 计数器的事件指计数器处于某种状态时的输出信号,该信号通常可以(ky)向MCU申请中断。如当计数器计数到达计数上限值255时,产生“溢出”信号,向MCU申请中断。 第1页/共29页第
2、一页,共30页。两个8位的定时计数器:T/C0、T/C2主要特点是:1. 单通道计数器。2. 比较匹配时清零计数器(自动重装特性,Auto Reload)。3. 可产生无输出抖动(glitch-free)的,相位可调的脉宽调制(PWM)信号输出。4. 频率发生器。5. 外部事件计数器(仅T/C0)。6. 带10位的时钟预分频器。7. 溢出和比较匹配中断源(TOV0、OCF0和TOV2、OCF2)。允许使用外部引脚的32kHz手表晶振作为独立的计数时钟源(仅T/C2)T/C0、T/C2的主要结构和大部分的功能(gngnng)是相同或类似的第2页/共29页第二页,共30页。1. T/C0的组成(z
3、 chn)结构第3页/共29页第三页,共30页。图中给出了MCU可以(ky)操作的寄存器以及相关的标志位。 在T/C0中,有1. 两个8位的寄存器;2. 计数寄存器TCNT03. 输出(shch)比较寄存器OCR0。4. T/C0的控制寄存器TCCR05. 中断标志寄存器TIFR6. 定时器中断屏蔽寄存器TIMSK。 T/C0的计数器事件输出信号(xnho)有两个 1.计数器计数溢出TOV0 2.比较匹配相等OCF0。 这两个事件的输出信号都可以申请中断,中断请求信号TOV0、OCF0可以在定时器中断标志寄存器TIFR中找到,同时在定时器中断屏蔽寄存器TIMSK中,可以找到与TOV0、OCF0
4、对应的两个相互独立的中断屏蔽控制位TOIE0、OCIE0。第4页/共29页第四页,共30页。(1)T/C0的时钟(shzhng)源来自(li z)外部引脚T0的信号提供, 来自(li z)芯片的内部。 T/C0计数(j sh)时钟源的选择 T/C0的时钟源的选择由T/C0的控制寄存器TCCR0中的3个标志位CS02:0确定,共有8种选择。 无时钟源(停止计数),外部引脚T0的上升沿或下降沿,以及内部系统时钟经过一个10位预定比例分频器分频的5种频率的时钟信号(1/1、1/8、1/64、1/256、1/1024)。 使用系统内部时钟源 当定时计数器使用系统内部时钟作为计数源时,通常作为定时器和波
5、形发生器使用。AVR在定时计数器和内部系统时钟之间增加了一个预定比例分频器,分频器对系统时钟信号进行不同比例的分频,分频后的时钟信号提供定时计数器使用。利用预定比例分频器,定时计数器可以从内部系统时钟获得几种不同频率的计数脉冲信号。 第5页/共29页第五页,共30页。T/C0的时钟源与10位预定(ydng)比例分频器 第6页/共29页第六页,共30页。 使用(shyng)外部时钟源 当定时(dn sh)计数器使用外部时钟作为计数源时,通常作为计数器使用,用于记录外部脉冲的个数。外部引脚T0(PB0)上的脉冲(michng)信号可以作为C/T0的计数时钟源。 PB0引脚内部有一个同步采样电路(S
6、ynchronization),它在每个系统时钟周期都对T0引脚上的电平进行同步采样,然后将同步采样信号送到边沿检测器(Edge Detector)中。边沿检测电路对同步采样的输出信号进行边沿检测,当检测到一个正跳变(CS02:0=7)或负跳变(CS02:0=8)时产生一个计数脉冲(michng)CLKT0。 第7页/共29页第七页,共30页。(2)T/C0的计数(j sh)单元T/C0的计数单元(dnyun)是一个可编程的8位双向计数器,逻辑功能图 计数(count)TCNT0加1或减1。方向(direction)加或减的控制。清除(clear)清零(qn ln)TCNT0。计数时钟(clk
7、T0)C/T0时钟源顶部值(TOP)表示TCNT0计数值到达上边界。底部值(BOTTOM) 表示TCNT0计数值到达下边界(零)。第8页/共29页第八页,共30页。 T/C0根据计数器的工作模式,在每一个clkT0时钟到来时,计数器进行加1、减1或清零(qn ln)操作。clkT0的来源由标志位CS02:0设定。当CS02:0=0时,计数器停止计数(无计数时钟源)。 T/C0的计数值保存在8位的寄存器TCNT0中,MCU可以在任何时间访问(读/写)TCNT0。MCU写入TCNT0的值将立即覆盖(fgi)其中原有的内容,同时也会影响到计数器的运行。 计数器的计数序列取决于寄存器TCCR0中标志位
8、WGM01:0的设置。WGM01:0的设置直接影响到计数器的计数方式(fngsh)和OC0的输出,同时也影响和涉及T/C0的溢出标志位TOV0的置位。标志位TOV0可以用于产生中断申请 第9页/共29页第九页,共30页。在T/C0运行期间,比较匹配(ppi)单元将寄存器TCNT0的计数值同寄存器OCR0的内容进行比较(硬件进行自动比较处理)。两者相等,在下一个计数时钟脉冲到达时置位OCF0标志位。标志位OCF0也可以用于产生中断申请。根据WGM01:0和COM01:0的不同设置,可控制比较匹配(ppi)单元产生和输出不同类型的脉冲波形。 (3)比较匹配(ppi)单元第10页/共29页第十页,共
9、30页。寄存器OCR0实际上配置有一个辅助缓存器。当T/C0工作在非PWM模式下时,该辅助缓存器处于被禁止使用状态,此时MCU直接访问和操作寄存器OCR0。当T/C0工作在PWM模式时,该辅助缓存器投入使用,这时MCU对OCR0的访问操作,实际上是对OCR0的辅助缓存器操作。一旦计数器TCNT0的计数值达到(d do)设定的最大值(TOP)或最小值(BOTTOM)时,辅助缓存器中的内容将同步更新比较寄存器OCR0的值。这将有效防止产生奇边非对称的PWM脉冲信号,使输出的PWM波中没有杂散脉冲。第11页/共29页第十一页,共30页。强制(qingzh)输出比较 在非PWM波形(b xn)发生模式
10、下,写1到强制输出比较位(FOC0)时,将强制比较器产生一个比较匹配输出信号。强制比较输出信号不会置OCF0标志位或重新装载/清零计数器,但是会像真的发生了比较匹配事件一样更新OC0输出引脚输出。 通过(tnggu)写TCNT0寄存器屏蔽比较匹配事件 任何MCU对TCNT0寄存器的写操作都会屏蔽在下一个定时器时钟周期中的发生的比较匹配事件,即使在定时器暂停时。这一特性使OCR0可以被初始化为与TCNT0相同的值,而不会在定时计数器被使能时触发中断。 使用输出比较单元由于在任何工作模式下,写TCNT0寄存器都会使得输出比较匹配事件被屏蔽一个定时器时钟周期,因此可能会影响比较匹配输出的正确性。例如
11、,写入一个与OCR0相同的值到TCNT0时,将丢失一次比较匹配事件,从而引起发生不正确的波形。同样,当定时器是向下计数时,不要将下边界的值写入TCNT0。第12页/共29页第十二页,共30页。(4)比较匹配输出(shch)单元 标志位COM01:0有两个作用:定义OC0的输出状态,以及控制外部引脚OC0是否输出OC0寄存器的值。 当标志位COM01:0中任何一位为“1”时,波形发生器的输出OC0取代引脚PB3原来的I/O功能,但引脚的方向寄存器DDRB3仍然控制OC0引脚的输入/输出方向。如果要在外部引脚PB3上输出OC0的逻辑电平,应设定DDRB3定义该引脚为输出脚。采用这种结构,用户(yn
12、gh)可以先初始化OC0的状态,然后再允许其由引脚PB3输出。 第13页/共29页第十三页,共30页。(5)比较输出(shch)模式和波形发生器T/C0有四种工作模式,根据COM01:0的不同设定,波形发生器将产生各种不同的脉冲波形,如PWM波形的产生和输出。但只要(zhyo)COM01:0=0,波形发生器对OC0寄存器没有任何作用。 第14页/共29页第十四页,共30页。2与8位T/C0相关(xinggun)的寄存器(1)T/C0计数(j sh)寄存器TCNT0TCNT0是T/C0的计数值寄存器,该寄存器可以直接被MCU读写访问。写TCNT0寄存器将在下一个(y )定时器时钟周期中阻塞比较匹
13、配。因此,在计数器运行期间修改TCNT0的内容,有可能将丢失一次TCNT0与OCR0的匹配比较操作。第15页/共29页第十五页,共30页。(2)输出(shch)比较寄存器OCR0 8位寄存器OCR0中的数据用于同TCNT0寄存器中的计数值进行匹配比较。 在T/C0运行期间,比较匹配单元一直(yzh)将寄存器TCNT0的计数值同寄存器OCR0的内容进行比较。一旦TCNT0的计数值与OCR0的数据匹配相等,将产生一个输出比较匹配相等的中断申请,或改变OC2的输出逻辑电平。第16页/共29页第十六页,共30页。(3)定时(dn sh)计数器中断屏蔽寄存器TIMSK 位7(位1) OCIE2(OCIE
14、0):T/C2(T/C0)输出比较匹配中断允许标志位当OCIE2(OCIE0)被设为“1”,且状态(zhungti)寄存器中的I位被设为“1”时,将使能T/C2(T/C0)的输出比较匹配中断。若在T/C2(T/C0)上发生输出比较匹配,即OCF2=1(OCF0=1)时,则执行T/C2(T/C0)输出比较匹配中断服务程序。位6(位0) TOIE2(TOIE0):T/C2(T/C0)溢出中断允许标志位当TOIE2(TOIE0)被设为“1”,且状态(zhungti)寄存器中的I位被设为“1”时,将使能T/C2(T/C0)溢出中断。若在T/C2(T/C0)上发生溢出,即TOV2=1(TOV0=1)时,
15、则执行T/C2(T/C0)溢出中断服务程序。第17页/共29页第十七页,共30页。(4)定时(dn sh)计数器中断标志寄存器TIFR位7(位1) OCF2(OCF0):T/C2(T/C0)比较匹配输出的中断标志位当T/C2(T/C0)输出比较匹配成功,即TCNT2=OCR2(TCNT0=OCR0)时,OCF2(OCF0)位被设为“1”。当转入T/C2(T/C0)输出比较匹配中断向量执行中断处理程序时,OCF2(OCF0)由硬件自动清零。写入一个逻辑“1”到OCF2(OCF0)标志位将清除该标志位。当寄存器SREG中的I位、OCIE2(OCIE0)以及OCF2(OCF0)均为“1”时,T/C2
16、(T/C0)的输出比较匹配中断被执行。位6(位0) TOV2(TOV0):T/C2(T/C0)溢出中断标志位当T/C2(T/C0)产生溢出时,TOV2(TOV0)位被设为“1”。当转入T/C2(T/C0)溢出中断向量执行中断处理程序时,TOV2(TOV0)由硬件自动清零。写入一个逻辑“1”到TOV2(TOV0)标志位将清除该标志位。当寄存器SREG中的I位、TOIE2(TOIE0)以及TOV2(TOV0)均为“1”时,T/C2(T/C0)的溢出中断被执行。在PWM模式中,当T/C2(T/C0)计数(j sh)器的值为0x00并改变计数(j sh)方向时,TOV2(TOV0)自动被置为“1”。第
17、18页/共29页第十八页,共30页。(5)T/C0控制(kngzh)寄存器TCCR0 8位寄存器TCCR0是T/C0的控制寄存器,它用于选择计数器的计数源,工作模式和比较输出的方式等。位7FOC0:强制输出比较FOC0位只在T/C0被设置为非PWM模式下工作时才有效,在PWM模式下写TCCR0寄存器时,该位必须被写零。当将一个逻辑“1”写到FOC0位时,会强加在波形发生器上一个比较匹配成功信号,使波形发生器依据COM01:0位的设置而改变OC0输出状态。注意:FOC0的作用仅如同一个选通脉冲,而OC0的输出还是取决于COM01:0位的设置。一个FOC0选通脉冲不会产生任何的中断申请,也不影响计
18、数器TCNT0和寄存器OCR0的值。一旦一个真正(zhnzhng)的比较匹配发生,OC0的输出将根据COM01:0位的设置而更新。 第19页/共29页第十九页,共30页。位3,6WGM01:0:波形发生模式这两个标志位控制T/C0的计数和工作方式,计数器计数的上限值,以及(yj)确定波形发生器的工作模式(见表8.1)。T/C0支持的工作模式有:普通模式,比较匹配时定时器清零(CTC)模式,以及(yj)两种脉宽调制(PWM)模式。第20页/共29页第二十页,共30页。位5,4COM01:0:比较匹配输出方式这两个位用于控制比较输出引脚OC0的输出方式。如果COM01:0中的任何一位或两位被置“1
19、”,OC0的输出将覆盖PB3引脚的通用I/O端口功能,但此时PB3引脚的数据方向寄存器DDRB3位必须置为输出方式。当引脚PB3作为OC0输出引脚时,其输出方式取决于COM01:0和WGM01:0的设定。表8.2给出了在WGM01:0的设置为普通(ptng)模式和CTC模式(非PWM)时,COM01:0位的功能定义。 第21页/共29页第二十一页,共30页。 表8.3给出了在WGM01:0的设置(shzh)为快速PWM模式时,COM01:0位的功能定义。 WGM01:0设置为相位可调的PWM模式(msh)时,COM01:0位的功能定义。 第22页/共29页第二十二页,共30页。位2,0CS02
20、:0:T/C0时钟(shzhng)源选择这3个标志位被用于选择设定T/C0的时钟(shzhng)源,见表8.5。第23页/共29页第二十三页,共30页。 8位T/C0的工作(gngzu)模式 T/C0的控制寄存器TCCR0的标志位WGM01:0和COM01:0的组合构成(guchng)T/C0的四种工作模式以及OC0不同方式的输出。 (1)普通(ptng)模式(WGM01:0=0) 第24页/共29页第二十四页,共30页。模拟(mn)集成电路的特点 模拟(mn)集成电路的特点 模拟集成电路(jchng-dinl)的特点 模拟集成电路的特点 第25页/共29页第二十五页,共30页。模拟(mn)集
21、成电路的特点 模拟集成电路(jchng-dinl)的特点 模拟(mn)集成电路的特点 模拟集成电路的特点 第26页/共29页第二十六页,共30页。模拟(mn)集成电路的特点 模拟(mn)集成电路的特点 模拟集成电路(jchng-dinl)的特点 模拟集成电路的特点 第27页/共29页第二十七页,共30页。模拟集成电路(jchng-dinl)的特点 模拟(mn)集成电路的特点 模拟集成电路(jchng-dinl)的特点 模拟集成电路的特点 第28页/共29页第二十八页,共30页。感谢您的欣赏(xnshng)!第29页/共29页第二十九页,共30页。内容(nirng)总结3. 计数器类型。计数器的上下限指计数单元的最小值和最大值。图中给出了MCU可以操作的寄存器以及(yj)相关的标志位。MCU写入TCNT0的值将立即覆盖其中原有的内容,同时也会影响到计数器的运行。计数器的计数序列取决于寄存器TCCR0中标志位WGM01:0的设置。注意:FOC0的作用仅如同一个选通脉冲,而OC0的输出还是取决于COM01:0位的设置第三十页,共30页。