ADC- Auswahl bei AtMega8

Gast #279775
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
Angehängte Dateien:
Gast #279776
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

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