A/D Cannel am AVR ??

Gast #45608
Ich weiß nicht, wie sehr Du Anfänger bist. C? Assembler? Schon mal was
von Registern und Steuerwörtern gehört?

Wenn nicht, sag was.

:-) mz
Gast #45610
OK

Ist nicht ganz einfach, aber ich versuche Dich mal wenigstens auf den
Weg zu bringen.

Da Du Assembler kennst, weißt Du ja wenigstens schon, was Register
sind. Port's an einem µC werden quasi durch Register innerhalb des
Prozessors abgebildet. Man greift also nie auf die Port's an sich zu,
sondern auf deren Register (8-Bit Register, jedes Bit steht für einen
Pin). Das zum einen.

Jetzt hast Du sicher mal mitbekommen, das es I/O Ports gibt. Input UND
Output. Aber wie das in der Welt der Bits so ist : 0 oder 1, entweder
oder. Um also festzulegen, ob ein Port(PIN) Ein- oder Ausgang ist,
existiert ein weiteres Register, in dem das festgelegt wird: bei AVR's
ist das das DDRx, wobei x für den entsprechenden Port steht. (Data
Direction Register X)

Damit kann man also festlegen, ob Ein oder Ausgang. A/D Channel liegen
auf so einem I/O Port. Da dieser Port aber  auch als digitaler Port (o
oder 1, respektive 0 Volt oder 5 Volt) verwendet werden kann, ,uß es
noch eine weitere Einstellungsmöglichkeit geben. Im einem sogenannten
Special Function Register wird genau das eingestellt Also ob der Port
als A/D Wandler betrieben werden soll oder nicht. Dazu dient das ADCSRA
Register und da ist Bit 7 das ADEN (A/D enable).

Das alles hilft Dir jetzt nicht konrket weiter. Aber eine ausführliche
Beschreibung kann man in einem solchen Forum nicht liefern. Merke Dir
einfach:

jeder Port hat viele Funktionen, eine muß ausgewählt werden

A/D Wandler, Analog Comparatoren und Interrupts können an und
ausgeschaltet werden

das alles passiert über spezielle Register, die werden in den Dokus
super beschrieben (bei Atmel wirklich super, ich kenne echt beschissene
Dokus, z.B. die von Siemens für ihre 80C51 etc)

Und dann: Zeit spielt eine große Rolle. Nicht immer ist es möglich,
alle Einstellungen für einen Port in einem Abwasch zu erledigen, auch
wenn alle Bits in ein und demselben Register gesetzt werden sollen.
Interrupt-Enables sollte man erst setzen, wenn die Modi eingestellt
sind. Denn wenn enabled, dann gehts ooch gleich ab. Das kann Probleme
bringen (siehe meinen Beitrag "Analog Comparator löst keine IRQ
aus")

Die Ergebnisse der Conversions werden wieder in eigenen Registern
abgelegt usw. und so fort....

Es ist NICHT einfach. Sinnvoll ist sicherlich der Kauf eines Buches,
einige Beiträge hier haben sich damit beschäftigt. Hol Dir da einen
Tipp...

Ich habe A/D noch nicht genutzt beim AVR, aber ich versuche mal eine
Liste aller für Dich relevanten Register anzugeben. Wenn Dein Programm
im Ablauf irgendwie mal mit allen zu tun hatte, dann haste was richtig
gemacht:

DDRA
SFIOR
ADCSRA
ADCL ADCH

(kein absoluter Anspruch auf Vollständigkeit, aber ein Versuch)

Sooo, alles ziemlich wirr, aber ich hoffe hilfreich. Ist nicht so ganz
einfach. Weil man nicht weiß, wie man das zusammenfassen soll. In
meinem Studium gab es zu diesem Thema im weitesten Sinne folgende
Fächer:

Digitale Systeme 1
Digitale Systeme 2
Microcontroller Prog.
Maschinenorientierte Programmierung
Labor für Mikrocontroller Programmierung

5 Semester, wie soll man die so schnell zusammenfassen?!

Ich hoffe, ich konnte Dir ein bißchen helfen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.