wangqing_gxu 发表于 2013-5-25 00:08:28

请教:ATMEGA8 读ADC5值超过10位

从DATASHEET里查到ADC5只有8位,但采样出来的值不止10位.
很简单和程序,ADC5采样后发给串看,从上位机看,得出的值从0X0000-0X7FFF,ADC值不是按采集电压升高而增大,中间什么变化都有.
真搞不懂哦,希望那位兄弟能指教!

void adc_init(void)
{      
        clrbit(DDRC,5);      //set PC5(ADC5) as input
        ADCSRA=0x87;
        ADMUX =0x45;
}

void GetADC5(void)
{        ADMUX =0xc5;
        ADCSRA=0xC7;
        ADC=0;
        while(!testbit(ADCSRA,ADIF));
        ADCSRA=0xA7;                   //clr ADIF
       
        UDR=ADCL;                        //UART send ADCL
        Delay(3000);
        UDR=ADCH;                     //UART send ADCH
}

wangqing_gxu 发表于 2013-5-25 14:34:00

搞了一天,换个IC,发现可以读出10位值了,可DATASHEET介绍是8位,还是不明白.

Lu_JR 发表于 2013-5-25 16:25:30

具体怎么搞定的,能分享下解决问题过程?

tanguicaicai 发表于 2013-5-25 18:17:39

是10位的ADC啊?什么是8位,人家只是说是左对齐时,只取ADCH时是8位!

wangqing_gxu 发表于 2013-5-27 10:54:43

tanguicaicai 发表于 2013-5-25 18:17 static/image/common/back.gif
是10位的ADC啊?什么是8位,人家只是说是左对齐时,只取ADCH时是8位!

Note that ADC channels ADC4 and ADC5 are limited to 8-bit accuracy. Channels
ADC and ADC offer full 10-bit accuracy.

wangqing_gxu 发表于 2013-5-27 10:56:59

Lu_JR 发表于 2013-5-25 16:25 static/image/common/back.gif
具体怎么搞定的,能分享下解决问题过程?

可能IC坏了,换个IC就好了.我也搞不懂.
不过之前的IC其它功能都对,就是读ADC时值不对,不懂为什么.
页: [1]
查看完整版本: 请教:ATMEGA8 读ADC5值超过10位