Ich hänge noch immer an der Umrechnung von 2*1Byte nach 16-Bit.
Rauskommen soll ein 16-Bit WErt nach EIS5 mit 1 Kommastelle, d.h. der Wert ist um Faktor 10 zu hoch und wird am Ende einfach geteilt, oder mit Anderen Worten die Masseinheit ist 0,1
Bei werten von 0 bis 255 ist das kein Problem, da nehme ich den 2. Wert, dividiere ihn durch 10 und schon habe ich die Temperaturen von 0 bis 25,5 °C
Bei höheren oder niedriegeren Temperaturen wird das dann schwieriger, denn da kommt ja der 2.Wert ins Spiel.
Der ist so definiert, daß die 1.Stelle das "sign" ist. Ich habe also von 0-127 als "Range", den multiplizier ich mit 256 ( um den Exponenten zu bekommen ) und addier die 2. Zahl. Das ganze dann gibt die "insgesamttemperatur".
Habe ich Temperaturen unter Null, dann ist der Wert des ersten Bytes ja > 127. Jetzt gehe ich so vor, daß ich vom ersten Byte erstmal 128 abziehe und dann die rechnung mache, dabei das Ergebnis dann aber mit (-1) multipliziere, damit ich das vorzeichen habe.
Momentan kommt rein:
0xff 0xf8
das müsste so um die -3°C ergeben, bei mir kommt aber ein Wert von -3275 raus.
Wo ist denn da mein Denkfehler???
Rauskommen soll ein 16-Bit WErt nach EIS5 mit 1 Kommastelle, d.h. der Wert ist um Faktor 10 zu hoch und wird am Ende einfach geteilt, oder mit Anderen Worten die Masseinheit ist 0,1
Bei werten von 0 bis 255 ist das kein Problem, da nehme ich den 2. Wert, dividiere ihn durch 10 und schon habe ich die Temperaturen von 0 bis 25,5 °C
Bei höheren oder niedriegeren Temperaturen wird das dann schwieriger, denn da kommt ja der 2.Wert ins Spiel.
Der ist so definiert, daß die 1.Stelle das "sign" ist. Ich habe also von 0-127 als "Range", den multiplizier ich mit 256 ( um den Exponenten zu bekommen ) und addier die 2. Zahl. Das ganze dann gibt die "insgesamttemperatur".
Habe ich Temperaturen unter Null, dann ist der Wert des ersten Bytes ja > 127. Jetzt gehe ich so vor, daß ich vom ersten Byte erstmal 128 abziehe und dann die rechnung mache, dabei das Ergebnis dann aber mit (-1) multipliziere, damit ich das vorzeichen habe.
Momentan kommt rein:
0xff 0xf8
das müsste so um die -3°C ergeben, bei mir kommt aber ein Wert von -3275 raus.
Wo ist denn da mein Denkfehler???
Kommentar