Forum: Mikrocontroller und Digitale Elektronik SPDR in Structure schreiben?


von Stef (Gast)


Lesenswert?

Hallo zusammen,
Versuche gerade das SPI Datenregister SPDR (nach dem Empfang eines 
Bytes)
an ein struct zu übergeben um auf die einzelnen Bytes zugreifen zu 
können.
Hierbei gibt mir der AVR-GCC jedoch die Fehlermeldung aus:
"request for member bx in something not a structure or union"

habe die Structure wie folgt definiert:

struct
{
b0:1;
b1:1;
...
b7:1;
} prob;

dann später in meiner spi_transmit funktion versuche ich dort das SPDR 
rein zu schieben:

prob = SPDR;

Den Versuch mache ich deshalb weil ich auf Fehlersuche in der 
Datenübertragung bin (SPI Beschleunigungssensor Liefert nur 
Schrottwerte).
Und ich würde mir die Daten des SPDR Registers seriell auf einem Pin 
ausgeben um mir die Daten auf dem Oszi angucken zu können.

Also die Fragen:
1. Warum akzeptiert der GCC die Zuweisung von SPDR nach Strukt nicht?
2. Gäbe es eine "formschönere" Variante?
3. Gibt es eine C Funktion mit der ich Bitweise auf eine Variable 
zugreifen kann, die 1 oder 2 Byte lang ist?

Ne Antwort würde mir helfen, ... und der Fehler leigt nicht in Zeile 42 
... die Angesprochenen werden wissen was ich meine ;)

von Rahul, der Trollige (Gast)


Lesenswert?

Nicht (nur) struct, sondern union...

von Rahul, der Trollige (Gast)


Lesenswert?

>1. Warum akzeptiert der GCC die Zuweisung von SPDR nach Strukt nicht?

Äpfel und Birnen...


>2. Gäbe es eine "formschönere" Variante?
Union (wie schon geschrieben...)

>3. Gibt es eine C Funktion mit der ich Bitweise auf eine Variable
>zugreifen kann, die 1 oder 2 Byte lang ist?

bitorientierte Operationen wie "&", "|", "~", "<<", ">>"...

von Rahul, der Trollige (Gast)


Lesenswert?

>Und ich würde mir die Daten des SPDR Registers seriell auf einem Pin
>ausgeben um mir die Daten auf dem Oszi angucken zu können.

MOSI oder MISO anzapfen...

von Matthias (Gast)


Lesenswert?

Und ich würde mir die Daten des SPDR Registers seriell auf einem Pin
>ausgeben um mir die Daten auf dem Oszi angucken zu können.

SPDR => UART => Terminal

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.