Forum: Mikrocontroller und Digitale Elektronik AVR - ein paar ADC-Fragen


von Sebastian (Gast)


Lesenswert?

Hallo,

ich sitze hier gerade vor meinem (nicht richtig funktionierenden)
AVR-ADC und finde den Fehler nicht. Deshalb erstmal eine
Grundsatzfrage:

Ich habe vor den ADC einen externen 4067 sitzen (16-Kanal Analog
Multiplexer). Dieser hat 4 digitale Eingänge, mit denen man bestimmen
kann, welcher der 16 analogen Eingänge auf den Ausgang durchgeschaltet
wird. Diese will ich mit PORTA0..3 ansteuern, der Analogausgang liegt
auf PORTA5. Geht das überhaupt? Oder ist, wenn ich den ADC nutzen will,
der ganze PORTA weg?

Gruß,
Sebastian

von Hannes L. (hannes)


Lesenswert?

Das geht. Wobei bei meinem AVR (Mega8) der ADC auf PortC liegt. ;-)

Bei meinem anderen AVR (Mega48) kann (und sollte) man sogar bitweise
den Digitalteil des Ports deaktivieren, wenn man den ADC nutzen will.

Bei meinem noch anderen AVR (Tiny15) gibt es nur einen Port (PortB),
von dem einige Pins als ADC nutzbar sind.

Wie das bei deinem AVR ist, könnte dir wahrscheinlich ein Blick ins
entsprechende Datenblatt verraten.

...

von Sebastian (Gast)


Lesenswert?

Oh, tschuldigung, habe vergessen zu erwähnen. ATMega32.

Wollte nur wissen, ob gleichzeitig digitaler Ausgang auf 5Pins und
analoger Eigang auf einem Pin auf dem selben Port möglich ist. Dazu
habe ich im Datenblatt nämlich nix gefunden.

Danke einstweilen. Es funktioniert zwar immer noch nicht, aber dann
liegt es zumindest nicht dadran.

Sebastian

von Hannes L. (hannes)


Lesenswert?

;-)

Ja selbstverständlich kann man jedes Bit eines Ports getrennt als
Digital-Ausgang, Digital-Eingang oder Analog-Eingang verwenden.
Das steuerst du halt mit den Registern DDRA und PORTA (falls es um Port
A des Mega32 geht). Allerdings sollte man (bei einigen AVRs) während der
Wandlung nicht an den Digitalausgängen am selben Port herumschalten, da
dies die Wandlungsgenauigkeit beeinflussen könnte. Aber das trifft ja
in deinem Fall sowiso nicht zu.

Denke daran, dass die Wandlung Zeit braucht. Wenn du die Quelle
eingestellt hast, dann startest du die Wandlung und wendest dich
anderen Aufgaben zu. Ist die Wandlung fertig (ADC-Complete-Interrupt
oder sowiso laufender Timer-Interrupt), so liest du den Wert aus, weist
ihn dem entsprechenden Speicherplatz zu, schaltest die Messquelle um und
startest die nächste Wandlung. Nur so bekommst du auch den Wert der
jeweiligen Quelle.

...

von Sebastian (Gast)


Lesenswert?

Ok, Problem ist gelöst: Ich benötige nur 8 Bit, und ich habe vergessen,
das ADLAR-Bit (Linksbündig) zu setzen. Die Mini-Ergebnisse habe ich
fälschlicherweise als Messfehler interpretiert.

Danke für die Antworten.
Sebastian

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.