Forum: Compiler & IDEs Virtuelles Pinregister erstellen


von oskar (Gast)


Lesenswert?

Hallo möchte die Dannegger Entprellung auf 16 Bit aufbohren!
Nun versuche ich ein Virtuelles Pinregister anzulegen aber ich bekomme 
es nicht hin!
1
           te = ( PIND & 0x01)   |
2
    ( PIND & 0x02)   |
3
    ( PIND & 0x04)   |
4
    ( PIND & 0x08)   |
5
    ( PIND & 0x10)   |
6
    ( PIND & 0x20)   |
7
    ( PIND & 0x40)   |
8
    ( PIND & 0x80)   |
9
    ( PINB & 0x01) <<15 |
10
    ( PINB & 0x02) <<14 |
11
    ( PINB & 0x04) <<13 |
12
    ( PINB & 0x08) <<12 |
13
    ( PINB & 0x10) <<11 |
14
    ( PINB & 0x20) <<10 |
15
    ( PINB & 0x40) <<9 |
16
    ( PINB & 0x80) <<8   ;

Ich möchte die Reifenfolge des PORTB mit den -schiebeoperation so 
anordnen wie ich möchte!

Bitte helft mir

LG
Oskar

von Karl H. (kbuchegg)


Lesenswert?

Du musst dir darüber im klaren sein, dass ein
1
    ....
2
3
    PINB & 0x40
4
5
....
eben nicht 0 oder 1 ergibt, sonder 0 oder 0x40, je nachdem ob dieses Bit 
gesetzt ist oder nicht.

D.h. du musst dir bestimmen um wieviele Bits du ein mögliches 1-Bit 
jedes Teilausdrucks du nach links oder rechts schieben musst, damit es 
an der Zielposition zu liegen kommt

Beispiel:
Wenn das das interessierende Bit ist
1
                                     7   6   5   4   3   2   1   0
2
                                   +---+---+---+---+---+---+---+---+
3
                                   |   |   |   |   | X |   |   |   |
4
                                   +---+---+---+---+---+---+---+---+

und du möchtest es im 16-Bit Ziel an diese Position haben
1
  15  14  13  12  11  10   9   8     7   6   5   4   3   2   1   0
2
 +---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
3
 |   |   |   | X |   |   |   |   | |   |   |   |   |   |   |   |   |
4
 +---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+

dann musst du das Bit um 9 Positionen nach links verschieben

: Bearbeitet durch User
von oskar (Gast)


Lesenswert?

Danke
Wie Dumm von mir ich hätte es mir aufzeichnen müssen so ist es klar!
Danke

von Karl H. (kbuchegg)


Lesenswert?

Im übrigen.
WOzu soll das bei der PeDa Entprellung gut sein?

Einfach
1
   tmp = ( PINB << 8 ) | PIND;

den restlichen Code von 8 auf 16 Bit aufbohren und gut ists.

Bei der PeDa Entprellung ist es ja völlig wurscht, wie rum die Bits in 
den einzelnen Variablen angeordnet sind. Welches Bit welcher Taste 
entspricht regelst du ja sowieso indem du die Bitnummer bei den #define 
angibst.

von Ralf G. (ralg)


Lesenswert?

Müssen das wirklich 16 Eingänge sein? Schon mal über eine Matrix 
nachgedacht?

von W.S. (Gast)


Lesenswert?

Ralf G. schrieb:
> Müssen das wirklich

JA... offensichtlich. Wer Peters Entprellung benötigt, braucht auch 16 
einzelne Eingänge.

W.S.

von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> Wer Peters Entprellung benötigt, braucht auch 16
> einzelne Eingänge.

Nö, es reicht auch einer:

Beitrag "Tastenmatrix auslesen über nur 2 Leitungen"

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.