Forum: Mikrocontroller und Digitale Elektronik 10-Bit ADC ergibt 17500


von Niine (Gast)


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

von Joe F. (easylife)


Lesenswert?

Ganzer Code bitte.
Man kann an deinen Schnipseln nicht erkennen, wie ADC deklariert ist, 
wie der Rückgabewert der Funktion ist, wie der Rückgabewert 
ausgegeben/angezeigt wird.
Der Fehler kann überall versteckt sein.

von Wolfgang (Gast)


Lesenswert?

Niine schrieb:
> Hatte das jemand schon einmal und eine Idee?

Welchen Wert hat bei dir ADLAR?

von Irgendwer (Gast)


Lesenswert?

1
 | (0 & 0x0F)
ist irgendwie recht sinnbefreit
1
return ADC;
und was ist ADC?

von Wolfgang (Gast)


Lesenswert?

Irgendwer schrieb:
> und was ist ADC?

Vielleicht die Verkettung der 16 Bits aus ADCL und ADCH ...

von Martin K. (maart)


Lesenswert?

Ich meine, man kann einstellen, ob die 10 Bit rechts oder links in der 
Kiste angeordnet werden.

von Wolfgang (Gast)


Lesenswert?

Martin K. schrieb:
> Ich meine, man kann einstellen, ob die 10 Bit rechts oder links in der
> Kiste angeordnet werden.

Deswegen meine Frage nach der Einstellung ...

Wolfgang schrieb:
> Welchen Wert hat bei dir ADLAR?

von Jacko (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.