Atmega16 ADC mit unabsichtlichem Free Running Mode

OP #1225843
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.
Angehängte Dateien:
OP #1225872
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.
Gast #1225887
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...

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren