Forum: Mikrocontroller und Digitale Elektronik GPIO Joystik (input) auf 1768


von Milan (Gast)


Lesenswert?

Hallo zusammen,
ich versuche gerade auf Keil mcb1700, einige Übungen mit GPIO 
hinzubekommen. z.B wenn ich den Joystick betätige soll eine bestimmte 
LED leuchten. Dabei habe ich auf eine Internetseite folgende 
Codefragmente gefunden:

"For example, the five button joystick is connected to pins P1.20, 
P1.23, P1.24,
P1.25 and P1.26.

LPC_PINCON->PINSEL3 &= ~((3<< 8)|(3<<14)|(3<<16)|(3<<18)|(3<<20));
/* P1.20, P1.23..26 is GPIO (Joystick) */"

Aber ich kann das absolut nicht nachvollziehen. Warum shiftet er 
ausgerechnet die 3 ? was hat die 3 hier zu bedeuten?

und hier:
For example, to read the joystick position, the following code can be 
used
#define KBD_MASK 0x79
uint32_t kbd_val;
kbd_val = (LPC_GPIO1->FIOPIN >> 20) & KBD_MASK;

Was passiert hier genau? warum shift um 20? warum nach rechts? und was 
sagt mir die 0x79??...

Hab die Doku von LPC1768 auch angeschaut. Leider ohne Erfolg. kann mir 
da einer vielleicht auf die Sprünge helfen?
hier ist nochmal der komplette Link.
https://ece.uwaterloo.ca/~yqhuang/labs/ece254/doc/MCB1700_Hardware.pdf

von Jim M. (turboj)


Lesenswert?

> Warum shiftet er ausgerechnet die 3 ?

Weil PINSELx in Gruppen von 2 Bits aufgeteilt ist. Preisfrage: Wie sehen 
2 Bits hintereinander dezimal aus? Genau: 3 ist die Antwort.

Siehe auch: Bitmanipulation

von Milan (Gast)


Lesenswert?

Jim Meba schrieb:
> Weil PINSELx in Gruppen von 2 Bits aufgeteilt ist

kannst du das bitte etwas ausführlicher erklären?  Steht meine Antwort 
vielleicht auf seite 104 Tabelle 75?? Sorry ich kapiere es immer noch 
nicht.
Mit Bitmanipulation habe ich keine Probleme. Mir ist nur schleierhaft 
warum die so manipuliert werden. Das Datenbuch bringt mir hierbei 
irgendwie auch keine Erleuchtung. Aber danke für deine Hinweis.

von Milan (Gast)


Lesenswert?

Hat sonst niemand mehr eine Hinweis der mir weiterhelfen könnte?

Es geht mir einfach ums Verständnis der Zusammenhänge. ich bin ziemlich 
neu im Bereich µC.

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.