Klingt als hättest du ADC0 (beim mega16 PortA.0) als Ausgang konfiguriert.
Hallo Atmeler/Innen,
ADC-Schaltung: 5k Poti als Spannungsteiler an ADC0. 5k damit lt. Datenblatt die Conversation-Zeit gering bleibt.
Strom dürfte nach R=U/I etwa 1 mA sein. Bei einem der Poti-Anschläge steigt der Strom aber rapide an. Kann eigentlich nur durch den Controller fließen - aber warum? Im ADC-Modus nehmen die Eingänge doch nur Spannung "auf" ?!
Schaltskizze anbei, falls da auch andere Anfänger drüber stolpern...
Mal wieder: danke vorab !
Klingt als hättest du ADC0 (beim mega16 PortA.0) als Ausgang konfiguriert.
nein, leider nicht, sonst wäre der Fehler schnell behoben. Der PortA am Atmega 16 ist komplett als Eingang definiert.
ABER: die Referenzspannung des ADC ist auf die internen 2,56V gesetzt. Wenn es das ist, d.h. dann Strom in den ADC fließt, dann müsste das doch eigentlich ab 50% Drehstellung passieren (Poti ist linear). Er steigt aber erst bei den letzten ca. 10% an, dafür dann aber extrem stark.
Funktioniert denn dein Programm, d.h. kannst du den ADC-Wert einlesen?
Wenn der Port als Eingang definiert ist, dann gibt es meiner Ansicht nach nur zwei Möglichkeiten.
Es ist der interne PullUp aktiviert, dann sollte der Strom steigen, wenn du Richtung GND drehst.
Du hast eine höhere Spannung anliegen als VCC, dann sollte der Strom steigen wenn du Richtung +5V drehst.
Kann es sein, das AVCC und AGND nicht angeschlossen sind ?
Dann könnte bei den extremstellungen des Potis der Versorgungsstrom, der sonst über AGND/AVCC fließen soll über den Poti und die internen Schutzdioden fließen.
Der intern Pullup sollte nur sehr wenig Strom (max. 0.1 mA) durchlassen.
Hallo,
danke für Eure Hilfe! Die Datenblätter von Atmel haben ja an sich Vorbildcharakter, aber manchmal ist einfach zu viel Neues auf einmal.
Programm und Beschaltung hatte ich mal am ATmega8 zum Laufen gebracht, jetzt beim ATmega16 hakt's.
- Pull-Ups: waren aktiviert, sind jetzt deaktiviert
- AVCC: wie im Datenblatt beschaltet (S. 214)
- AREF: AREF---Kondensator---GND
- Referenzspannung: jetzt 5VDC, nicht mehr 2,54
- Versorgung: 5VDC, eine andere Spannung kann über das Poti nicht anliegen
Das ADC-Ergebnis soll direkt an PortB (8-LED's) ausgegeben werden. Aber, for_ro, Du hast recht, es tut sich gar nichts. Und zieht immer noch Strom.
Das Programm:
Ich hab jetzt keine Idee mehr, woran es noch liegen könnte.Code:; ADMUX definieren ldi Temp,0b01100000 ; REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ; 0 1 1 0 0 0 0 0 out ADMUX,Temp ; REFS=01: Referenzspannung ist AVCC ; ADLAR=1: linksbündig (für 8-Bit Auflösung) ; MUX=0000: ADC0 anwählen ; ADSCSRA definieren ; ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 ldi Temp,0b11000000 ; 1 1 0 0 0 0 0 0 out ADCSRA,Temp ; ADEN=1: einschalten ; ADSC=1: Conversation starten ; ADIF=0: gibt an wenn Conversation fertig ; ADATE=0: auto trigger aus ; ADIE=0: interrupt ausgeschaltet ; ADPSx: prescaler definieren ; Conversation abwarten ADC0_warten: sbis ADCSRA,ADIF ; wenn ADIF gesetzt => Conversion fertig rjmp ADC0_warten ADC0_einlesen: in Poti, ADCH ; linksbündiges Ergebnis merken
Du hast noch nicht geschrieben wann der ADC Strom zieht, wenn das Poti auf GND steht oder auf VCC.
Was misst du auf dem Pin wenn nichts drauf ist. Auch mal Ohm messen gegen GND und VCC.
Einen anderen ADC-eingang probieren, Vergleichsmessung machen.
Welcher Strom wird eigentlich gemessen, und wie viel Strom fließt da ?
Wie schon gesagt, mal einen anderen Pin nehmen (könnte ein HW Defekt sein).
Fehler gefunden. Trau's mich gar nicht zu sagen: das LC-Glied war verkehrt herum gepolt. Nach dem Motto "3 x abgeschnitten und immer noch zu kurz" hab ich das permanent übersehen. Sorry...
Trotzdem haben mir Eure Anstöße viel geholfen, hab einiges nachgewälzt und verstehe besser. Danke dafür !!!
Dolfo
Lesezeichen