学海荡舟手机网
导航

主页 > 电子设备技术 > 维修入门基础 > > 详细内容

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捕捉事件

 


相关文章