PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DWord zusammensetzen



visualman
25.02.2007, 14:01
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



//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ß

Pascal
25.02.2007, 15:14
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.

visualman
25.02.2007, 15:37
Danke,

mit dem vorher casten klappt.