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!?
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.
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.
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.