16 Bit INT in RoboPro

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Stuessi
Beiträge: 48
Registriert: 03 Aug 2016, 15:15

16 Bit INT in RoboPro

Beitrag von Stuessi » 03 Sep 2016, 10:47

Hallo,

beim Lesen von 16Bit Werten an der I2C-Schnittstelle des TX mit einem Temperatur/Feuchte-Sensor bin ich über das Problem des eingeschränkten Zahlenbereichs gestolpert, da Werte über 32768 als negative Zahlen interpretiert werden.
Zwei Umwandlungen habe ich mir überlegt.

1. eine Verzweigung: Wenn Zahl ≥ 0 dann Wert:= Zahl andernfalls Wert := 65536 + Zahl

2. Mit SHR um 1 Stelle wird die führende 1 (das "Minuszeichen") unterdrückt. Da dies aber einer Division durch 2 entspricht, muss anschließend wieder mit 2 multipliziert werden.

Bei ungeraden Zahlen stimmen die Ergebnisse nicht überein, was aber in vielen Fällen unerheblich sein wird.

Bild

Bild

Gruß,
Stuessi

chehr
Beiträge: 193
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

Re: 16 Bit INT in RoboPro

Beitrag von chehr » 03 Sep 2016, 12:08

Hallo Stuessi,
es gibt in Robo Pro die Möglichkeit 16bit Zahlen als "Char" (0 bis 65535) einzulesen. Das Symbol ist das Gleiche (Umwandlung Ganzzahl / Gleitkomma). Robo Pro zeigt dann das Symbol mit der Schrift "UINT16 / FP48" an.
Somit bräuchte man deine Rechenoperation gar nicht.

Gruß
Christian

Stuessi
Beiträge: 48
Registriert: 03 Aug 2016, 15:15

Re: 16 Bit INT in RoboPro

Beitrag von Stuessi » 03 Sep 2016, 13:07

Hallo Christian,

danke für den Hinweis!

Gruß,
Stuessi

chehr
Beiträge: 193
Registriert: 07 Apr 2015, 21:07
Wohnort: Friedrichshafen

Re: 16 Bit INT in RoboPro

Beitrag von chehr » 03 Sep 2016, 14:34

Stuessi,
welchen Sensor verwendest du?
Falls es der Bosch Sensor BME280 ist, da wirst du sicher einige Stunden verbracht haben / verbringen, bezüglich Kompensationsformeln in Robo Pro.
Wie weit bist du?
Der Sensor ist super interessant, damit kann man auch Höhenunterschiede wie mit dem BMP280 von ca. 0.1 mm messen...

Stuessi
Beiträge: 48
Registriert: 03 Aug 2016, 15:15

Re: 16 Bit INT in RoboPro

Beitrag von Stuessi » 03 Sep 2016, 21:11

Hallo Christian,

es ist ein SI7021 HTU21 SHT21 GY-21 I2C Temperatur und Feuchtigkeits Sensor, eigentlich für 3,3 V, funktioniert aber (leider nur) im online-Betrieb auch an der TX-Schnittstelle. Die Werte scheinen zu stimmen.

Gruß,
Stuessi

Nachtrag:

Mit dem TXT funktioniert das Programm auch im offline Betrieb. Allerdings muss ich statt "°C" "grd.C " schreiben. Das ° Symbol wird nicht angezeigt und blockiert die Ausgabe des Wertes?!

Antworten