Moin Moin, irgendwie stehe Ich gerade auf dem Schlauch. Möchte anstatt einer "if" Abfrage die Bits so einsammeln..
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
Aber das möchte nicht klappen. Was mache Ich falsch?
|
Anzeige
|
Software SPI - Register lesenMoin Moin, irgendwie stehe Ich gerade auf dem Schlauch. Möchte anstatt einer "if" Abfrage die Bits so einsammeln..
Aber das möchte nicht klappen. Was mache Ich falsch?
Gast
#5354058
Jan H. schrieb: > Was mache Ich falsch? Du zeigst nicht deinen kompletten Code. Wie ist denn SPI_MISO_BP definiert? Folgend. Der Port ist PINB. Und die Bitposition 1<<4
Gast
#5354070
Jan H. schrieb: > Und die Bitposition 1<<4 Du schaffst es ja nicht mal meine Frage zu beantworten. Was eigentlich gaaaaaaanz einfach sein sollte. Die lautete: Och nöö schrieb: > Wie ist denn SPI_MISO_BP definiert?
Gast
#5354071
Wo ist dein SPI Clocksignal? /* *uC = MEGA32 */ SPI_MISO_PIN = PINA; SPI_MISO_BP = (1<<4); Es geht erstmal nur um die Abfrage was Ich gerade nicht so ganz blicke. Um das Clocksignal kümmere Ich mich später. Jan H. schrieb: > Um das Clocksignal kümmere Ich mich später. Du kannst SPI keine Daten entlocken, wenn du es nicht taktest. Mit Glück liest du mit deinem Code immer das erste Bit, das aus der Peripherie tropft, aber kein bisschen mehr.
Gast
#5354098
Jan H. schrieb: > SPI_MISO_BP = (1<<4); > > Es geht erstmal nur um die Abfrage was Ich gerade nicht so ganz blicke. Wie matzetronics schon sagte musst du mit jedem Bit das du liest auch einmal den Clock toggeln. Um die If-Abfrage wirst du kaum herumkommen (was auch nicht sinnvoll ist) da dein Datenbit im Port nicht auf Position Null steht. Also dann lieber so:
Gast
#5354133
SPI_MISO_BP = (1<<4); // Das ist 16 >> SPI_MISO_BP // Du willst hier aber nur um 4 schieben
Gast
#5354140
Natürlich muss es heissen: #define SPI_MISO_BP (1<<4) Aber das ist auch sonst noch einiges im Argen ... Jan H. schrieb: > ( ( SPI_MISO_PIN & SPI_MISO_BP ) >> SPI_MISO_BP ); Damit wollte Ich bezwecken, dass das Bit (SPI_MISO_BP) mit dem Port (SPI_MISO_PIN) verUNDET wird. Wenn das Bit auf "high" liegt dann soll es ganz nach "rechts" geschoben werden, so dass das erste Bit gesetzt ist. Dann wird weiter geschoben (das ganze 8x) sollte doch so klappen oder?
Gast
#5354153
Jan H. schrieb: > sollte doch so klappen oder? Nein. Jan H. schrieb: > Dann wird weiter geschoben (das ganze 8x) sollte doch so klappen oder? Nö. Denn da wird um 1<<4 geschoben und nicht nur um 4. Lass Dir das Präprozessor Ergebnis (gcc -E) mal anzeigen, dann sieht man was passiert ist. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|