Forum: Mikrocontroller und Digitale Elektronik AVR: Lesen was zuletzt auf Port geschrieben wurde


von Annemarie (Gast)


Lesenswert?

Hallo,

Eine kurze Frage, das AVR Datenblatt verwirrt mich da irgendwie, für die 
meisten hier aber sicher kein Problem:

Ein Port ist als AUSGANG geschaltet (ddrn->255)
Ich möchte nun auslesen, welchen aktuellen Zustand die Portpins haben, 
diese Werte modifizieren und zurückschreiben. Damit ich den laufenden 
Zustand nicht in einer Variable mitprotokollieren muss.
Portweise, also nicht mit sbi/cbi/sbic/sbis.
Muss ich dazu PINx oder PORTx auslesen?

Und was wäre wenn der Port mixed-io hätte, also manche Pins als Ein- und 
andere als Ausgang. Wenn ich das ganze Portbyte auslese, die Output-Bits 
ändere und das ganze Portbyte zurückschreibe. Ändert sich dann etwas an 
dem Zustand derjeniegen Pins, die als Input geschaltet sind? Das möchte 
ich nämlich nicht.

Gruss
Annemarie

von spess53 (Gast)


Lesenswert?

Hi

Du kannst auch PORTn auslesen. Du musst nur aufpassen, wenn du für 
Eingänge interne PullUps benutzt. Die werden auch Über PORTn 
eingeschaltet.

MfG Spess

von Sven P. (Gast)


Lesenswert?

Die Sache ist folgende:

Wenn du was ins PORT-Register schreibst, bleibt das auch auf Biegen und 
Brechen in jedem Fall da stehen. D.h., du kannsts mit Sicherheit wieder 
rauslesen. Also: Was du ins PORT-Register schreibst, kommt nachher auch 
wieder raus.

Anders beim PIN-Register: Hier steht nicht der Wert, der vorher ins 
PORT-Register gesetzt wurde, sondern hier steht der tatsächliche Zustand 
des Pins. D.h., wenn du eine '1' ins PORT-Register schreibst, den 
entsprechenden Pin dann extern auf Masse kurzschließt, dann wirst du aus 
dem PIN-Register eine '0' lesen und dein Prozessor würd sich geringfügig 
(...) erwärmen :-)

von Detlev T. (detlevt)


Lesenswert?

@Annemarie
Auslesen kannst du beide. Für Ausgänge ist PORTx sozusagen der Sollwert, 
PINx der Ist-Wert. Für Bit-Manipulationen empfehle ich, den Wert von 
PORTx einzulesen und sicher zu stellen, dass nur Bits verändert werden, 
wo es auch gewollt ist. Dann gibt es auch keine Probleme mit den 
Pull-Ups.

von Annemarie (Gast)


Lesenswert?

Danke, Danke an alle.
Ich schätze, ich habe es nun (endlich) kapiert.

Annemarie

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.