daniel schrieb:
> Hi vielen Dank für deine Antwort.
>
> Karl Heinz Buchegger schrieb:
>
>> Wenn du die beiden Bytes hast und zu einem 16 Bit Wert zusammensetzt,
>> dann machst du das alles mit unsigned Datentypen.
>
>
> das ist klar, (HighByte*256)+LowByte
>
>> Aber: Das endgültige Ergebnis weist du dann ganz einfach einem int16_t
>> zu und hast damit dann eine Variable, bei der die Bits dann richtig als
>> vorzeichenbehaftete Zahl interpretiert werden.
>
> das versteh ich nicht ganz, woher weiß ich dann ob es sich um eine
> negative bzw. positive Zahl handelt? An dem höchsten Bit (in meinem Fall
> Bit15), sprich durch einen Check des MSB, 0=+, 1=-?
Im Prinzip: ja.
Aber: Was interessiert dich das?
int16_t Wert = (int16_t)( (HighByte*256)+LowByte );
und du kannst mit Wert rechnen wie du lustig bist. Als int16_t hat der
ein Vorzeichen
if( Wert < 0 )
printf( "Wert ist negativ" );
> Ich weiß leider nicht ob der Sensor die Bytes als 2er Komplement ins RAM
> packt, dazu schweigt sich das Datenblatt aus. Es ist halt nur angegeben
> das der Wert zwischen -32768 bis +32768 liegen kann.
Bei diesen Vorgaben ist anzunehmen, dass es sich um 2-er Komplement
handelt. Wäre es was anderes, wäre das vermerkt.
> Es könnte ja auch sein das man einfach beim MSB ne 0 für + ne 1 für -
> dazupackt alle anderen Bits ergeben die dezimal-Zahl.
>
> Das letztere macht weniger Sinn?
Genau. Für den kleinen µC im Sensor macht das keinen Unterschied. Es
erschwert aber die Verwendung des Sensors.
Einfach mal ausprobieren. Dann weißt du es genau.