www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIND vs PORTD


Autor: Gernot Frisch (gernotfrisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

nicht kapiert, was der Unterschied zwischen PIND und PORTD sein soll,
weil ja mit PORTD auch gelesen werden kann!?

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein PORTD kannst du zwar auslesen, da wird aber nur das drin stehen was
du vorher rein geschrieben hast. PIND ist um den tatsächlichen port
status ein zu lesen.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, PORTD kann auch gelesen werden. Allerdings steht da drin, was du
auch in PORTD reingeschrieben hast. In PIND steht das drin, was an den
Port-Pins anliegt, wenn diese per DDRD als Eingang geschaltet wurden.
Dann steht in PORTD der Zustand der internen Pull-Up-Widerstände.

Autor: Ale (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PIND benuztst du wenn der PIN als Eingang funktuiniert, und ud möchtest
die Status lesen. PORTD benutzst du wenn es ist ein Ausgang und du
möchtest lesen was hast du im PORTD geschriben.

Wenn ein PIN als eingang konfiguriert ist, mit PORTD.x = 1, du
aktivierst ein pull-up Wiederstand in der PIN.

Ich hoffe es hilft.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTD ist das Portregister, das den Zustand der Ausgangstreiber enthält,
völlig unabhängig davon, was an dem Pin (extern) wirklich passiert. PIND
ist kein Register, sondern nur eine Adresse im IO-Space, an der der
aktuelle Zustand des Pins gelesen werden kann.

Autor: Gernot Frisch (gernotfrisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh weia! Wenn ich ein Display anschließe, und dort dann 8 pins lesen
will - muss ich dann "DDRD - was'n das??" auf "Eingang" schalten,
dann mit PIND lesen, und wieder auf "Ausgang" schalten?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDR = Data Direktions Register. 1 = Ausgang, 0 = Eingang

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so isses. Zum schreiben den Port als Ausgang (DDRD.x = 1), Daten
in PORTD.x schreiben, und zum lesen als Eingang (DDRD.x = 0) und die
Daten über PIND einlesen. Vor dem Einlesen sollte man natürlich noch
das Portregister in einen definierten Zustand bringen (da die üblichen
LCDs aktive Ausgänge haben, sollte man dann PORTD.x = 0 setzen
[Pull-Ups ausgeschaltet], und zwar am besten vor dem Umschalten der
Datenrichtung).

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.