Forum: Mikrocontroller und Digitale Elektronik ATmega keine interne Ref-Spannung AREF = 0V ADC


von Michael K. (aemkai)


Lesenswert?

Hallo,

habe seit langer Zeit wieder meine ATmegas rausgekramt.

Genutzt wird ein ATmega16 auf STK500 mit 4 MHz internem RC und max. 
Startup-Zeit, sonst alle Fuses default, Zusatzbeschaltung am STK500 nur 
ein LCD am PortD und ADC Ch0/1 am PORTA, Vcc = 3,7 V.

Jetzt folgendes Problem mit den ADCs :
Die gesampleten Werte liegen immer am Maximum. Ich sample über einen 
Timer-Interrupt gesteuert immer mehrere Werte (Single Conversion), 
verwerfe die jeweils erste Wandlung und mittle die Restlichen.

Dazu folgende Erkenntnisse:
- Jumper AREF am STK offen:
* am PIN (A)REF (PORTE) messe ich 0 V bei Einstellung interne Referenz 
2,56 V
* am PIN (A)REF messe ich 0 V bei Einstellung Vcc
* im Simulator die Übernahme Einstellungen ADMUX etc. überprüft, passt 
soweit
- mit externer Referenz und 2,6 V übers STK 500 (AREF-Jumper gesteckt) 
arbeitet der ADC richtig
--> die berechneten Spannungswerte stimmen ziemlich genau mit den per 
Multimeter gemessenen überein

Mein erster Gedanke, dass die Bandgap Probleme macht:
- Wird diese bei mehreren aufeinanderfolgenden SingleConversions evtl. 
zwischendrin wieder abgeschaltet?
Ich habe deshalb mit BOD enabled (2,7 V) getestet, das gleiche Problem: 
interne Ref bringt Müll und 0 V am Pin, ext. Ref alles i.O.

Hab ich irgendwas übersehen, dass man die Referenz auser in ADMUX noch 
freischalten müsste?

Grüße,

Michael

Achso: Hab auch einen zweiten frischen ATmega16 getestet, genau das 
gleiche seltsame Verhalten.

von Peter (Gast)


Lesenswert?


von Michael K. (aemkai)


Lesenswert?

Auf dem STK500 sind 2x je 10 nF.
Und ohne sollte das eigentlich nur etwas mehr Rauschen, aber das die 
Spannung ohne Stützkondensator komplett weg ist?

von da1l6 (Gast)


Lesenswert?

Laut Datenblatt braucht der ATMega16 mindestens 4.5V:

• Operating Voltages
- 2.7 - 5.5V for ATmega16L
- 4.5 - 5.5V for ATmega16


da1l6

von Michael K. (aemkai)


Lesenswert?

da1l6 schrieb:
> Laut Datenblatt braucht der ATMega16 mindestens 4.5V:

Super Tipp, Danke! Werd ich heut abend mal ausprobieren ...

Das ist halt das Problem wenn man außerhalb der Spec arbeitet, wobei ich 
mehrere Nicht-L-ATmegas schon seit Jahren problemlos mit LiIo bei 3,7 V 
betreibe, aber das waren reine Digitalanwendungen.

Könnte durchaus daran liegen. Zwar muss die Bandgap selbst auch für 
BOD-Level 2,7 V ausgelegt sein, aber vielleicht hat der Verstärker für 
die ADC-Referenz dann ein Problem.

von Karl H. (kbuchegg)


Lesenswert?

Michael K. schrieb:

> Mein erster Gedanke,

mein erster Gedanke.

Beim Beschreiben von ADMUX zum Setzen des Kanals hast du irgendwo eine 
Oder Operation vergessen, so dass du dir die REF Bits rauslöscht, 
wodurch die Referenzspannung auf 'extern' umgestellt wird.

von Michael K. (aemkai)


Lesenswert?

Karl H. schrieb:
> Beim Beschreiben von ADMUX zum Setzen des Kanals hast du irgendwo eine
> Oder Operation vergessen

Wie geschrieben:
> im Simulator die Übernahme Einstellungen ADMUX etc. überprüft, passt
> soweit
aber vielleicht hab ich nicht lang genug simuliert oder Breakpoints an 
den falschen Stellen und überschreib das ausversehen irgendwo ... schau 
ich mir nochmal an

P.S:
> Michael K. schrieb:
>> Mein erster Gedanke,
nachdem ich das darüber alles getestet hatte, so gesehen eigtl. der 
letzte Gedanke :-)

von Toni R. (torei55)


Lesenswert?

Hallo Michael,

was willst Du denn an AREF Messen?
AREF ist doch nur ein Eingang für eine externe Referenzspannung.
Oder liege ich da Falsch?

Gruß Toni

von Ulrich F. (Gast)


Lesenswert?

Toni R. schrieb:
> AREF ist doch nur ein Eingang für eine externe Referenzspannung.
Und ein Ausgang für die interne Referenz.
Je nach Konfiguration.
(zumindest bei den AVRs mit denen ich bis jetzt zu tun hatte)

Auch hier: Das Datenblatt gibt gerne Auskunft.

von Toni R. (torei55)


Lesenswert?

Ok, :-(
hast Recht. Datenblatt habe ich zwar gelesen, aber so gut ist mein 
Englisch nicht. Also, kurzerhand Nachgemessen und siehe da....
Mann lernt halt nie aus ;-)

Edit: Jetzt hab ich's auch gefunden.
...VREF can also be measured at the AREF pin with a high impedant 
voltmeter...

von Michael K. (aemkai)


Lesenswert?

Karl H. schrieb:
> Beim Beschreiben von ADMUX zum Setzen des Kanals hast du irgendwo eine
> Oder Operation vergessen

Du hast zu 100% recht, beim Umschalten der Channels hab ich einfach ganz 
"clever" die Zählvariable auf ADMUX gelegt.

Bis zu der Stelle hatte ich aber nie simuliert (da man den ADC ja eh 
nicht mit simulieren kann), und davor war ja alles i.O.

Also vielen Dank für alle Antworten, jetzt funzt es.

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.