ADC liefert immer den selben Wert

#3387238
Lesenswert?

Hallo Leute,

ich bastle nun schon seit Tagen an meinem AT90USB1286 und dessen ADC 
Eingang. Ich habe den Code aufs nötigste red. Wenn ich den PIN F1 nicht 
belege liefert mir die Ausgabe immer 1023 = X. WEnn ich den PIN jetzt 
mit GND oder Vcc verbinde tut sich gar nichts. Woran liegt das?
1
//ADC-init
2
  ADMUX  |= (1<<REFS0);       
3
  // die Versorgungsspannung AVcc als Refernz wählen 
4
  ADMUX  |= (1<<MUX0);        //MUX0 ist Eingang PINF1
5
  ADCSRA |= (1<<ADEN);      // ADC aktivieren 1=ON; 0=OFF
6
  ADCSRA |= (1<<ADSC);      //Startet eine ADC Wandlung
7
  ADCSRA |= (1<<ADPS2 | 1<<ADPS1) | (1<<ADPS0); //Prescaler 128->       8000000/128 = 62,5kHz
8

9
 DDRF &= ~(1<<PF1); // 0 schaltet den Pin auf Eingang
10
 PORTF |= (1<<PF1); //1 aktiviert den Pullup Widerstand
Ausgabe:
1
void startADC (void)
2
{
3
X = ADCL;
4
X += (ADCH<<8);
5
printzahlen(X);
6
print(" = X\n");
7
}
Gast #3387311
Lesenswert?

Elias 1234 schrieb:
> ADCSRA |= (1<<ADSC);      //Startet eine ADC Wandlung
>   ADCSRA |= (1<<ADPS2 | 1<<ADPS1) | (1<<ADPS0); //Prescaler 128->
> 8000000/128 = 62,5kHz

Den Prescaler bei laufender Wandlung zu ändern ist vermutlich keine gute 
Idee.

> Ausgabe:
> void startADC (void)
> {
> X = ADCL;
> X += (ADCH<<8);
> printzahlen(X);
> print(" = X\n");
> }

Hast du davor auch gewartet, bis die Wandlung fertig ist? Und hast du 
das erste Ergebnis verworfen, wie es das Datenblatt empfielt?

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