然后紧接着就是模数转换器了~~

然后就先不写了~~

~~

九、ATMEGA16的模数转换器

九—(01)、ATMEGA16的模数转换器的介绍

1、介绍

1)特点:

• 10 位 精度

• 0.5 LSB 的非线性度

• ± 2 LSB 的绝对精度

• 65 - 260 μs 的转换时间

• 最高分辨率时采样率高达15 kSPS

• 8 路复用的单端输入通道

• 7 路差分输入通道

• 2 路可选增益为10x 与200x 的差分输入通道

• 可选的左对齐ADC 读数

• 0 - VCC 的 ADC 输入电压范围

• 可选的2.56V ADC 参考电压

• 连续转换或单次转换模式

• 通过自动触发中断源启动ADC 转换

• ADC 转换结束中断

• 基于睡眠模式的噪声抑制器

Note: 1. 在PDIP封装下的差分输入通道器件未经测试。只保证器件在TQFP 与MLF封装下正常

工作。

2)介绍和框图

ATmega16有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能

对来自端口A 的8 路单端输入电压进行采样。单端电压输入以0V (GND) 为基准。

器件还支持16 路差分电压输入组合。两路差分输入(ADC1、ADC0 与ADC3、ADC2)

有可编程增益级,在A/D 转换前给差分输入电压提供0dB(1x)、20dB(10x) 或46dB(200x)

的放大级。七路差分模拟输入通道共享一个通用负端(ADC1), 而其他任何ADC 输入可做

为正输入端。如果使用1x 或10x 增益,可得到8 位分辨率。如果使用200x 增益,可得

到7 位分辨率。

ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定。ADC 的

框图如 Figure 98 所示。

ADC 由AVCC 引脚单独提供电源。AVCC 与VCC 之间的偏差不能超过± 0.3V

标称值为2.56V 的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF

引脚上加一个电容进行解耦,以更好地抑制噪声。

2、ADC的工作过程

ADC 通过逐次逼近的方法将输入的模拟电压转换成一个10 位的数字量。最小值代表

GND,最大值代表AREF引脚上的电压再减去1 LSB。通过写ADMUX寄存器的REFSn位

可以把AVCC 或内部2.56V 的参考电压连接到AREF 引脚。在AREF 上外加电容可以对

片内参考电压进行解耦以提高噪声抑制性能。

模拟输入通道与差分增益可以通过写ADMUX 寄存器的MUX 位来选择。任何ADC 输入

引脚,像GND 及固定能隙参考电压,都可以作为ADC 的单端输入。ADC 输入引脚可选

做差分增益放大器的正或负输入。

如果选择差分通道,通过选择被选输入信号对的增益因子得到电压差分放大级。然后放大

值成为ADC 的模拟输入。如果使用单端通道,将绕过增益放大器。

通过设置ADCSRA 寄存器的ADEN 即可启动ADC。只有当ADEN 置位时参考电压及输

入通道选择才生效。ADEN 清零时ADC 并不耗电,因此建议在进入节能睡眠模式之前关

闭ADC。

ADC转换结果为10位,存放于ADC数据寄存器ADCH及ADCL中。默认情况下转换结果为

右对齐,但可通过设置ADMUX 寄存器的ADLAR 变为左对齐。

如果要求转换结果左对齐,且最高只需8 位的转换精度,那么只要读取ADCH 就足够了。

否则要先读ADCL,再读ADCH,以保证数据寄存器中的内容是同一次转换的结果。一旦

读出ADCL, ADC 对数据寄存器的寻址就被阻止了。也就是说,读取ADCL 之后,即使

在读ADCH 之前又有一次ADC 转换结束,数据寄存器的数据也不会更新,从而保证了转

换结果不丢失。ADCH 被读出后, ADC 即可再次访问ADCH 及ADCL 寄存器。

ADC转换结束可以触发中断。即使由于转换发生在读取ADCH与ADCL之间而造成ADC无

法访问数据寄存器,并因此丢失了转换数据,中断仍将触发。

3、启动一次转换

向 ADC 启动转换位ADSC 位写"1” 可以启动单次转换。在转换过程中此位保持为高,直

到转换结束,然后被硬件清零。如果在转换过程中选择了另一个通道,那么ADC 会在改

变通道前完成这一次转换。

ADC转换有不同的触发源。设置ADCSRA寄存器的ADC自动触发允许位ADATE可以使能

自动触发。设置ADCSRB 寄存器的ADC 触发选择位ADTS 可以选择触发源( 见触发源

列表中对ADTS 的描述)。当所选的触发信号产生上跳沿时, ADC 预分频器复位并开始

转换。这提供了一个在固定时间间隔下启动转换的方法。转换结束后即使触发信号仍然存

在,也不会启动一次新的转换。如果在转换过程中触发信号中又产生了一个上跳沿,这个

上跳沿将被忽略。即使特定的中断被禁止或全局中断使能位为0,中断标志仍将置位。这

样可以在不产生中断的情况下触发一次转换。但是为了在下次中断事件发生时触发新的

转换,必须将中断标志清零。

使用ADC 中断标志作为触发源,可以在正在进行的转换结束后即开始下一次ADC 转换。

之后ADC 便工作在连续转换模式,持续地进行采样并对ADC 数据寄存器进行更新。第

一次转换通过向ADCSRA 寄存器的ADSC 写1 来启动。在此模式下,后续的ADC 转换

不依赖于ADC 中断标志ADIF 是否置位。

如果使能了自动触发,置位ADCSRA 寄存器的ADSC 将启动单次转换。ADSC 标志还

可用来检测转换是否在进行之中。不论转换是如何启动的,在转换进行过程中ADSC 一

直为1。

4、预分频及ADC

转换时序

在默认条件下,逐次逼近电路需要一个从50 kHz到200 kHz的输入时钟以获得最大精度。

如果所需的转换精度低于10 比特,那么输入时钟频率可以高于200 kHz,以达到更高的

采样率。

ADC 模块包括一个预分频器,它可以由任何超过100 kHz 的CPU 时钟来产生可接受的

ADC 时钟。预分频器通过ADCSRA 寄存器的ADPS 进行设置。置位ADCSRA 寄存器的

ADEN 将使能ADC,预分频器开始计数。只要ADEN 为1,预分频器就持续计数,直到

ADEN 清零。

ADCSRA寄存器的ADSC置位后,单端转换在下一个ADC时钟周期的上升沿开始启动。差

分转换时序见P197“ 差分增益信道” 。

正常转换需要13 个ADC 时钟周期。为了初始化模拟电路,ADC 使能(ADCSRA 寄存器

的ADEN 置位) 后的第一次转换需要25 个ADC 时钟周期。

在普通的ADC 转换过程中,采样保持在转换启动之后的1.5 个ADC 时钟开始;而第一次

ADC转换的采样保持则发生在转换启动之后的13.5 个ADC时钟。转换结束后,ADC结果

被送入ADC 数据寄存器,且ADIF 标志置位。ADSC 同时清零( 单次转换模式)。之后软

件可以再次置位ADSC 标志,从而在ADC 的第一个上升沿启动一次新的转换。

使用自动触发时,触发事件发生将复位预分频器。这保证了触发事件和转换启动之间的延

时是固定的。在此模式下,采样保持在触发信号上升沿之后的2 个ADC 时钟发生。为了

实现同步逻辑需要额外的3 个CPU 时钟周期。如果使用差分模式,加上不是由ADC 转

换结束实现的自动触发,每次转换需要25 个ADC 时钟周期。因为每次转换结束后都要

关闭ADC 然后又启动它。

在连续转换模式下,当ADSC 为1 时,只要转换一结束,下一次转换马上开始。转换时

间请见 Table 81。

5、差分增益信道

当使用差分增益通道,需要考虑转换的确定特征。

差分转换与内部时钟CKADC2 同步等于ADC 时钟的一半。同步是当ADC 接口在CKADC2

边沿出现采样与保持时自动实现的。当CKADC2 为低时,通过用户启动转换( 即,所有的

单次转换与第一次连续转换) 将与单端转换使用的时间( 接着的预分频后的13 个 ADC 时

钟周期)。当 CKADC2 为高时,由于同步机制,将会使用14 个 ADC 时钟周期。在连续转

换模式时,一次转换结束后立即启动新的转换,而由于CKADC2 此时为高,所有的自动启

动( 即除第一次外) 将使用14 个 ADC 时钟周期。

在所有的增益设置中,当带宽为4 kHz 时增益级最优。更高的频率可能会造成非线性放

大。当输入信号包含高于增益级带宽的频率时,应在输入前加入低通滤波器。注意,ADC

时钟频率不受增益级带宽限制。比如,不管通道带宽是多少, ADC 时钟周期为6 μs,允

许通道采样率为12 kSPS。

如果使用差分增益通道且通过自动触发启动转换,在转换时ADC 必须关闭。当使用自动

触发时, ADC 预分频器在转换启动前复位。由于在转换前的增益级依靠稳定的ADC 时

钟,该转换无效。在每次转换( 在寄存器 ADCSRA 的ADEN 位中 写 “0” 接着为“1”),通

过禁用然后重使能ADC,只执行扩展转换。扩展转换结果有效。

6、改变通道和基准源

ADMUX寄存器中的MUXn及REFS1:0通过临时寄存器实现了单缓冲。CPU可对此临时寄

存器进行随机访问。这保证了在转换过程中通道和基准源的切换发生于安全的时刻。在转

换启动之前通道及基准源的选择可随时进行。一旦转换开始就不允许再选择通道和基准

源了,从而保证ADC 有充足的采样时间。在转换完成(ADCSRA 寄存器的ADIF 置位) 之

前的最后一个时钟周期,通道和基准源的选择又可以重新开始。转换的开始时刻为ADSC

置位后的下一个时钟的上升沿。因此,建议用户在置位ADSC 之后的一个ADC 时钟周期

里,不要操作ADMUX 以选择新的通道及基准源。

使用自动触发时,触发事件发生的时间是不确定的。为了控制新设置对转换的影响,在更

新ADMUX 寄存器时一定要特别小心。

若ADATE及ADEN都置位,则中断事件可以在任意时刻发生。如果在此期间改变ADMUX

寄存器的内容,那么用户就无法判别下一次转换是基于旧的设置还是最新的设置。在以下

时刻可以安全地对ADMUX 进行更新:

1. ADATE 或ADEN 为 0

2. 在转换过程中,但是在触发事件发生后至少一个ADC 时钟周期

3. 转换结束之后,但是在作为触发源的中断标志清零之前

如果在上面提到的任一种情况下更新ADMUX,那么新设置将在下一次ADC 时生效。

当改变差分通道时要特别注意。一旦选定差分通道,增益级要用125 μs 来稳定该值。因

此在选定新通道后的125 μs 内不应启动转换。或舍弃该时间段内的转换结果。

7、ADC

输入通道

选择模拟通道时请注意以下指导方针:

工作于单次转换模式时,总是在启动转换之前选定通道。在ADSC 置位后的一个ADC 时

钟周期就可以选择新的模拟输入通道了。但是最简单的办法是等待转换结束后再改变通

道。

在连续转换模式下,总是在第一次转换开始之前选定通道。在ADSC 置位后的一个ADC

时钟周期就可以选择新的模拟输入通道了。但是最简单的办法是等待转换结束后再改变

通道。然而,此时新一次转换已经自动开始了,下一次的转换结果反映的是以前选定的模

拟输入通道。以后的转换才是针对新通道的。

当切换到差分增益通道,由于自动偏移抵消电路需要沉积时间,第一次转换结果准确率很

低。用户最好舍弃第一次转换结果。

8、ADC

基准电压源

ADC的参考电压源(VREF)反映了ADC的转换范围。若单端通道电平超过了VREF,其结果将

接近0x3FF。VREF 可以是AVCC、内部2.56V 基准或外接于AREF 引脚的电压。

AVCC通过一个无源开关与ADC相连。片内的2.56V参考电压由能隙基准源(VBG)通过内部

放大器产生。无论是哪种情况,AREF 都直接与ADC 相连,通过在AREF 与地之间外加

电容可以提高参考电压的抗噪性。VREF 可通过高输入内阻的伏特表在AREF 引脚测得。

由于VREF 的阻抗很高,因此只能连接容性负载。

如果将一个固定电源接到AREF 引脚,那么用户就不能选择其他的基准源了,因为这会导

致片内基准源与外部参考源的短路。如果AREF 引脚没有联接任何外部参考源,用户可以

选择AVCC 或1.1V 作为基准源。参考源改变后的第一次ADC 转换结果可能不准确,建

议用户不要使用这一次的转换结果。

9、相关寄存器

1)ADMUX

• Bit 7:6 – REFS1:0: 参考电压选择

如Table 83 所示,通过这几位可以选择参考电压。如果在转换过程中改变了它们的设置,

只有等到当前转换结束(ADCSRA 寄存器的ADIF 置位) 之后改变才会起作用。如果在

AREF 引脚上施加了外部参考电压,内部参考电压就不能被选用了。

• Bit 5 – ADLAR: ADC 转换结果 左对齐

ADLAR影响ADC转换结果在ADC数据寄存器中的存放形式。ADLAR置位时转换结果为左

对齐,否则为右对齐。ADLAR 的改变将立即影响ADC 数据寄存器的内容,不论是否有

转换正在进行。

• Bits 4:0 – MUX4:0: 模拟通道与增益选择位

通过这几位的设置,可以对连接到ADC 的模拟输入进行选择。也可对差分通道增益进行

选择。细节见Table 84。如果在转换过程中改变这几位的值,那么只有到转换结束

(ADCSRA 寄存器的ADIF 置位) 后新的设置才有效。

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

• Bit 7 – ADEN: ADC 使能

ADEN置位即启动ADC,否则ADC功能关闭。在转换过程中关闭ADC将立即中止正在进行

的转换。

• Bit 6 – ADSC: ADC 开始转换

在单次转换模式下,ADSC 置位将启动一次ADC 转换。在连续转换模式下,ADSC 置位

将启动首次转换。第一次转换( 在ADC 启动之后置位ADSC,或者在使能ADC 的同时置

位ADSC) 需要25 个ADC 时钟周期,而不是正常情况下的13 个。第一次转换执行ADC

初始化的工作。

在转换进行过程中读取ADSC 的返回值为"1”,直到转换结束。ADSC 清零不产生任何动

作。

• Bit 5 – ADATE: ADC 自动触发使能

ADATE置位将启动ADC自动触发功能。触发信号的上跳沿启动ADC转换。触发信号源通

过SFIOR 寄存器的ADC 触发信号源选择位ADTS 设置。

• Bit 4 – ADIF: ADC 中断标志

在ADC 转换结束,且数据寄存器被更新后, ADIF 置位。如果ADIE 及SREG 中的全局

中断使能位I 也置位,ADC 转换结束中断服务程序即得以执行,同时ADIF 硬件清零。此

外,还可以通过向此标志写1 来清ADIF。要注意的是,如果对ADCSRA 进行读-修改

-写操作,那么待处理的中断会被禁止。这也适用于SBI 及CBI 指令。

• Bit 3 – ADIE: ADC 中断使能

若ADIE 及SREG 的位I 置位, ADC 转换结束中断即被使能。

• Bits 2:0 – ADPS2:0: ADC 预分频器选择位

由这几位来确定XTAL 与ADC 输入时钟之间的分频因子。

3)ADC 数据寄存器- ADCL 及ADCH

ADC 转换结束后,转换结果存于这两个寄存器之中。如果采用差分通道,结果由2 的补码

形式表示。

读取ADCL 之后,ADC 数据寄存器一直要等到ADCH 也被读出才可以进行数据更新。因

此,如果转换结果为左对齐,且要求的精度不高于8 比特,那么仅需读取ADCH 就足够

了。否则必须先读出ADCL 再读ADCH。

ADMUX 寄存器的 ADLAR 及MUXn 会影响转换结果在数据寄存器中的表示方式。如果

ADLAR 为1,那么结果为左对齐;反之( 系统缺省设置),结果为右对齐。

• ADC9:0: ADC 转换结果ADC 转换的结果。

4)特殊功能IO 寄存器- SFIOR

• Bit 7:5 – ADTS2:0: ADC 自动触发源

若ADCSRA 寄存器的ADATE 置位,ADTS 的值将确定触发ADC 转换的触发源;否则,

ADTS的设置没有意义。被选中的中断标志在其上升沿触发ADC转换。从一个中断标志清

零的触发源切换到中断标志置位的触发源会使触发信号产生一个上升沿。如果此时

ADCSRA 寄存器的ADEN 为1,ADC 转换即被启动。切换到连续运行模式(ADTS[2:0]=0)

时,即使ADC 中断标志已经置位也不会产生触发事件。

• Bit 4 – Res: 保留位

这一位保留。为了与以后的器件相兼容,在写SFIOR 时这一位应写0。

用atmega16编程十位数计算机,AVR单片机(学习ing)—(九)、ATMEGA16的模数转换器—01...相关推荐

  1. 用atmega16编程十位数计算机,mega16

    刚学AVR想用MEGA16做过数显电源,用BASCOM-AVR编程 用八段数码管分辨显示四位数电压,四位数电流,BASCOM编程(感觉比较简单学). 其凑八凑,凑足一个程序. 只是数显,东西到手了,上 ...

  2. 关于《十天学会AVR单片机》的教程头文件AVR_PQ1A.h

    最近开始学习AVR单片机,由于之前买的51开发板是兼容AVR单片机的,所以就没有必要开发板了.于是从网上找了一个教程<十天学会AVR单片机>,也是郭天祥公司的人讲的,觉得还可以.因为没有买 ...

  3. avr单片机流水灯程序c语言,AVR单片机学习C语言的流水灯验证

    AVR 的IO口简介与寄存器的概念 一.何谓"寄存器" 寄存器就是RAM中的一些特殊单元,映射片上外设的特殊功能 二.何谓"IO口" 可以将"0&qu ...

  4. AVR单片机学习--mega48_88_168熔丝位含义简述

    熔丝位简要说明   熔丝位 功能 配置说明 熔丝低位 CKDIV8 时钟8分频 0:时钟8分频 1:时钟不分频 CKOUT 时钟输出 0:系统时钟输出(PB0) 1:不输出 SUT1 选择启动时间 根 ...

  5. 从零开始的单片机学习(九)

    九.按键     1.按键相关知识         a.按键工作原理             (1)内部机械结构:按键外部表现为一个长方体,上部有一个圆柱体的按钮,下部有四个引脚.在内部四个引脚中有 ...

  6. AVR单片机模数转换的ADC实验 ATmega16

    6.2 模数转换的ADC实验 6.2.1.实例功能 AVR的模数转换器ADC具有下列特点: 10位精度: 0.5LSB积分非线形误差 ±2LSB的绝对精度: 13µs~260µs的转换时间: 在最大精 ...

  7. avr-gcc与avr单片机c语言开发 pdf,AVR 单片机与GCC 编程使用方法

    原标题:AVR 单片机与GCC 编程使用方法 WIN 是一个ATMEL AVR 系列 的开发工具集,它包含GNU C 和C++编译器 . 1.1 一个简单的例子 为了先有一个感性的认识,我们首先看一下 ...

  8. AVR单片机实践--ATmega16按键控制流水灯

    一.实验目的 1.掌握AVR单片机开发平台的搭建方法. 2.掌握GPIO的编程方法. 二.实验内容及结果 1.设计程序 自行设计电路,包括流水灯和4个按键,完成"按键控制流水灯样式" ...

  9. AVR 单片机与GCC 编程之存储器操作

    AVR 系列单片机内部有三种类型的被独立编址的存储器,它们分别为:Flash 程序存储器.内部SRAM 数据存储器和EEPROM 数据存储器. Flash 存储器为1K-128K 字节,支持并行编程和 ...

最新文章

  1. F. It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!
  2. 为什么新一代的Rust、Go等编程语言都如此讨厌if-else、Switch结构
  3. MySQL innodb下的记录锁,间隙锁,next-key锁
  4. 冰点还原精灵破解版|冰点还原精灵中文破解版下载(附冰点还原精灵注册机及许可证密钥)
  5. matlab:xlswrite
  6. Liang-Barskey裁剪算法(计算机图形学)
  7. 经典情歌Lionel Richie李昂纳尔·里奇 - hello -say you say me
  8. Python教学案例 - 三天打渔、两天晒网
  9. 【APP项目环境及发布平台】
  10. SOMv3.3.3二次开发中LUA脚本对机基础操作指南
  11. pdfmake支持html,pdfMake前端导出pdf
  12. 安装nvcc CUDNN
  13. 兰州大学计算机科学考研科目,2019兰州大学计算机考研初试科目、参考书目、报录比汇总...
  14. 在Scrapy中使用爬虫动态代理IP
  15. 史上最全Maven教程(四)
  16. 15秒,找到行业内最专业的内容,你想要吗
  17. git如何将远程仓库代码拉下覆盖本地仓库
  18. 数据结构 malloc
  19. cartoon drawing_卡通绘画(Cartoon drawing)
  20. vue 日历翻拍效果_VUE实现日历组件功能

热门文章

  1. 【编程杂谈】【书单】-陈皓大佬推荐书单
  2. win7下编译hyperic hq
  3. 产品经理之产品类题目
  4. Python语法规范
  5. Google帝国的接班人,凭什么是他?
  6. 是什么的简称_什么是“KDJ”?通俗易懂,让你了解股市上的那些英文简称
  7. 过年想网购不用愁,苏宁快递小哥这个春节不打烊!
  8. thinkpad卡在logo界面_windows7开机卡在开机Thinkpad LOGO画面如何解决
  9. clio7.0测试软件如何安装,clio珂莱欧气垫怎么换替换装?4个步骤轻松安装
  10. 平板电脑能安装java_手机上能安装的应用,平板电脑上是不是都能安装