Forum: Mikrocontroller und Digitale Elektronik Atmega16 ADC mit unabsichtlichem Free Running Mode


von Christopher G. (cbg)


Angehängte Dateien:

Lesenswert?

Hallo!
Habe ein ungewöhnliches Problem. Alles funktionniert wie gewollt, ich 
weiß nur nicht wieso  :)
Hab den Atmega16 eingerichtet für ADC. Als Eingang dient die Spannung 
von einem Poti. Initialisierung siehe Anhang ADC.c
In der SINGAL(SIG_ADC) (alte avr-libc) gebe ich die oberen 8 Bit der 
Wandlung auf 8 LEDs aus.

Funktionniert alles wunderbar, ich dreh am Poti und die LEDs ändern sich 
wie erwartet ABER ich hab dann bemerkt, dass ich das ADATE Bit nicht 
gesetzt habe.

Meine Frage ist nun wieso ich im Free Running Mode bin obwohl das ADATE 
Bit im ADCSRA Register nicht gesetzt ist.

Könnte mir das jemand erklären? Ich hab selber keine Begründung finden 
können.

von Hannes Lux (Gast)


Lesenswert?

Dazu kommt noch, dass Du nichtmal per ADSC die Conversion gestartet 
hast...

...

von Gast (Gast)


Lesenswert?

Wie sieht der restliche Code aus?

von Christopher G. (cbg)


Lesenswert?

Ahhh...
Das mit dem ADSC hat mich jetzt auch gewundert.
Meine Main schaut so aus:
while(1)
  asm volatile("sleep \n\t" ::);

und da ich den Idle Modus aktiviert habe, wird jedes mal eine AD 
Wandlung ausgelöst. Wenn die ISR beendet wurde, kommt wieder sleep und 
schwupps landen wir wieder in der ISR.

von Hannes Lux (Gast)


Lesenswert?

Sleep...

Da war doch was...

Beim Aktivieren des Sleep wurde doch der eingeschaltete ADC automatisch 
gestartet. Ich weiß aber jetzt nicht, ob das auch beim Mega16 der Fall 
ist, den Typ nutze ich nicht. Das war im Datenblatt etwas versteckt 
erklärt, nicht bei ADC, vermutlich bei Sleep...

...

von Hannes Lux (Gast)


Lesenswert?

Datenblatt Seite 31, Absatz "Idle Mode", letzter Satz...

...

von Christopher G. (cbg)


Lesenswert?

Ja. Ist beim Atmega16 auch so, dass im IDLE Sleep eine AD Umwandlung 
gestartet wird sofern ADEN gesetzt ist. Hab eh geschrieben, dass es 
daran lag :)
Trzdem Danke

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.