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.
Gast
#1225865
Dazu kommt noch, dass Du nichtmal per ADSC die Conversion gestartet hast... ...
Gast
#1225867
Wie sieht der restliche Code aus?
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
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... ...
Gast
#1225889
Datenblatt Seite 31, Absatz "Idle Mode", letzter Satz... ...
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.