打印
[AVR单片机]

用过mega内部ADC的来帮我看下

[复制链接]
1753|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lanlinhong|  楼主 | 2009-3-8 20:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.  mega128内部ADC,使用内部2.56V基准源,但REF引脚上测得电压为2.65V
2.  时钟128分频(128分频应该是最慢速度吧?),最后一位几个字跳动,改2分频不跳,但是2分频和128分频测量到的值差10个字左右

我没有使用ADC降噪模式

unsigned int ad_convert(unsigned char mux)
{
    unsigned char i;
    unsigned int temp;
    ADMUX =0xc0+mux;                //内部2.56V基准源,转换结果右对齐,选择通道
    ADCSRA=0x80;                    //ADC使能,时钟2分频
    _delay_us(125);                    //等待基准源稳定
    ADCSRA|=0x40;                    //第1次ADC结果无效
    while(ADCSRA&0x40);
    temp=ADCH;
    temp=0;
    for(i=5;i>0;i--)                //采集5次取平均
    {
        ADCSRA|=0x40;                //启动单次转换
        while(ADCSRA&0x40);            //等待转换完成
        temp+=ADCL;                    //先读低字节再读高字节
        temp+=ADCH*256;
    }
    ADMUX =0x00;                    //ADC关闭
    ADCSRA=0x00;
    return  temp/2;                    //temp*2560/5/1024
}

相关帖子

沙发
lanlinhong|  楼主 | 2009-3-9 19:38 | 只看该作者

-

up

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

44

帖子

0

粉丝