mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Wandlung mit Timerinterrupt


Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tilman Wenning (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe einen AVR Mega8 (hab vergessen dies zu erwähnen).
Ist beim AVR auch so ähnlich. Ist aber anscheinend nicht das Problem. 
Das Ding wandelt ja, nur immer den Kanal 1 und nicht wie gewünscht 
zuerst den Kanal 0 und dann den Kanal 1.

Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin jetzt draufgekommen, das nach dem auswählen des Kanals durch 
schreiben in das ADMUX-Register, der AD eine Zeit braucht, bis er den 
neuen Wert übernommen hat.
Warum weiss ich nicht. Laut Datenblatt müßte er den Wert sofort 
übernehmen.

Autor: Hubert Papst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es einen Softwaresimulator, der auch den A/D-Wandler im Mega8 
berücksichtigt? Weiss hier jemand was. Das wäre sehr nützlich.

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Software Simulator der den A/D-Wandler komplett nachbildet ist bei 
den Standard Entwicklungsumgebungen nicht enthalten.

Autor: wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.