Forum: Mikrocontroller und Digitale Elektronik PIND vs PORTD


von Gernot F. (gernotfrisch)


Lesenswert?

Ich hab hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29

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

von Lupin (Gast)


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.

von Rahul (Gast)


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.

von Ale (Gast)


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.

von johnny.m (Gast)


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.

von Gernot F. (gernotfrisch)


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?

von ich (Gast)


Lesenswert?

DDR = Data Direktions Register. 1 = Ausgang, 0 = Eingang

von johnny.m (Gast)


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).

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.