10-Bit ADC ergibt 17500

Gast #4949012
Lesenswert?

Hallo zusammen,
ich habe irgendwie ein eigenartiges Problem. Ich konvertiere am ADC0 am 
Atmega328 (16Mhz) eine Spannung. Die Spannung ist aktuell etwa 4,9V. Ich 
nehme als Referenzwert AVCC an welchem 5V anliegt.

Der ADC wird folgenderweise initalisiert:
1
ADMUX = (1<<REFS0);
2
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN);

Ausgelesen wird der Wert:
1
  ADMUX = (ADMUX & 0xF0) | (0 & 0x0F);
2
  ADCSRA |= (1<<ADSC);
3
  // wait until ADC conversion is complete
4
  while( ADCSRA & (1<<ADSC) );
5
  return ADC;

Nun erhalte ich aber einen Wert von 17500. Das kann doch absolut nicht 
sein. Weil es doch ein 10Bit ADC ist, also maximal 1023.

Hatte das jemand schon einmal und eine Idee?

Viele Grüße und Danke,
Niine
Gast #4950553
Lesenswert?

Du hast aber immer noch nicht nachgeschaut, wie die Variable
ADC bei dir definiert ist - wobei die falsche Deklaration hier
für jedermann die einfachste Erklärung für deinen unsinnigen
Wert 17500 ist.

Gestern kam die Frage schon von:
> Autor: Irgendwer (Gast)
> Datum: 23.03.2017 21:40

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