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.
Dazu kommt noch, dass Du nichtmal per ADSC die Conversion gestartet hast... ...
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.
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... ...
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
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.