mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Multiplexing beim AD-Wandler des ATMega8


Autor: q-stkr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hänge noch immer bei meinem Mega8. Ich versuche, nachdem ich einen
Eingang (AD-Wandler) zum laufen gebracht habe und das drum herum
hinbekommen habe jetzt ein Multiplexing beim AD-Wandler hinzubekommen.

So sieht mein Quelltext (ein Ausschnitt) für eine AD-Wandlung aus:

Ddrd = &B11111111

Ddrc = &B00000000
Admux = &B01100000
Adcsra = &B11100010
Portd = &B00000000

Do

   For A = 1 To 100
   Wert1 = Wert1 + Adch
   Next A
Temp1 = Wert /100

Loop

Hat jemand einen Quelltext oder Tipp wie das mit dem Multiplexing
funktioniert?

Die Werte des AD-Wandlers von PC0, PC1 und PC2 sollen nachher in den
Variablen Temp1, Temp2 und Temp3 stehen. Die Schleife war nur dazu
gedacht, ein Mittel der Werte zu bekommen um fehlerhafte AD-Wandlungen
zu minimieren!

Wer weiß Rat? Ich bin in dem Bereich leider noch ein Grünschnabel; ich
bitte deswegen eine solche, vermeindlich dumme Frage zu entschuldigen!

Gruß
q-stkr

Autor: Thomas O. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
kannst du jeden der AD-Kanäle ansprechen oder geht es dir darum
automatisch den nächsten Kanal auszuwählen?

Mit Assembler muss man einfach die entsprechenden Bits im
ADMUX-Register setzen z.b.
sbi ADMUX, MUX0
cbi ADMUX, MUX1
= ADC1 auswählen

Du musst also deinen Wert im ADMUX um 1 erhöhen bis du bei 8 bist und
dann wieder auf 0 setzen am besten noch ne und Verknüpfung damit du
wirklich nur MUX0 und MUX1 änderst.

Autor: q-stkr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
(nebenbei, hatte ich vergessen zu schreiben: Ich nutze Bascom.)

Wie meinst du das einfach admux erhöhen? Kenne mich da leider zu wenig
aus.
Meinst du einfach Adch+1 weil admux ist ja von vorn herein schon fest
definiert?!?!

Gruß
q-stkr

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn du BASCOM benutzt, solltest du mal das Datenblatt des AVRs
ansehen. Dort wird nämlich die gesamte (interne) Peripherie mit all
ihren I/O-Registern und all deren Bits haarklein erklärt.

Um die ADC-Quelle auszuwählen muss man nämlich nur den entsprechenden
Wert in das I/O-Register ADMUX eintragen. Einige Bits dieses Registers
entscheiden über die Referenzspannungsauswahl, ein anderes über die
Ausrichtung des Ergebnisses (linksbündig/rechtsbündig) und einige Bits
wählen den ADC-Eingang aus. Da die Ausstattung bei den verschiedenen
AVRs etwas unterschiedlich ist, kann ich da jetzt nicht genauer drauf
eingehen. Du solltest also im betreffenden Datenblatt nachschlagen.
Nimm aber bitte das vollständige Datenblatt, nicht die BWL-Version.
;-)

...

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie Hannes schon sagt schau dir erstmal das Datenblatt an damit du weißt
welche Bits du im ADMUX-Register ändern musst. Oben schreibst du ja
Admux = &B01100000 und das musst du halt für jeden Kanal entsprechend
ändern die letzen(rechten) 2 Bits sind zur Auswahl des Kanals da.

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.