首页 理论教育 ADCI/O寄存器—AVR单片机开发入门实例

ADCI/O寄存器—AVR单片机开发入门实例

时间:2023-10-17 理论教育 版权反馈
【摘要】:无论ADC是否正在进行转换,改变ADLAR位都将会立即影响ADC数据寄存器。如在ADC转换过程中将ADC关闭,该次转换随即停止。ADC的自动转换触发信号源由SFIOR寄存器中的ADTS位选择确定。ADIF在执行相应的中断处理向量时被硬件自动清零。否则,必须先读取ADCL寄存器,再读取ADCH寄存器。当ADCSRA寄存器中的ADATE为“1”,允许ADC工作在自动转换触发工作模式时,这3位的设置用于选择ADC的自动转换触发源。

ADCI/O寄存器—AVR单片机开发入门实例

1.ADC多路复用器选择寄存器——ADMUX

978-7-111-35161-0-Chapter09-7.jpg

(1)位7、6——REFS[1∶0]:ADC参考电源选择

REFS1、REFS2用于选择ADC的参考电压源,如表9-3所示。如果这些位在ADC转换过程中被改变,新的选择将在该次ADC转换完成后(ADCSRA中的ADIF被置位)才生效。一旦选择内部参考源(AVcc、2.56V)为ADC的参考电压后,AREF引脚上不得施加外部的参考电源,只能与GND之间并接抗干扰电容。

表9-3 ADC参考电源选择

978-7-111-35161-0-Chapter09-8.jpg

(2)位5——ADLAR:ADC结果左对齐选择

ADLAR位决定转换结果在ADC数据寄存器中的存放形式。写“1”到ADLAR位,将使转换结果左对齐(LEFTADJUST);否则,转换结果为右对齐(RIGHT ADJUST)。无论ADC是否正在进行转换,改变ADLAR位都将会立即影响ADC数据寄存器。

(3)位[4∶0]——MUX[4∶0]:模拟通道和增益选择

这5个位用于对连接到ADC的输入通道和差分通道的增益进行选择设置,如表9-4所示。注意,只有转换结束后(ADCSRA的ADIF是“1”),改变这些位才会有效。

表9-4 ADC输入通道和增益选择

978-7-111-35161-0-Chapter09-9.jpg

(续)

978-7-111-35161-0-Chapter09-10.jpg

2.ADC控制和状态寄存器A——ADCSRA

978-7-111-35161-0-Chapter09-11.jpg

(1)位7——ADEN:ADC使能

该位写入“1”时使能ADC,写入“0”关闭ADC。如在ADC转换过程中将ADC关闭,该次转换随即停止。

(2)位6——ADSC:ADC转换开始

在单次转换模式下,置该位为“1”,将启动一次转换。在自由连续转换模式下,该位写入“1”将启动第一次转换。先置位ADEN位使能ADC,再置位ADSC;或置位ADSC的同时使能ADC,都会使能ADC开始进行第一次转换。第一次ADC转换将需要25个ADC时钟周期,而不是常规转换的13个ADC时钟周期,这是因为第一次转换需要完成对ADC的初始化

在ADC转换的过程中,ADSC将始终读出为“1”。当转换完成时,它将转变为“0”。强制写入“0”是无效的。

(3)位5——ADATE:ADC自动转换触发允许(www.xing528.com)

当该位被置为“1”时,允许ADC工作在自动转换触发工作模式下。在该模式下,在触发信号的上升沿时ADC将自动开始一次ADC转换过程。ADC的自动转换触发信号源由SFIOR寄存器中的ADTS位选择确定。

(4)位4——ADIF:ADC中断标志位

当ADC转换完成并且ADC数据寄存器被更新后该位被置位。如果ADIE位(ADC转换结束中断允许)和SREG寄存器中的I位被置“1”,ADC中断服务程序将被执行。ADIF在执行相应的中断处理向量时被硬件自动清零。此外,ADIF位可以通过写入逻辑“1”来清零。

(5)位3——ADIE:ADC中断允许

当该位和SREG寄存器中的I位同时被置位时,允许ADC转换完成中断。

(6)位[2∶0]——ADPS[2∶0]:ADC预分频选择

这些位决定了XTAL时钟与输入到ADC的ADC时钟之间分频数,如表9-5所示。

表9-5 ADC时钟分频

978-7-111-35161-0-Chapter09-12.jpg

3.ADC数据寄存器——ADCL和ADCH

(1)ADLAR=0,ADC转换结果右对齐时,ADC结果的保存方式

978-7-111-35161-0-Chapter09-13.jpg

(2)ADLAR=1,ADC转换结果左对齐时,ADC结果的保存方式

978-7-111-35161-0-Chapter09-14.jpg

当ADC转换完成后,可以读取ADC寄存器的ADC0~ADC9得到ADC的转换的结果。如果是差分输入,转换值为二进制补码形式。一旦开始读取ADCL后,ADC数据寄存器就不能被ADC更新,直到ADCH寄存器被读取为止。因此,如果结果是左对齐(ADLAR=1),且不需要大于8位的精度的话,仅仅读取ADCH寄存器就足够了。否则,必须先读取ADCL寄存器,再读取ADCH寄存器。ADMUX寄存器中的ADLAR位决定了从ADC数据寄存器中读取结果的格式。如果ADLAR位为“1”,结果将是左对齐;如果ADLAR位为“0”(默认情况),结果将是右对齐。

4.特殊功能I/O寄存器——SFIOR

978-7-111-35161-0-Chapter09-15.jpg

位[7∶5]——ADTS[2∶0]:ADC自动转换触发源选择,如表9-6所示。

当ADCSRA寄存器中的ADATE为“1”,允许ADC工作在自动转换触发工作模式时,这3位的设置用于选择ADC的自动转换触发源。如果禁止了ADC的自动转换触发(ADATE为“0”),这3个位的设置值将不起任何作用。

表9-6 ADC自动转换触发源的选择

978-7-111-35161-0-Chapter09-16.jpg

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

我要反馈