Hallo Leute, ich versuche gerade 32-Bit SPI Daten von einem MAX31855 in eine 32-Bit uint Variable zu schreiben. Aber egal welche Methode ich ausprobiere, der Compiler scheint da immer irgendwie dazwischen zu murksen. Im Moment benutze ich AVR-Studio 4 mit der avr-gcc-toolchain. Hier mal ein paar Beispiele, was ich so ausprobiert habe:
1 | buffer |= 0xFF000000 & (uint32_t)(SPI_recvByte() << 24); |
2 | buffer |= 0x00FF0000 & (uint32_t)(SPI_recvByte() << 16); |
3 | buffer |= 0x0000FF00 & (uint32_t)(SPI_recvByte() << 8); |
4 | buffer |= 0x000000FF & (uint32_t)(SPI_recvByte()); |
1 | for(index = 0; index < 4; index++) |
2 | {
|
3 | buffer |= (uint32_t)(SPI_recvByte() << (8 * (3 - index))); |
4 | }
|
1 | for(index = 3; index >= 0; index--) |
2 | {
|
3 | buffer |= (uint32_t)(SPI_recvByte() << (8 * index)); |
4 | }
|