mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik AVR, 3 analoge Ports nacheinander lesen


Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
arbeite mit einem Atmega8 (AVR) und möchte 3 analoge Kanäle nacheinander 
einlesen. Mit einem Kanal geht das super aber mit mehreren finde ich 
leider keine Lösung . Interruptverarbeitung wäre bevorzugt. In den 
Beispielen habe ich nichts gefunden. Ein Beispiel wäre toll.
Danke schon mal im voraus.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist den Dein Problem?
Der Interrupt holt nur die Werte aus den ADC und dazwischen
muss doch nur Multiplext werden.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
mein Problem ist wie ich die ausgelesenen Werte den Ports zuordnen kann. 
Das ADCH und ADCL Register ist doch Puffer für jeden Port.
Könntest du mir ein Beispiel geben ?
Danke

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mein Problem ist wie ich die ausgelesenen Werte den Ports zuordnen kann.

Du weißt doch wohl was du vorher in ADMUX reingeschrieben hast? also!

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ja stimmt, werde ich gleich ausprobieren.
Danke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>mein Problem ist wie ich die ausgelesenen Werte den Ports zuordnen kann.
> Du weißt doch wohl was du vorher in ADMUX reingeschrieben hast? also!
Du könntest sogar ADMUX einfach wieder auslesen   :-o

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
>>>mein Problem ist wie ich die ausgelesenen Werte den Ports zuordnen kann.
>> Du weißt doch wohl was du vorher in ADMUX reingeschrieben hast? also!
> Du könntest sogar ADMUX einfach wieder auslesen   :-o

Wobei dieser Wert aber nicht zwingend der Kanal ist, der gerade gemessen 
wurde:
Wenn ADMUX hinterher (also nach dem Start der Messung) beschrieben 
wurde, dann wird der Wert in ADXMUX erst mit dem Start der nächstes 
Messung aktiv.
Dies kann man ausnutzen wenn man den ADC im Freerunning Mode betreibt 
und trotzdem mehrere Kanäle wandelt.
Davon würde ich aber erstmal abraten, sondern für den Anfang den ADC 
immer per Hand nach dem Setzen des ADMUX neu starten.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ADMUX hinterher (also nach dem Start der Messung) beschrieben
> wurde, dann wird der Wert in ADXMUX erst mit dem Start der nächstes
> Messung aktiv.
Oh, das ist ja extrem böse...  :-/

Zudem steht es genau invertiert im DB:
 the user cannot tell if the next conversion is based on 
 the old or the new settings.
Von der aktuellen Wandlung steht da gar nichts, diesen Umkehrschluss 
muß man selber implizieren.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:

> Zudem steht es genau invertiert im DB:
>
>  the user cannot tell if the next conversion is based on
>  the old or the new settings.
> 

Ja, das ganze ist etwas tricky, daher rate ich, wie oben schon 
geschrieben, davon ab ADMUX im Freerunning Mode zu ändern, wenn man 
nicht genau weiß was man macht.
Der Haken ist nämlich dieser Satz:
ADMUX can be safely updated in the following ways: During conversion, minimum one ADC clock cycle after the trigger event.
Man muss ausreichend lange warten (nämlich mindestens einen ADC Takt 
nach dem Start der Umwandlung), allerdings kann man nicht exakt sagen 
wie lange das ist, denn man kennt den aktuellen Stand des ADC Prescaler 
nicht.

Bei dem ADC gibts noch mehr Gemeinheiten rund um ADMUX in denen das 
Datenblatt etwas abweichend von der Realität ist. Irgendwo hatte glaube 
ich Jörg Wunsch da mal etwas erwähnt, irgendwas was den Zeitpunkt des 
Samplevorgangs angeht.

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.