Gast
#1865302
Folgendes Problem: Ich bekomme ein Array mit 5 Bytes, in denen ein 24-Bit-Wert versteckt ist. Und zwar so: spi_buf[0] = X X X X X X X X spi_buf[1] = X X X X X X 23 22 spi_buf[1] = 21 20 19 18 17 16 15 14 spi_buf[2] = 13 12 11 10 09 08 07 06 spi_buf[3] = 05 04 03 02 01 00 X X Die Zahlen geben dabei die Bit-Positionen an, MSB first... Jetzt hätte ich gerne eine Funktion, die mir auf einem Atmel AVR mit AVR-GCC aus diesem (globalen) Array den 24-bit-Wert in einem uint32_t zurückgibt. Folgendes habe ich probiert:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Leider funktioniert das nicht. Ich bekomme eine Compiler-Warnung, dass ich weiter schiebe, als der Typ breit ist. Außerdem scheinen die Daten korrumpiert zu sein. Was mache ich falsch?