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.
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?
Laut Datenblatt braucht der ATMega16 mindestens 4.5V: • Operating Voltages - 2.7 - 5.5V for ATmega16L - 4.5 - 5.5V for ATmega16 da1l6
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.
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.
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 :-)
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
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.