ADC Wandlung mit Timerinterrupt

Gast #22083
Lesenswert?

Hallo,
Zielsetzung:
Einlesen von zwei AD-Kanälen in zeitlich definierten Abständen.
Vorgehensweise:
Tim0 wird mit Vorteiler (1024) frei laufend gestartet. In der 
Timer0OverFlow-Interrupt Routine wird der ADMUX auf Kanal0 gestellt und 
eine Single-A/D Wandlung gestartet. Nach Abfrage von ADIF Bits wird der 
Wert eingelesen und in den RAM gelegt. Anschließend wird ADMUX auf 
Kanal1 gestellt, auf ADIF gewartet und dann wieder Wert eingelesen und 
in den RAM geschreiben. Ende von INT-Routine.

Der Fehler, der dabei auftritt ist, das in beiden RAM-Plätzen die 
Wandlungswerte von ADKanal 1 sind und nicht wie erwartet im ersten 
RAM-Platz der Wert von Kanal 0.

Was ist an dieser Vorgehensweise falsch?
Gast #22084
Lesenswert?

Ich denke du hast einen AVR ? Beim 80C535 startest du einen 
Singel-Wandlungsvorgang durch beschreiben der Referenzspannungsmatrix.. 
(Keine Ahnung wie das Ding jetzt heißt, auswendig kenne ich es noch 
nicht)
Das ist ein 8 bit Register wo mit den unteren 4 bits die Referenznull 
angegben wird und mit den oberen 4 bit die Höhe der Referenzspannung 
eingestellt wird.
Und eben ein Beschreiben dieses Registers löst den eigentlichen 
Wandlungsvorgang aus.
Viellecht is des beim AVR genauso.

Bis denne,

Tilman
Gast #22089
Lesenswert?

es gibt da noch einen free-run-modus das heisst die wandlung laeuft 
staendig und immer wenn ein wert da ist wird der interrupt 
ausgeloest,auf die auslesereihenfolge ist noch zu achten und das die 
naechst wandlung schon laeuft wenn der int laeuft also erst beim 
uebernachsten ist der wert nach der kanalumstellung da ,so war es 
zumindest beim 4433.
Gast #22090
Lesenswert?

Ich hatte bereits das gleiche Problem. Irgendwie hinkt das Ergebnis des 
A/D-Wandlers hinterher, irgendwann habe ich es aufgegeben den Grund zu 
hinterfragen und habe per Software diesen "Versatz" einfach korrigiert.
Irgendwo in den Datenblättern stand auch etwas darüber, wenn ich mich 
noch recht erinnere -ist zu lange her.
Wenn jemand den wahren Grund nennen kann - interessiert mich auch.

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