www.mikrocontroller.net

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


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.