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


von q-stkr (Gast)


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

von Thomas O. (Gast)


Angehängte Dateien:

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.

von q-stkr (Gast)


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

von Hannes L. (hannes)


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.
;-)

...

von Thomas O. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.