首页 理论教育 零点起步:AVR单片机控制寄存器解析

零点起步:AVR单片机控制寄存器解析

时间:2023-10-17 理论教育 版权反馈
【摘要】:当FOC1A/FOC1B位置1,立即强制波形产生单元进行比较匹配。COM1x[1∶0]位的值决定强制比较的效果。按照ICES1的设置捕获到一个事件后,计数器的数值被复制到ICR1寄存器。TEMP是所有的16位寄存器共用的。在计数器运行期间修改TCNT1的内容有可能丢失一次TCNT1与OCR1x的比较匹配操作。写TCNT1寄存器将在下一个定时器周期阻塞比较匹配。ICR1的设定值可作为计数器的TOP值。

零点起步:AVR单片机控制寄存器解析

1.T/C1控制寄存器——TCCR1A

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

●位[7∶6]——COM1A[1∶0]:通道A的比较输出模式。

●位[5∶4]——COM1B[1∶0]:通道B的比较输出模式。

COM1A[1∶0]与COM1B[1∶0]分别控制OC1A与OC1B状态。如果COM1A[1∶0](COM1B[1∶0])的一位或两位被写入1,OC1A(OC1B)输出功能将取代I/O端口功能。此时OC1A(OC1B)相应的输出引脚数据方向控制必须置位以使能输出驱动器。

OC1A(OC1B)与物理引脚相连时,COM1x[1∶0]的功能由WGM1[3∶0]的设置决定。表7-6中给出当WGM1[3∶0]设置为普通模式与CTC模式(非PWM)时COM1x[1∶0]的功能定义。

表7-6 比较输出模式,非PWM

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

表7-7给出WGM1[3∶0]设置为快速PWM模式时COM1x[1∶0]的功能定义。

表7-7 WGM1[3∶0]设置为快速PWM模式时COM1x[1∶0]的功能定义

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

当OCR1A/OCR1B等于TOP且COM1A1/COM1B1置位时,比较匹配被忽略,但OC1A/OC1B的置位/清零操作有效。

表7-8给出当WGM1[3∶0]设置为相位修正PWM模式或相频修正PWM模式时COM1x[1∶0]的功能定义。

表7-8 WGM1[3∶0]设置为相位修正PWM模式时COM1x[1∶0]的功能定义

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

OCR1A/OCR1B等于TOP且COM1A1/COM1B1置位是一个特殊情况。详细信息如表7-8所示。

●位3——FOC1A:通道A强制输出比较。

●位2——FOC1B:通道B强制输出比较。

FOC1A/FOC1B只有当WGM1[3∶0]指定为非PWM模式时被激活。为了与未来器件兼容,工作在PWM模式下对TCCR1A写入时,这两位必须清零。当FOC1A/FOC1B位置1,立即强制波形产生单元进行比较匹配。COM1x[1∶0]的设置改变OC1A/OC1B的输出。

注意FOC1A/FOC1B位作为选通信号。COM1x[1∶0]位的值决定强制比较的效果。在CTC模式下使用OCR1A作为TOP值,FOC1A/FOC1B选通即不会产生中断也不好清除定时器

FOC1A/FOC1B位总是读为0。

●位[1∶0]——WGM1[1∶0]:波形发生模式。

这两位与位于TCCR1B寄存器的WGM1[3∶2]相结合,用于控制计数器的计数序列—计数器计数的上限值和确定波形发生器的工作模式(如表7-9所示)。T/C支持的工作模式有:普通模式(计数器)、比较匹配时清零定时器(CTC)模式和三种脉宽调制(PWM)模式。

表7-9 波形产生模式的位描述

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

CTC1和PWM1[1∶0]的定义已经不再使用了,要使用WGM1[2∶0]。但是两个版本的功能和位置是兼容的。

2.T/C1控制寄存器B——TCCR1B。

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

(1)位7——ICNC1:输入捕捉噪声抑制器

置位ICNC1将使能输入捕捉噪声抑制功能。此时外部引脚ICP1的输入被滤波。其作用是从ICP1引脚连续进行4次采样。如果4个采样值都相等,那么信号送入边沿检测器。因此使能该功能使得输入捕捉被延迟了4个时钟周期。

(2)位6——ICES1:输入捕捉触发沿选择

该位选择使用ICP1上的哪个边沿触发捕获事件。ICES为“0”时,选择的是下降沿触发输入捕捉;ICES1为“1”时,选择的是逻辑电平的上升沿触发输入捕捉。

按照ICES1的设置捕获到一个事件后,计数器的数值被复制到ICR1寄存器。捕获事件还会置为ICF1。如果此时中断使能,输入捕捉事件即被触发。

当ICR1用做TOP值(见TCCR1A与TCCR1B寄存器中WGM1[3∶0]位的描述)时,ICP1与输入捕捉功能脱开,从而输入捕捉功能被禁用。

(3)位5——保留位

该位保留。为保证与将来器件的兼容性,写TCCR1B时,该位必须写入“0”。

(4)位[4∶3]——WGM1[3∶2]:波形发生模式

见TCCR1A寄存器中的描述。

(5)位[2∶0]——CS1[2∶0]:时钟选择

该3位用于选择T/C的时钟源,如表7-10所示。

表7-10 时钟选择位描述(www.xing528.com)

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

选择使用外部时钟源后,即使T1引脚被定义为输出,其1引脚上的逻辑信号电平变化仍然会驱动T/C1计数,这个特性允许用户通过软件来控制计数。

3.T/C1数据寄存器——TCCR1A(TCNT1H与TCNT1L)

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

TCNT1H与TCNT1L组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数器单元的16位计数器进行读写访问。为保证CPU对高字节与低字节的同时读写,必须使用一个8位临时高字节寄存器TEMP。TEMP是所有的16位寄存器共用的。在计数器运行期间修改TCNT1的内容有可能丢失一次TCNT1与OCR1x的比较匹配操作。写TCNT1寄存器将在下一个定时器周期阻塞比较匹配。

4.输出比较寄存器1A——OCR1AH与OCR1AL

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

5.输出比较寄存器1B——OCR1BH与OCR1BL

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

该寄存器中的16位数据与TCNT1寄存器中的计数值进行连续的比较,一旦数据匹配,将产生一个输出比较中断,或改变OC1x的输出逻辑电平。

输出比较寄存器长度为16位。为保证CPU对高字节与低字节的同时读写,必须使用一个8位临时高字节寄存器TEMP。TEMP是所有的16位寄存器共用的。

6.输入捕捉寄存器1——ICR1H与ICR1L

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

当外部引脚ICP1(或T/C1的模拟比较器)有输入捕捉触发信号产生时,计数器TC-NT1中的值写入ICR1中。ICR1的设定值可作为计数器的TOP值。

输入捕捉寄存器长度为16位。为保证CPU对高字节与低字节的同时读写,必须使用一个8位临时高字节寄存器TEMP。TEMP是所有的16位寄存器共用的。

7.T/C1中断屏蔽寄存器——TIMSK

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

●位5——TICIE1:T/C1输入捕捉中断使能

当该位被设为“1”,且状态寄存器中的I位被设为“1”时,T/C1的输入捕捉中断使能。一旦TIFR的ICF1置位,CPU即开始执行T/C1输入捕捉中断服务程序。

●位4——OCIE1A:输出比较A匹配中断使能

当该位被设为“1”,且状态寄存器中的I位被设为“1”时,T/C1的输出比较A匹配中断使能。一旦TIFR上的OCF1A置位,CPU即开始执行T/C1输出比较A匹配中断服务程序。

●位3——OCIE1B:T/C1输出比较B匹配中断使能

当该位被设为“1”,且状态寄存器中的I位被设为“1”时,T/C1的输出比较B匹配中断使能。一旦TIFR上的OCF1B置位,CPU即开始执行T/C1输出比较B匹配中断服务程序。

●位2——TOIE1:T/C1溢出中断使能

当该位被设为“1”,且状态寄存器中的I位被设为“1”时,T/C1的溢出中断使能。一旦TIFR上的TOV1置位,CPU即开始执行T/C1溢出中断服务程序。注意该寄存器包含几个T/C的中断控制位但本节中只对T1位进行说明其余位将在各自的小节中加以说明

8.T/C中断标志寄存器——TIFR

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

注意:该寄存器包含几个T/C的标志位,但本节中只对T1位进行说明,其余位将在各自的小节中加以说明。

●位5——ICF1:T/C1输入捕捉标志位

外部引脚ICP1出现捕捉事件时ICF1置位。此外,当ICR1作为计数器的TOP值时,一旦计数器值达到TOP,ICF1也置位。

执行输入捕捉中断服务程序时ICF1自动清零。也可以对其写入逻辑“1”来清除该标志位。

●位4——OCF1A:T/C1输出比较A匹配标志位

当TCNT1与OCR1A匹配成功时,该位被设为“1”。强制输出比较(FOC1A)不会置位OCF1A。

执行强制输出比较匹配A中断服务程序时OCF1A自动清零。也可以对其写入逻辑“1”来清除该标志位。

●位3——OCF1B:T/C1输出比较B匹配标志位

当TCNT1与OCR1B匹配成功时,该位被设为“1”。强制输出比较(FOC1B)不会置位OCF1B。

执行强制输出比较匹配B中断服务程序时OCF1B自动清零。也可以对其写入逻辑“1”来清除该标志位。

●位2——TOV1:T/C1溢出标志

该位的设置与T/C1的工作方式有关。工作于普通模式和CTC模式时,T/C1溢出时TOV1置位。对工作在其他模式下的TOV1标志位置位。执行溢出中断服务程序时OCF1A自动清零。也可以对其写入逻辑“1”来清除该标志位。

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

我要反馈