www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I/O-Register ansprechen


Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

hab eine frage zu den I/O Register;

ldi r16, 0b00000001
out DDRB, r16


Als erstes wird die Konstante (logische 1) ins Register r16 geladen bzw. 
dort abgespeichert;

Mit out wird dieses Register r16 wieder ausgegeben an den Port DDRB; da 
es sich um eine logische 1 handelt, ist sind alle Port B.0 - B.7 als 
Ausgänge konfiguriert, oder?

Bei diesem Bsp steht aber dabei, dass Port B.0 ein Ausgang und Port B.1 
bis Port B.7 Eingänge sind. hmmm... heißt das, dass DDRB ohne Nummer das 
Pin B.0 anspricht??? und alle Ports automatisch immer zuerst als 
Eingänge konfiguriert sind??

Wie kann ich z.B. nur Port B.1 oder B.5 ansprechen?? Geht dass dann über 
DDRB1 DDRB3??

David

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David wrote:
> Moin
>
> hab eine frage zu den I/O Register;
>
> ldi r16, 0b00000001
> out DDRB, r16
>
>
> Als erstes wird die Konstante (logische 1) ins Register r16 geladen bzw.
> dort abgespeichert;
>
> Mit out wird dieses Register r16 wieder ausgegeben an den Port DDRB; da
> es sich um eine logische 1 handelt, ist sind alle Port B.0 - B.7 als
> Ausgänge konfiguriert, oder?

Nein.

Das geht bitweise

Deine Maske war:

   0b00000001

jede 0 steht für einen Eingangspin, jede 1 für einen
Ausgangspin:

   0b00000001

Bit  76543210

Also ist Bit 0 auf Ausgang, alle andern (Bit 1 bis Bit 7) sind
auf Eingang

  0b00100100

Bit 76543210

Bit 2 und Bit 5 sind auf Ausgang, Bit 0, 1, 3, 4, 6, und 7 sind
auf Eingang

> bis Port B.7 Eingänge sind. hmmm... heißt das, dass DDRB ohne Nummer das
> Pin B.0 anspricht???

Nein.
Die Festlegung mittels DDRx gilt für alle Bits des betreffenden
Ports. Jedes Bit in der Maske, die an DDRx zugewiesen wird,
schaltet das zugehörige Port-Bit in den jeweiligen Modus.

> und alle Ports automatisch immer zuerst als
> Eingänge konfiguriert sind??

das stimmt allerdings. Die DDRx Bits sind per default auf 0.

>
> Wie kann ich z.B. nur Port B.1 oder B.5 ansprechen?? Geht dass dann über
> DDRB1 DDRB3??

Die Frage sollte sich jetzt erübrigt haben.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss nicht wo du das Beispiel her hast. Wenn wir über eine 
gemeinsame Diskussiongrundlage reden sollen, schlage ich 
http://www.mikrocontroller.net/articles/AVR-Tutori... 
vor...

Also den Port DDRB kannst du nicht direkt mit einer Konstante 
(0b00000001) belegen, daher der Umweg über das Register (hier) r16. 
Zuerst Register mit Konstante laden (ldi), dann Register in Port 
schreiben (out).

Der Wert der Konstante schaltet einzelne Pins am Port auf Ausgang (1) 
oder Eingang (0). Hier Bit0 auf 1 gesetzt, d.h. Pin0 an Port B ist 
Ausgang. Bit1-Bit7 auf 0 gesetzt, d.h. Pin1-Pin7 an Port B sind Eingang.

Zugriff auf einzelne Bits findest du bei
http://www.mikrocontroller.net/articles/AVR-Tutori...

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.