Hi, ich habe mehrere Eingangsplatinen die ich mit jeweils zwei Schieberegister bestückt habe. Ich schiebe mit folgender Schleife meine 1en und 0en in das "Eingang[i]" Array. Für eine andere Auswertung benötige ich jedoch die Bits im Byte, hierfür habe ich ein ByteArray angelegt "StatusEingangKarte[j]" -> uint16_t StatusEingangKarte[EPL_Anzahl]; In diesem ByteArray sollen jetzt von der ersten Karte die 16 bit reingeschoben werden, wie mache ich das am besten? Ich habe es so versucht, nur wie bekomme ich den nächsten "j" oder "k" hin der mir eine neue Karte signalisiert?!?! Alle 16 muss "j" und "k" erhöht werden?!?! Habt ihr da eine Idee?
1 | |
2 | |
3 | |
4 | int i = 0; |
5 | //Abfragen welches Registerbit gesetzt -> mit clock weiter schiebenEPL_Anzahl
|
6 | for(i=(EPL_Anzahl * 16)-1;i>=0;i--) |
7 | {
|
8 | |
9 | if (PINA & (1<<PINA0)) |
10 | { // Logisch 0 wenn Schalter nicht gedrückt da Pullup an |
11 | Eingang[i] = 0; |
12 | |
13 | |
14 | int j = 0; |
15 | |
16 | for(j=EPL_Anzahl ; j>=0; j--) |
17 | {
|
18 | StatusEingangKarte[j] &= ~(1 << i); |
19 | }
|
20 | |
21 | |
22 | |
23 | }
|
24 | else
|
25 | {
|
26 | Eingang[i] = 1; |
27 | |
28 | |
29 | int k = 0; |
30 | |
31 | for(k=EPL_Anzahl; k>=0; k--) |
32 | {
|
33 | StatusEingangKarte[k] |= ( 1 << i ); |
34 | }
|
35 | |
36 | }
|