Hast Du auch gewartet, bis die Wandlung fertig war?
Bit 4 im ADCSRA Register muß 1 sein.
Lauter 1er sind an und für sich schon ein Fehler, da der Controller ja nur 10Bit Auflösung hat.
Also dürften im H-Register eigentlich nur die letzten Beiden Bits gesetzt sein.
Welche Spannung misst Du am AREF Pin ? und welche am AVCC ?
In CodeVision sieht so eine Routine so aus:
Code:// Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } ...... /* Temperaturen berechnen */ li_temp1=read_adc(2); if(li_temp1==1023) /* Offenen Eingänge abfangen */ { li_temp1=0; } else { #asm ("CLI"); li_temp1=((li_temp1-si_tempzero[0])*290)/si_tempfakt[0]; #asm ("SEI"); }; li_temp2=read_adc(3); if(li_temp2==1023) /* Offenen Eingänge abfangen */ { li_temp2=0; } else { #asm ("CLI"); li_temp2=((li_temp2-si_tempzero[1])*290)/si_tempfakt[1]; #asm ("SEI"); } ........... // ADC initialization // ADC Clock frequency: 1000,000 kHz // ADC Voltage Reference: internal 2,56V ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83;







Zitieren

Lesezeichen