首页 理论教育 AVR单片机开发入门与实例介绍

AVR单片机开发入门与实例介绍

时间:2023-10-17 理论教育 版权反馈
【摘要】:T/C1的频率调整范围可以达到16位的精度,它是通过改变计数器的上限值实现的。此时ICP1引脚与计数器脱离,将禁止输入捕获功能。输入捕捉事件发生后产生的中断申请标志ICF1,以及相应的中断屏蔽控制位TICIE1可以在定时计数器中断标志寄存器TIFR和定时器中断屏蔽寄存器TIMSK中找到。

AVR单片机开发入门与实例介绍

与8位T/C0、T/C2相比,T/C1的功能增强主要表现在以下几个方面。

1.16位的计数器

由于T/C1是16位的计数器,因此它的计数宽度、计时长度大大增加,配合一个独立的10位预定比例分频器,在系统时钟为4MHz条件下,16位的T/C1最高计时精度为0.25μs,而最长的时宽可达到16.777216s(精度为256μs),这是其他的8位单片机所做不到的。

需要注意的是,AVR的内部有许多16位的寄存器,这些寄存器都是由两个8位的寄存器组成的。如16位的寄存器TCNT1实际由2个8位寄存器TCNT1H、TCNT1L组成的。对这些16位寄存器的读写操作需要遵循特定的步骤。

2.16位寄存器的读写操作步骤

由于AVR的内部数据总线为8位,因此读写16位的寄存器需要分两次操作。为了能够同步读写16位寄存器,每一个16位寄存器分别配有一个8位的临时辅助寄存器(Tempora-ry Register),用于保存16位寄存器的高8位数据。要同步读写这些16位的寄存器,读写操作应遵循以下特定的步骤。

(1)16位寄存器的读操作

当MCU读取16位寄存器的低字节(低8位)时,16位寄存器低字节内容被送到MCU,而高字节(高8位)内容在读低字节操作的同时被置于临时辅助(TEMP)寄存器中。当MCU读取高字节时,读到的是TEMP寄存器中的内容。因此,要同步读取16位寄存器中的数据,应先读取该寄存器的低位字节,再立即读取其高位字节。

(2)16位寄存器的写入操作

当MCU写入数据到16位寄存器的高位字节时,数据是写入到TEMP寄存器中。当MCU写入数据到16位寄存器的低位字节时,写入的8位数据与TEMP寄存器中的8位数据组合成一个16位数据,同步写入到16位寄存器中。因此,要同步写16位寄存器时,应先写入该寄存器的高位字节,再立即写入它的低位字节。

用户编写汇编程序时,如要对16位寄存器进行读写操作,应遵循以上特定的步骤。此外,在对16位寄存器操作时,最好将中断响应屏蔽,防止在主程序读写16位寄存器的两条指令之间插入一个含有对该寄存器操作的中断服务。如果这种情况发生,那么中断返回后,寄存器中的内容已经改变,会造成主程序中对16位寄存器的读写失误。

3.更加强大和完善的PWM功能

T/C1配备了2个比较匹配输出单元OC1A、OC1B和比较匹配寄存器OCR1A、OCR1B。同时它的PWM模式有多种不同的计数器上限(TOP)值可供选择,因此T/C1的PWM功能具备以下特点:

(1)可产生频率、相位均可调整的PWM波(www.xing528.com)

T/C1有15种工作模式,除了常规的计数、CTC模式外,还可以产生频率可调、相位可调、频率相位均可调的多种形式的PWM波。其中频率可调的PWM波利用8位定时计数器是不能实现的。T/C1的频率调整范围可以达到16位的精度,它是通过改变计数器的上限值实现的。

(2)可同时产生2路不同占空比的PWM波

由于T/C1配备了2个比较匹配输出单元OC1A、OC1B和比较匹配寄存器OCR1A、OCR1B,因此使用一个计数器就可以得到相同频率、不同占空比的2路PWM输出。2路PWM波的占空比的确定和调整分别由寄存器OCR1A、OCR1B确定,分别在OC1A、OC1B上输出。

4.输入捕捉功能

T/C1的输入捕捉功能是AVR定时计数器的另一个非常有特点的功能。T/C1的输入捕捉单元,如图7-13所示,可应用于精确捕捉一个外部事件的发生,记录事件发生的时间印记(Time-stamp)。捕捉外部事件发生的触发信号由引脚ICP1输入,或模拟比较器的AC0单元的输出信号也可作为外部事件捕获的触发信号。

978-7-111-35161-0-Chapter07-26.jpg

图7-13 T/C1的外部事件输入捕捉单元(n为1)

当一个输入捕捉事件发生,如外部引脚ICP1上的逻辑电平变化时,或者模拟比较器输出电平变化(事件发生)时,此时T/C1的计数器TCNT1中的计数值被写入输入捕捉寄存器ICR1中,并置位输入捕获标志位ICF1,并产生中断申请。输入捕捉功能可用于频率和周期的精确测量。

置位标志位ICNC将使能对输入捕捉触发信号的噪声抑制功能。噪声抑制电路是一个数字滤波器,它对输入触发信号进行4次采样,当4次采样值相等才确认此触发信号。因此使能输入捕捉触发信号的噪声抑制功能可以对输入的触发信号的噪声实现抑制,但确认触发信号比真实的触发信号延时了4个系统时钟周期。噪声抑制功能是通过寄存器TCCR1B中的输入捕捉噪声抑制位(ICNC)来使能。如果使能了输入噪声抑制功能,捕捉输入信号的变化到ICR1寄存器的更新延迟4个时钟周期。噪声抑制功能使用的系统时钟与预分频器无关。

输入捕捉信号触发方式的选择由寄存器TCCR1B中的第6位ICES1决定。当ICES1设置为“0”时,输入信号的下降沿将触发输入捕捉动作;当ICES1为“1”时,输入信号的上升沿将触发输入捕捉动作。一旦一个输入捕捉信号的逻辑电平变化触发了输入捕捉动作时,T/C1计数器TCNT1中的计数值被写入输入捕获寄存器ICR1中,并置位输入捕获标志位ICF1,申请中断处理。

寄存器ICR1由两个8位寄存器ICR1H、ICR1L组成,当T/C1工作在输入捕捉模式时,一旦外部引脚ICP1或模拟比较器有输入捕捉触发信号产生,计数器的TCNT1中的计数值写入寄存器ICR1中。T/C1工作在其他模式时,如PWM模式,ICR1的设定值可作为计数器计数上限(TOP)值。此时ICP1引脚与计数器脱离,将禁止输入捕获功能。

输入捕捉事件发生后产生的中断申请标志ICF1,以及相应的中断屏蔽控制位TICIE1可以在定时计数器中断标志寄存器TIFR和定时器中断屏蔽寄存器TIMSK中找到。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈