Hallo,
möchte pber ein 74xx165 Schieberegister Daten einlesen und verwende dazu
folgenden Code, der auch funktioniert (Ich möchte dafür kein SPI
verwenden).:
1 | //--Schnipp
|
2 |
|
3 | M_LATCH_L; //Paralell in
|
4 | M_LATCH_H;
|
5 |
|
6 | unsigned char in=0;
|
7 |
|
8 | for(unsigned char i=0; i< 8; i++)
|
9 | {
|
10 | M_CLK_H; //Clock high
|
11 |
|
12 | //read bit
|
13 | in = (in << 1);
|
14 | in |= ((M_IN_PIN >> M_IN_PINNR) & 1);
|
15 |
|
16 | M_CLK_L;
|
17 | }
|
18 |
|
19 | //--Schnapp
|
Nun wollte ich noch ein weiteres neuntes bit einlesen und habe gedacht
ich löse das so:
1 | //--Schnipp
|
2 |
|
3 | M_LATCH_L; //Paralell in
|
4 | M_LATCH_H;
|
5 |
|
6 | unsigned char in=0;
|
7 | unsigned char in2=0;
|
8 |
|
9 |
|
10 | for(unsigned char i=0; i< 9; i++)
|
11 | {
|
12 | M_CLK_H; //Clock high
|
13 |
|
14 | if(i < 8)
|
15 | {
|
16 | //read bit
|
17 | in = (in << 1);
|
18 | in |= ((M_IN_PIN >> M_IN_PINNR) & 1);
|
19 | }
|
20 | else
|
21 | {
|
22 | in2 = ((M_IN_PIN >> M_IN_PINNR) & 1);
|
23 | }
|
24 | M_CLK_L;
|
25 | }
|
26 |
|
27 | //--Schnapp
|
Doch leider funktioniert es nicht richtig, das Problem ist nicht, dass
das neunte Bit nicht richtig gelesen wird, sondern, dass die ersten 8
bit nun derart geshifetet sind, dass das Höchstwertige fehlt.
Wahrscheinlich irgendein kleiner Denkfehler aber ich komme gerade
einfach nicht drauf...
Danke