-
-
Erfahrener Benutzer
Roboter-Spezialist
Nur oberes Nibble eines Ports beschreiben
Hallo!
Ich möchte gerne an einem ATMega8 die als Ausgang geschalteten Pins PD4 bis PD7 schalten und dies gerne mit der Übergabe eines Wertes, also z.B. Portd=Wert. Allerdings sind die anderen Pins von Port d als Eingang geschaltet und ich weiss nicht, ob ich damit etwas beschädigen könnte, daher die Frage: ist es möglich, nur dem oberen Nibble des Ports einen Wert zuzuweisen?
-
Erfahrener Benutzer
Roboter Genie
Das geht am besten indem du den Wert aus dem Port ausliest und ihn mit AND ausblendest. Dann das zu schreibende Byte mit OR wieder hinzugügen und fertig:
' Wert der geschrieben werden soll ins obere Nibble
Wert = 123
' Wert oberen Nibble ausmaskieren
Wert = Wert And &B11110000
' Aktuellen Zustand des Ports im unteren Nibble ausblenden
TempWert = PortD And &B00001111
' Beide Werte wieder kombinieren und auf Port schreiben
PortD = TempWert Or Wert
Anstatt der &B00001111 kann man auch einfach &H0F schreiben
Prinzip des AND:
xxxxxxxx
00001111
-----------
0000xxxx
Prinzip des OR:
xxxxxxxx
01100000
-----------
x11xxxxx
Grüße Wolfgang
-
Erfahrener Benutzer
Roboter-Spezialist
Super Erklärung, Danke Wolfgang!
-
Erfahrener Benutzer
Roboter Experte
Hi,
tschuldigung, dass ich den Thread jetzt einfach so ausgrabe, aber ich hätte auch eine Frage zur Nibble-Kommunikation.
Ich möchte ein Byte (also Wertebereich 0 - 255) auf 5 Ports senden. 4 zum parallelen Übertragen der Nibble und quasi eine als "Statusanzeige", die auf high gesetzt wird, wenn das Nibble das höherwertige ist.
Das Senden hat ja Wolfgang schon sehr anschaulich beschrieben, mir ist nur das Empfangen unklar. Ich könnte ja den Port auslesen, den Wert in eine Variable schreiben, wenn das höherwertige Nibble übertragen wurde, in die eine Variable, ansonsten in die andere. Danach könnte ich die beiden Werte einfach mit OR kombinieren.
Den Port, welchen ich zum Empfangen verwenden möchte, ist aber nicht unbelegt, da hängt auch noch der Quarz drauf. Nun meine Frage, kanns da zu Problemen mit dem Auslesen kommen?
Viele Grüße
ikarus_177
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen