Probleme mit atmega644p ADC

OP Persönliche Seite #1986047
Lesenswert?

Hi,

ich klemme grad am ADC eines m644p. Er misst zwar, aber nur nach einem 
Reset. Wenn ich zwischendrin die Spannung verstelle, ändert sich der 
Wert erst nach einem Reset.

Hier mal mein Code:
1
ADMUX &= ~(1<<REFS0)|~(1<<REFS1);  // clear bits REFS0, REFS1 == AREF, int Vref off
2
ADMUX &= ~(1<<MUX0)|~(1<<MUX1)|~(1<<MUX2)|~(1<<MUX3)|~(1<<MUX4);  // single ended input ADC0
3
ADCSRA |= (1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);  // adc enable, prescaler 128 ==> 16mhz/128 = 0.125mhz sample rate
4
ADCSRA |= (1<<ADSC);  // start conversion
5
while(ADCSRA & (1<<ADSC));  // wait for conversion to complete
6
return ADCL;


Was mich auch wundert, ich habe vor dem ADC Eingang einen 1:10 
Spannugsteiler, AREF = 5V. 0xff bekomme ich bei 14,1V Am Eingang des 
Spannungsteilers heraus... Ist jetzt aber nich so wichtig, der ADC an 
sich sollte eher funktionieren :)

Ich hoffe, dass ihr mir hier helfen könnt.
#1986144
Lesenswert?

Nils S. schrieb:
> return ADCL;

Das ist ein 10-Bit Wandler. Der hat 2 Register, die ausgelesen werden 
müssen. Also: return ADC. Dann werden beide Register ausgelesen.

Wenn du die Register einzeln ausliest, musst du in der Reihenfolge ADCL, 
ADCH auslesen. ADCH muß immer gelesen werden, da damit der ADC wieder 
zurückgesetzt wird. Erst danachkannst du wieder neu messen. Deshalb 
misst er nur einmal bei dir.

mfg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren