ATmega16内部ADC的应用
ATmega16内部集成了8路10位逐次逼近型模数转换器(ADC),通过它可以很方便地把模拟转换为数字量,而只需要很少的外围器件。模数转换器具有广泛的用途,ATmega16内部的ADC具有如下特点:
·10位精度
·0.5LSB的非线性度
·±2LSB的绝对精度
·65μ8~260μs的转换时间
·最高分辨率时采样率高述15kSPS
·8路复用的单端输入通道7、路差分输入通道
·2路可选增益为10×与200×的差分输入通道
·可选的左对齐ADC读数·O~V的ADC输入电压范围
·可选的2.56V ADC参考电压·连续转换或单次转换模式
·通过自动触发中断源启动ADC转换·ADC转换结束中断
·基于睡眠模式的抑制器同ATmega16的很多其他功能一样,通过对相关控制寄存器的操作可以实现对内部ADC的控制。
1.ADC多工选择寄存器ADMUX位7、6(REFS1、REFS0)用来选择ADC的参考电压。参考电压可以是AREF引脚上的电压、AVCC和内部参考电压。注意,如果在AREF引脚上施加了外部参考电压,则内部参考电压就不能使用了。具体含义见表。
PEFS1 | PEFS0 | 参考电压选择 |
0 | 0 | AREF引脚上所施加的电压,内部参考电压关闭 |
0 | 1 | AVCC.AREF引脚上外加 |
1 | 0 | 保留 |
1 | 1 | 2.56V片内基准电压源,AREF引脚外加滤波 |
位5(ADLAR)影响ADC转换结果在ADc数据寄存器中的存放形式。ADLAR为1时,转换结果为左对齐,反之为右对齐。详细描述见数据寄存器ADCL和ADCH。
位4~O(MUX4~O)为模拟通道与增益选择位。通过这几位的设置,可以对连接到ADC的模拟输入通道进行选择,也可对差分通道增益进行选择。本文暂不涉及差分部分,表3中删除掉了差分通道增益部分内容。
2.ADC控制和状态寄存器A——ADCSRA(见表)位7(ADEN)为ADC使能。若ADEN为1,则使能ADC,否则ADC功能关闭。
MUX4-0 | 通道选择 |
00000 | ADC0引脚 |
00001 | ADCI引脚 |
00010 | ADC2引脚 |
00011 | ADC3引脚 |
00100 | ADC4引脚 |
00101 | ADC5引脚 |
00110 | ADC6引脚 |
00111 | ADC7引脚 |
位6(ADSC)为ADC开始转换。
在单次转换模式下,ADSC置位将启动一次ADC转换。在连续转换模式下,ADSC置位将启动首次转换。在ADC转换过程中读取ADSC的返回值为l,直到.ADC转换结束。这个特性可以用于在程序中判断ADC转换过程何时结束。
位5(ADATE)为ADC自动触发使能。ADATE置位将启动ADC自动触发功能。触发信号的上升沿启动ADC转换。触发信号源通过SFIOR寄存器的ADC触发信号源选择位A设置。
位4(ADIF)为ADC中断标志。
在.ADC转换结束,且数据寄存器被更新后,ADIF置位,如果ADIE及SREG中的全局中断使能位I也置位,则ADC转换结束中断服务程序就会被执行,同时ADIF位硬件清0。
位3(ADIE)为ADC中断使能。
为0时允许转换结束中断。
位2~0(ADPS2~0)为ADC预选择位。这几位用来确定XTAL与ADC工作时钟之间的因子。因为ADC的转换速度较之XTAL即CPU的工作时钟要慢得多,因此需要将XTAL分频后作为ADC的输入时钟。
具体分频见表。
3.ADC数据寄存器ADCL及ADCH用于存放AD转换值。若ADLAR=0,结果存放的形式见表6。若ADLAR=I,结果存放的形式见表。
ADPS2 | ADPS1 | ADPS0 | 分频因子 |
0 | 0 | 0 | 2 |
0 | 0 | 1 | 2 |
0 | 1 | 0 | 4 |
0 | 1 | 1 | 8 |
1 | 0 | 0 | 16 |
1 | 0 | 1 | 32 |
1 | 1 | 0 | 64 |
1 | 1 | 1 | 128 |
4.特殊功能IO寄存器SFIOR(见表)位7~5(ADTS2~0)为ADC自动触发源选择。若ADCSRA寄存器的ADATE置位,ADTS的值将确定ADC转换的触发源,否则ADTS的设置没有意义。被选中的中断标志在其上升沿触发ADC转换。具体含义见表。
ADTS2 | ADTS1 | ADTS0 | 触发源 |
0 | 0 | 0 | 连续转换模式 |
0 | 0 | 1 | 模拟比较器 |
0 | 1 | 0 | 外部中断请求0 |
0 | 1 | 1 | 定时器/计数器0比较匹配 |
1 | 0 | 1 | 定时器/计数器0溢出 |
1 | 0 | 1 | 定时器/计数器比较匹配B |
1 | 1 | 0 | 定时器/计数器1溢出 |
1 | 1 | 1 | 定时器/计数器1捕捉事件 |
- 上一篇:MCS-51单片机实用子程序库(七)
- 下一篇:用单片机控制软驱步进电机的方法