Forum: Mikrocontroller und Digitale Elektronik ADC- Auswahl bei AtMega8


von bytebold (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe Probleme, zwei Analogwerte von den ADC- Ports einzulesen.
Ich habe das Forum durchsucht, ähnliche Probleme entdeckt, die mir
aber nicht weiterhelfen.
Soweit ich es verstanden habe, kann man mit dem Mux- Register die
ADC- Quelle wählen. Ich arbeite mit dem Single Conversion Modus
und wechsele in der ISR über das Mux den Adc- Port. Die Wandlung
starte ich ebenfalls wieder in der ISR. Das funktioniert auch
einwandfrei, ich kann die Werte der Adc- Ports einlesen.
Wenn jedoch die Werte größer 0 sind, scheint es zu Vertauschungen
der Kanäle zu kommen, dabei ist es egal, welcher Kanal >0 ist.
Das heißt, der Mod- Kanal hat Werte größer 0, der Vol- Kanal ist 0,
dann passiert es dauernd, das die 0 dem Mod- Kanal zugewiesen wird.
Dies passiert aber nur, wenn andere Programm- Teile ( Timer Interrupts
 usw.) aktiv sind. Vielleicht kann ja jemand mal auf den Code der
Isr schauen, damit ich weiß, ob die so einwandfrei ist ( auch in
Bezug auf andere Interrupts ).
Gruß, bytebold

von bytebold (Gast)


Lesenswert?

Hallo,

hat sich erledigt.
Nachdem ich hier gepostet habe und mir den Quelltext nochmal angeschaut
habe, habe ich auch den Fehler entdeckt:

NoChange:
  mov  LastVolVal, AdcValL    ; update last value

ist zuviel.
Nachdem ich die Zeile gelöscht habe, funtioniert es einwandfrei.
So sieht man manchmal den Wald vor lauter Bäumen nicht.

Gruß, bytebold

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.