ATmega16 之 AD转换与ADC中断程序


ATmega16
AD转换与ADC中断程序

ADC

PPT内容概览
? ? ? ? ? ATmega16内部 ADC 特点 模拟噪声抑制技术 ADC 转换结果 ADC 及相关寄存器 ADC 中断程序

2

1、ATmega16内部ADC特点
? ? ? ? ? ? 10 位精度,逐次逼近型 ADC 65 - 260 ?s 的转换时间 最高分辨率时采样率高达 15 kSPS 8 路复用的单端输入通道 7 路差分输入通道 2 路可选增益为 10x 与 200x 的差分输入通道

3

1、ATmega16内部ADC特点
? ? ? ? ? ? ? 可选的左对齐 ADC 读数 0 - VCC 的 ADC 输入电压范围 可选的 2.56V ADC 参考电压 连续转换或单次转换模式 通过自动触发中断源启动 ADC 转换 ADC 转换结束中断 基于睡眠模式的噪声抑制器

4

1、ATmega16内部ADC特点
? 一个10位的逐次逼近型 ADC,与一个8通道的模 拟多路复用器连接,能对来自端口 A 的8 路单端 输入电压进行采样。 ? ADC 包括一个采样保持电路 ? ADC 由 AVCC 引脚单独提供电源。AVCC与VCC 之间的偏差不能超过± 0.3V。

5

1、ATmega16内部ADC特点
? 逐次逼近电路需要一个从 50 kHz 到 200 kHz 的 输入时钟以获得最大精度(所需的转换精度低于 10 比特时输入时钟频率可以高于 200 kHz)

6

1、ATmega16内部ADC特点
? ADC 模块包括一个预分频器,可以由任何超过 100 kHz 的 CPU 时钟来产生可接受的 ADC 时钟 。预分频器通过 ADCSRA 寄存器的 ADPS 进行 设置。置位 ADCSRA 寄存器的 ADEN 将使能 ADC,预分频器开始计数。只要 ADEN 为1,预 分频器就持续计数,直到 ADEN 清零。

7

1、ATmega16内部ADC特点
? ADCSRA 寄存器的 ADSC 置位后,单端转换在 下一个 ADC 时钟周期的上升沿开始启动。

8

1、ATmega16内部ADC特点
? 正常转换需要 13 个 ADC 时钟周期。为了初始化 模拟电路,ADC 使能( ADCSRA 寄存器的 ADEN 置位) 后的第一次转换需要 25 个 ADC 时钟周期 。

9

1、ATmega16内部ADC特点

10

2、模拟噪声抑制技术 ? 设备内部及外部的数字电路都会产生电磁 干扰(EMI),从而影响模拟测量的精度。如 果转换精度要求较高,那么可以通过以下 方法来减少噪声:
- 1. 模拟通路越短越好。保证模拟信号线位于模拟地之上 ,并使它们与高速切换的数字信号线分开。 - 2. AVCC 应通过 LC 网络与数字电压源 VCC 连接。 - 3. 使用 ADC 噪声抑制器来降低来自 CPU 的干扰噪声。 - 4. 如果有其他 ADC 端口被用作数字输出,那么必须保 证在转换进行过程中它们不会有电平的切换。
11

3、ADC转换结果
? 转换结束后( ADIF 为高 ),转换结果被存入ADC 结果寄存器( ADCL, ADCH )。 ? 单次转换的结果如下( VIN 为被选中引脚的输入 电压):

12

3、ADC转换结果
? 如果使用差分通道,结果(用2 的补码形式表示):

13

3、ADC转换结果
? 差分测量范围:

14

ADMUX

4、ADC及相关寄存器
? ADC 多工选择寄存器 - ADMUX:

15

ADMUX

4、ADC及相关寄存器
? Bit 7:6 – REFS1:0: 参考电压选择
REFS1 0 0 1 1 RESF0 0 1 0 1 参考电压选择 AREF,内部Vref关闭 AVCC,AREF引脚外加滤波电容 保留 2.56V片内基准电压源,AREF引脚外加滤 波电容
16

ADMUX

4、ADC及相关寄存器
? Bit 7:6 – REFS1:0: 参考电压选择
- 如果将一个固定电源接到 AREF 引脚,那么就不能选择其他的基准 源,因为这会导致片内基准源与外部参考源的短路。如果 AREF 引脚 没有联接任何外部参考源,则可以选择 AVCC 或1.1V 作为基准源。 参考源改变后的第一次 ADC 转换结果可能不准确,建议不要使用这 一次的转换结果。

17

ADMUX

4、ADC及相关寄存器
? Bit 5 – ADLAR: ADC 转换结果 左对齐
- ADLAR 影响 ADC 转换结果在 ADC 数据寄存器中的存放形式 ADLAR 置位时转换结果为左对齐,否则为右对齐 ADLAR 的改变将 立即影响 ADC 数据寄存器的内容,不论是否有转换正在进行。

18

ADMUX

4、ADC及相关寄存器
? Bits 4:0 – MUX4:0: 模拟通道与增益选择位
MUX4...MUX0 00000 00001 00010 00011 00100 00101 00110 00111 单端输入 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7
19

详见ATmega16数据手册 Page204 Table84

ADCSRA

4、ADC及相关寄存器
? ADC 控制和状态寄存器A - ADCSRA:

20

ADCSRA

4、ADC及相关寄存器
? Bit 7 – ADEN: ADC 使能
- ADEN 置位即启动 ADC,否则 ADC 功能关闭。在转换过程中关闭 ADC 将立即中止正在进行的转换。

21

ADCSRA

4、ADC及相关寄存器
? Bit 6 – ADSC: ADC 开始转换
- 在单次转换模式下,ADSC 置位将启动一次 ADC 转换。在连续转 换模式下,ADSC 置位将启动首次转换。第一次转换( 在 ADC 启动 之后置位 ADSC,或者在使能 ADC 的同时置位 ADSC ) 需要 25 个 ADC 时钟周期,而不是正常情况下的 13 个。第一次转换执行 ADC 初始化的工作。 - 在转换进行过程中读取 ADSC 的返回值为 "1”,直到转换结束。 ”,直到转换结束。 ADSC 清零不产生任何动作。

22

ADCSRA

4、ADC及相关寄存器
? Bit 5 – ADATE: ADC 自动触发使能
- ADATE 置位将启动 ADC 自动触发功能。触发信号的上跳沿启动 ADC转换。触发信号源通过 SFIOR 寄存器的 ADC 触发信号源选择 位 ADTS 设置。

23

ADCSRA

4、ADC及相关寄存器
? Bit 4 – ADIF: ADC 中断标志
ADC 转换结束,且数据寄存器被更新后,ADIF 置位。如果ADIE 及 SREG 中的全局中断使能位 I 也置位,ADC 转换结束中断服务程 序即得以执行,同时 ADIF 硬件清零。此外,还可以通过向此标志写 1 来清 ADIF。要注意的是,如果对 ADCSRA 进行读-修改-写操作 ,那么待处理的中断会被禁止。
-在

24

ADCSRA

4、ADC及相关寄存器
? Bit 3 – ADIE: ADC 中断使能
-若

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

25

ADCSRA

4、ADC及相关寄存器
? Bit 2:0 – ADPS2:0: ADC 预分频器选择位
ADPS2 0 0 0 0 1 1 1 1 ADPS1 0 0 1 1 0 0 1 1 ADPS1 0 1 0 1 0 1 0 1 分频因子 2 2 4 8 16 32 64 128
26

ADCL 及 ADCH

4、ADC及相关寄存器
? ADC 数据寄存器 - ADCL 及 ADCH:

27

ADCL 及 ADCH

4、ADC及相关寄存器
? ADC 数据寄存器 - ADCL 及 ADCH:

28

ADCL 及 ADCH

4、ADC及相关寄存器
? ADC 数据寄存器 - ADCL 及 ADCH:
- 读取 ADCL 之后,ADC 数据寄存器一直要等到 ADCH 也被读出才 可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不 高于 8 比特,那么仅需读取 ADCH 就足够了。否则必须先读出ADCL 再读 ADCH。

29

SFIOR

4、ADC及相关寄存器
? 特殊功能 IO 寄存器 - SFIOR:

30

SFIOR

4、ADC及相关寄存器
? Bit 7:5 – ADTS2:0: ADC 自动触发源
- 若 ADCSRA 寄存器的 ADATE 置位,ADTS 的值将确定触发 ADC 转换的触发源;否则,ADTS 的设置没有意义。被选中的中断标志在 其上升沿触发 ADC 转换。从一个中断标志清零的触发源切换到中断 标志置位的触发源会使触发信号产生一个上升沿。如果此时ADCSRA 寄存器的 ADEN 为 1,ADC 转换即被启动。切换到连续运行模式 (ADTS[2:0]=0)时,即使 ADC 中断标志已经置位也不会产生触发事件 。

31

SFIOR

4、ADC及相关寄存器
? Bit 7:5 – ADTS2:0: ADC 自动触发源
ADTS2 0 0 0 0 1 1 1 1 ADTS1 0 0 1 1 0 0 1 1 ADTS0 0 1 0 1 0 1 0 1 触发源 连续转换模式 模拟比较器 外部中断请求 0 定时器/ 计数器0 比较匹配 定时器/ 计数器0 溢出 定时器/ 计数器比较匹配B 定时器/ 计数器1 溢出 定时器/ 计数器1 捕捉事件
32

SFIOR

4、ADC及相关寄存器
? Bit 4 – Res: 保留位
- 这一位保留。为了与以后的器件相兼容,在写 SFIOR 时这一位应写 0。

33

SFIOR

4、ADC及相关寄存器
? 模拟比较器控制和状态寄存器 - ACSR
- Bit 7 – ACD: 模拟比较器禁用
ACD 置位时,模拟比较器的电源被切断。可以在任何时候设置此位来 关掉模拟比较器。这可以减少器件工作模式及空闲模式下的功耗。改变 ACD 位时,必须清零 ACSR 寄存器的 ACIE 位来禁止模拟比较器中断。否则 ACD 改变时可能会产生中断。

34

SFIOR

4、ADC及相关寄存器
? 中断寄存器 - SREG
- Bit 7 – I: 全局中断使能
I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制 。如果 I 清零,则不论单独中断标志置位与否,都不会产生中断。任意一个 中断发生后 I 清零,而执行 RETI 指令后 I 恢复置位以使能中断。I 也可以通 过 SEI 和 CLI 指令来置位和清零。

35

5、ADC中断程序
? “#pragma interrupt_handler <函数名>: <中断向 量>”
- ADC 转换结束中断向量为 15 - 中断向量表见 ATmega16 数据手册 Page43 Table18

36

完 Mobile:15840959636


相关文档

更多相关文档

ATMEGA16 ADC模数转换示例程序
ATMEGA16_ADC转换_模数转换
atmega16开发板电路原理图
AVR ATmega16 AD转换源码
ATmega16内部ADC的应用
电脑版