小5带你飞(8)—AVR(ATmega 328P)单片机片内ADC的原理和使用(1)
ATmega328p内部集成了一个10位的逐次逼近的A/D转换器。该转换器与一个8通道的模拟多路复用器连接。它能够对来自端口A的8路单端输入电压进行采样。
ADC转换模块的原理图
看一下它的基本特性:
10位分辨率
0.5 LSB积分非线性
±2 LSB绝对精度
13 -~260µs转换时间
最高采样速率76.9 kSPS/s
6路可选的单端输入通道
2路额外多路复用单端输入通道(TQFP 、QFN/MLF)
温度传感器输入通道
ADC读取的结果可设置为左端对其
0~Vcc ADC输入电压范围
可选择1.1v ADC参考电压
自由连续转换模式和单次转换模式
在ADC转换完成时中断
睡眠模式噪音消除
ADC的供电和参考电压:
ADC由独立的专用的模拟电压引脚AVCC供电,AVCC和VCC的电压差别不能大于±0.3V。
ADC的参考电源可以是芯片内部的1.1v的参考电源,也可以是AVCC,也可以采用外部参考电源,使用外部参考电源的时候,外部参考电源可由引脚AREF接入,使用内部参考电压源的时候,可以通过在AREF引脚外部并接一个电容来提高ADC的抗噪性能。这个电容一般可为0.1uF
与ADC有关的寄存器:
ADMUX:多路复用选择寄存器
bit6、bit7 :ADC参考电压选择。如果在转换过程中改变了设置,则只有等待当前转换结束后才起作用。如果在 AREF引脚上施加了外部参考电压,则内部参考电压将不能被选择。这个参考电压的选择见下图:
还是解释一下:
00 :AREF,内部基准源关闭
01 :AVCC,AREF外接滤波电容
10 : 保留
11 :1.1v内部基准电压源,AREF外接滤波电容
bit5:转换结果对齐位。置位左对齐,清位右对齐
bit4:一个保留位
bit3~bit0:模拟通道选择位
就是选择连接到哪个通道上,这个没啥说的。看表就好了,如下:
2. ADCSRA:ADC控制和状态寄存器A
bit7:ADC使能位。置位则启动ADC功能,清位ADC功能关闭
bit6:ADC开始转换。
在单次转换模式下,该位置位将启动一次ADC转换,在连续转换模式下,该位置位,将启动首次转换
bit5:ADC自动触发使能位。
该位置位,则启动ADC自动触发功能。
bit4:ADC中断标志位
ADC转换结束且数据寄存器被更新后该位置位,如果ADIE及SREG寄存器中的全局中断使能位I被置位,
则ADC转换结束中断服务程序被执行,同时该位被硬件清零,也可以通过软件写1清零。
bit3:ADC中断使能位。如果该位及SREG寄存器中的全局中断使能位I被置位,则ADC转换结束中断将被使能。
bit2~bit0:ADC预分频器的选择。这三位决定ADC输入时钟与CPU时钟之间的分频系数,如下表:
3. ADCL 、 ADCH :ADC数据寄存器
分别是左对齐的和右对齐的数据
ADC转换结束后,转换结果将存在这两个寄存器当中。首先ADMUX寄存器当中的ADLAR和MUXn影响转换结果在寄存器中的存放形式。当ADCL被读取时,ADC数据寄存器在读取ADCH之前不会更新,如果转换结果为左对齐且只需要8位的精度,那么仅需要读取ADCH就可以了,否则需先读取ADCL然后读取ADCH。
4.ADCSRB :ADC控制和状态寄存器B
bit2~bit0:ADC自动触发源的选择
说明一下吧:
000:连续转换模式
001:模拟比较器
010:外部中断请求0
011:定时器/计数器0比较匹配A
100:定时器/计数器0溢出
101: 定时器/计数器0比较匹配B
110:定时器DIDR0数器1溢出
111:定时器/计数器1捕捉事件
5. DIDR0:数字输入禁用寄存器0
说明一下:
bit5~bit0 :当这些位置位,相应的ADC引脚的数字输入缓存区被禁止,相应的PIN寄存器读取的时候都为0,
模拟信号运用于ADC5~ADC0,是不需要这么做的,ADC6和ADC7是没有缓存区的。
下面来看看ADC的基本使用步骤:
ADC输入端口初始化
基准电压的设置,数据对齐方式的设置,通道的选择。(ADMUX寄存器的配置)
AD使能,启动装换,中断的设置(ADCSRA寄存器的设置)
触发源的选择(ADCSRB寄存器的设置)
选择中断号,编写中断服务程序,读取ADC的数据(ADCL 、 ADCH )
好的,关于ADC的寄存器就写这么多了,下一篇我们来写ADC的驱动程序。
更多内容请关注头条号:小5嵌入式
小5带你飞(9)—AVR(ATmega 328P)单片机片内ADC的原理和使用(2)
在上一篇文章中,主要介绍了ADC涉及到的相关寄存器,在这一篇文章中,主要来编写实现ADC驱动程序。
代码如下:
更多内容请关注头条号:小5嵌入式
相关问答
avr 是什么 单片机 ?AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetComputer)精简指令集高速8位单片机。AVR的单片机可以广泛应用...
AVR单片机 中ICC avr软件用来干什么的?用来烧程序吗?还有avr ...还有avrstudio作用?显示器戴尔讨论回答(3)AVR单片机中ICCavr软件用来编辑、编译代码的。avrstudio作用包含ICCavr的功用,不但可以编辑、编译程序代码...
avr单片机 和51的区别?①AVR单片机(ATmega16)的时钟源(晶振、内部RC等)可以不经过分频直接提供给CPU使用,而51的CPU主频等于晶振的12分频,ATmega16外部提供16M的晶振,所以AVR单...
为什么很少有 AVR单片机 的教程?AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业....
俺是机械厂搬运工,想自学 单片机 ,请问 AVR 和STM8 单片机 哪个容易入门?本人在校学习的是avr,工作后接触的是stm32。我建议,直接学习stm。原因有两条:1,综合学习成本低。a.stm8的开发板和avrmega系列的开发板价格差异不大。b....
初学者选择哪种 单片机 学习比较好?单片机的种类很多,若基础知识扎实,不论选择哪款单片机入门皆可,但对于普通的单片机初学者建议还是以简单的AT89S51单片机入门较好。选用该单片机入门有以下优...
Arduino和 单片机 有什么区别?先学哪个比较好?Arduino的核心是一块AVR单片机,单片机就是一个芯片,而Arduino是一套软硬件都封装了的模块。肯定是学单片机啊,Arduino也就是玩玩而已,真正有技术含量有产品应...
炫飞模式用什么芯片?炫飞模式是一种LED炫彩灯效模式,通常使用的是AtmelAVR单片机芯片来控制灯光的闪烁和变换。该芯片具有较高的性能和可靠性,能够准确地控制灯光的变换和节拍,同...
目前常用的 单片机 型号有哪些?都有什么优缺点?现在市场上的单片机型号可以说是非常多的,其中有通用型的单片机,还有专用型的单片机。专用型单片机一般我们不常见到。今天我们结合这个问题来介绍一下目前常...
AVR单片机 asm("nop");什么意思,8M的话多少,时间?AVR单片机中asm("nop");这条语句,其中asm()的作用是指函数内部的参数翻译为汇编指令,其作用是在C语言环境下直接使用汇编指令执行。nop是一个空...AVR单...