Hi,
ich habe hier mit meinem AVR-GCC-generierten Code ein paar seltsame
Probleme. Das lustige daran: der gleiche Code läuft in einer Simulation
unter Visual Studio und da klappt alles problemlos.
Ich übertrage Daten zu meinem AVR immer 3-Byte-weise, 1 Byte Kommando
der Rest Daten. Um einen 32-Bit-Wert zu übertragen sind also zwei
Aufrufe notwendig, in denen jeweils die unteren bzw. die oberen 16 Bit
gesendet werden:
1 | signed long newPos;
|
2 |
|
3 | // erste Übertragung, untere 16 Bit
|
4 | state.newPos=command.value;
|
5 | ...
|
6 | // zweite Übertragung, obere 16 Bit
|
7 | state.newPos|=command.value<<16;
|
Mein Problem: die Daten der zweiten Übertragung werden nicht verwendet!
in state.newPos stehen anschließend nur die unteren 16 Bit. Was läuft da
falsch? Was macht der AVR-GCC hier im Vergleich zum Visual Studio
möglicherweise anders?
"command.value" ist dabei ein "unsigned short".
Danke!