-
DWord zusammensetzen
Hallo,
ich möchte die Rückantwort des RN-MotorControl für den gefahren Weg haben. Als Antwort bekomme ich ja 4 Bytes. Funktioniert es mit meiner selbstgeschieben Funktion. Bei 2 Bytes funktoniert es einwandfrei.
Aber hier mault der Compiler:
warning: left shift count >= width of type
Code:
//w LOWWord_Low //x LOWWord_High //y HighWord_Low //z HighWord_High
uint32_t TODWORD(uint8_t w,uint8_t x,uint8_t y,uint8_t z) {
return ( ((w) << 24) | ((x) << 16) | ((y) << 8) | z);
}
Gruß
-
Das Problem ist, dass deine Variablen 8Bit groß sind, du schiebst die Bits aber weiter als diese 8 Bits nach links. Du brauchst also Variablen, in die mehr Bits reinpassen. Du deklarierst die Variablen gleich größer oder du castest sie beim shiften.
also so: (( (uint32_t) w) << 24)
Dann dürfte es eigentlich funktionieren.
-
Danke,
mit dem vorher casten klappt.