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