Ich verwenden ein STK500. An den Pin PA1 habe ich ein Poti als
Spannungsteiler geschaltet. Egal was ich dort einstelle, über die
serielle Schnittstelle wird immer nur 1023 ausgegeben.
Nach dem Start der Conversion (ADSC-Bit) musst du warten, bis die
Wandlung fertig ist.
Ausserdem:
Natürlich ZUERST den Mux-Input+Referenz auswählen, DANN den Wandler
starten.
@Hubert:
> Mit dem ADMUX = (1<<REFS1) | (1<<REFS1);> stellt du den ADC wieder auf 0.
Aber so stelle ich doch auf interne Ref.spannung um, oder?
@Ernst:
wenn es "nur" am warten liegt, sollten doch nur die ersten Werte falsch
sein. Es wird aber dauern 1023 ausgegeben.
Klartext: Mit der zweiten Zuweisung an ADMUX überschreibst Du den Wert
von der ersten Zuweisung! Ist das so schwer zu verstehen?
Schau Dir mal den Artikel Bitmanipulation genauer an...
das wäre dann so, oder?:
{c]
//interne 2.56 Volt Ref., ADC auf Pin 1
ADMUX = (1<<REFS1) | (1<<REFS1) | (1<<MUX0);
//ADC aktiv, ADC starten, Freerunning mode, Prescaler = 128
ADCSRA=(1<<ADSC)|(1<<ADEN)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
[/c]
immer noch 1023...
Vielleicht mal dran denken, dass man erstmal warten sollte, bis der ADC
mit seiner Wandlung fertig ist, bevor man das Ergebnis ausliest. Steht
alles im AVR-GCC-Tutorial inkl. Codebeispielen...
Entweder du schreibst ADMUX = (1<<REFS1) | (1<<REFS1) | (1<<MUX1);
oder ADMUX |= (1<<MUX1);
ADC erst abfragen wenn ADIF gesetzt ist, ansonst ist der Wert
undefiniert oder alt.
> du schreibst ADMUX = (1<<REFS1) | (1<<REFS1) | (1<<MUX1);
Sollte das nicht MUX0 am Ende sein wenn ich Pin1 abfragen will?
Egal, es bringt beides nur 1023.
> ADC erst abfragen wenn ADIF gesetzt ist, ansonst ist der Wert
undefiniert oder alt.
Ich wollte den Code auf ein absolutes Minimum beschränken um den Fehler
zu finden / zu verstehen.
Wenn der Wert alt oder undef. ist, müste ja mal was anderes als 1923
rauskommen. Darum denke ich, dass ich noch was anderes falsch mache.
Ralf wrote:
>> du schreibst ADMUX = (1<<REFS1) | (1<<REFS1) | (1<<MUX1);> Sollte das nicht MUX0 am Ende sein wenn ich Pin1 abfragen will?
was den nun, Pin 1 oder A1
hast du denn überhaupt mal nachgemessen, was an dem Pin anliegt?
> was den nun, Pin 1 oder A1
PA1, nach Datenblatt ist das ADC1.
> hast du denn überhaupt mal nachgemessen,> was an dem Pin anliegt?
Ja, habe ich. Eine Spannung die ich mit einem Poti von 0V bis 4,9V
verändere ohne dass sich mein "gemessener" Wert ändert.
Sorry für die vielleicht dummen Fragen und danke für die Gedult ;-)