läs då databladet igen...
PORTA är *inte* ADC ingångar utan används antingen som digitala i/o eller för externt minne. Däremot ligger de åtta (singelended) ADC ingångarna just på PORTF.
Så du kan glömma att använda PORTA som ADC ingångar (jag vet att beteckningen ADx på portA är lite missavisande men så är det)
EDIT; Har du kollat på avdelningen "Alternative port functions" i databladet?
A/D strul på AVR
Hej när jag läser av AD:n utan att köra den interruptstyrd brukar jag använda ADIF flagga för att kolla när den är klar.
Brukar funka för mig.
Snippar in en bit kod som funkar för mig.
För att initiera AD:n
Funktion som läser av en av kanalerna
Brukar funka för mig.
Snippar in en bit kod som funkar för mig.
För att initiera AD:n
Kod: Markera allt
ADMUX = _BV(REFS0)|_BV(REFS1); // intern 2.56v referens
ADCSRA = _BV(ADEN)|_BV(ADPS1)|_BV(ADPS2); // clk/64
Kod: Markera allt
uint16_t getAd(uint8_t kanal){
static uint16_t data;
ADMUX &= ~0x1f;
ADMUX |= kanal;
ADCSRA |= _BV(ADSC);
while((ADCSRA & _BV(ADIF)) == 0);
ADCSRA |= _BV(ADIF);
data = ADCL;
data |= ADCH << 8;
return data;
}