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;
Lesezeichen