Hallo!
Habe gerade mal wieder nen Brett vor den Kopf:
Die Sensordaten eines CC2D habe ich vor einiger Zeit irgendwie gebacken bekommen.
Nun aber werkel ich seit Stunden an nem MPL3115A2:
Zwei Meßwerte in 5 Registern:
h01 Luftdruck MSB
h02 Luftdruck CSB <- Ergeben 3 Byte mit 20 Nutzbits und vier Schrottbits am Ende, Format Q18.2
h03 Luftdruck LSB
h04 Temperatur MSB <- Ergeben 12Bit inkl. Signierung 12 Bit in Q8.4
h05 Temperatur LSB
Druck ist ein Q18.2 Wert, Also...
Druck MSB h63 01100011
Druck CSB h72 ________ 01110010
Druck LSB h50 ________ ________ 10,10xxxx
Das untere Nibbel LSB ist Müll, wird nicht genutzt.
Das obere Nibbel LSB besteht aus zwei Bit vor dem Komma und zwei Nachkomma-Bits.
Manuell zusammengesetzt bekomme ich es auch auseinandergedröselt:
Obige Meßwerte zusammengesetzt (h63 h72 h50) ergäben binär: 11000110111001010 als Ganzzahl (Dec.= 101834)
Dazu die Bits 5 und 4 (10) dazu entsprechen einer Wertigkeit von 0,25 ergäbe dann 101834,50 Pascal, oder in das metereologische Format /100 = 1018,3425hPa.
Nur alle Ansätze bisher das in banscom nachzubilde die letzten Stunden waren wenig erheiternd.
Die Rohdaten liegen in einem Byte-Array MPL(2) bis MPL(4).
Von dort aus schiebe ich in ein DWord...zuerst erfolglos mit Addition und Shift, zuletzt Bitweise Manuel:
Dword.0 = MPL(4).6....usw..
Eigentlich dachte ich sowas hätte ich vor einiger Zeit mal verstanden, aber irgendwie helfen mir meine bisherigen 2-Byte-Flieskomma Erfahrungen da nicht wirklich weiter. Wie macht man sowas in möglichst einfach und effektiv?
Grüße
Jürgen
Habe gerade mal wieder nen Brett vor den Kopf:
Die Sensordaten eines CC2D habe ich vor einiger Zeit irgendwie gebacken bekommen.
Nun aber werkel ich seit Stunden an nem MPL3115A2:
Zwei Meßwerte in 5 Registern:
h01 Luftdruck MSB
h02 Luftdruck CSB <- Ergeben 3 Byte mit 20 Nutzbits und vier Schrottbits am Ende, Format Q18.2
h03 Luftdruck LSB
h04 Temperatur MSB <- Ergeben 12Bit inkl. Signierung 12 Bit in Q8.4
h05 Temperatur LSB
Druck ist ein Q18.2 Wert, Also...
Druck MSB h63 01100011
Druck CSB h72 ________ 01110010
Druck LSB h50 ________ ________ 10,10xxxx
Das untere Nibbel LSB ist Müll, wird nicht genutzt.
Das obere Nibbel LSB besteht aus zwei Bit vor dem Komma und zwei Nachkomma-Bits.
Manuell zusammengesetzt bekomme ich es auch auseinandergedröselt:
Obige Meßwerte zusammengesetzt (h63 h72 h50) ergäben binär: 11000110111001010 als Ganzzahl (Dec.= 101834)
Dazu die Bits 5 und 4 (10) dazu entsprechen einer Wertigkeit von 0,25 ergäbe dann 101834,50 Pascal, oder in das metereologische Format /100 = 1018,3425hPa.
Nur alle Ansätze bisher das in banscom nachzubilde die letzten Stunden waren wenig erheiternd.
Die Rohdaten liegen in einem Byte-Array MPL(2) bis MPL(4).
Von dort aus schiebe ich in ein DWord...zuerst erfolglos mit Addition und Shift, zuletzt Bitweise Manuel:
Dword.0 = MPL(4).6....usw..
Eigentlich dachte ich sowas hätte ich vor einiger Zeit mal verstanden, aber irgendwie helfen mir meine bisherigen 2-Byte-Flieskomma Erfahrungen da nicht wirklich weiter. Wie macht man sowas in möglichst einfach und effektiv?
Grüße
Jürgen