Multiplexing beim AD-Wandler des ATMega8

Gast #356463
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
Gast #356464
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.
Angehängte Dateien:
Gast #356465
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
#356466
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.
;-)

...
Gast #356467
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

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