Gast
#5566711
Hallo in die Runde,
ich habe ein großes Problem, ich habe 3 Bytes mit Daten.
Diese 3 Bytes sind 3*8 24 Bit eines 32 Bit Datenworts, die Aufnahme
mache ich mit einem Byte-Array anstatt mit einer 32 Bit Variable da ich
so leichter die Daten vorverarbeiten kann.
Jetzt möchte ich die Daten wieder in 24 Bit schieben um ein Word zu
haben.
dmsa->LenghtMeasured = ((dmsa->readData[3] << 16) | (dmsa->readData[4]
<< 8) | dmsa->readData[5]);
So sieht das ganze dann aus.
Aber das funktioniert wohl nicht, denn wenn ich das ausgeben möchte,
habe ich für Bits > 15 immer 1. Warum?!
usart_ltoa((uint8_t)(dmsa->LenghtMeasured >> 16));
usart_putc(',');
usart_ltoa((uint8_t)(dmsa->LenghtMeasured >> 8));
usart_putc(',');
usart_ltoa((uint8_t)dmsa->LenghtMeasured);
usart_putc('\n');