Hallo!
Ich möchte einen 14bit Datensatz von meinem Beschleunigungssensor in
eine 16bit Variable kopieren.
Dazu lese ich wie im folgenden Codeteil 2 Byte aus und verschiebe das 1.
Byte (MSB) um 8 Stellen nach links und das 2. Byte (LSB) um 2 Stellen
nach rechts. Beide Bytes werden nun mittels ODER in FXLS_raw_z
gespeichert.
1 | // copy the 14 bit accelerometer uint8_t data into 16 bit uint16_t
|
2 | FXLS_raw_z = ((FXLS_XYZ_Data[0] << 8) | FXLS_XYZ_Data[1])>> 2;
|
Wenn ich nun für das 1.Byte einen Wert von 0x0043 und für das 2. Byte
einen Wert von 0x0024 erhalte, wird in die Variable FXLS_raw_z der Wert
0x10C9 gespeichert.
Und diesen Wert verstehe ich jetzt nicht!
Ich verstehe das (binär betrachtet) so:
0000 0000 0100 0011 << 8 = 0100 0011 0000 0000
0000 0000 0010 0100 >> 2 = 0000 0000 0000 1001
==============================================
Ergebnis: 0100 0011 0000 1001
in Hex: 4 3 0 9
Wie kommt mein UC hier auf 0x10C9 ?