Ja, HaWe.
Das war das schöne an x86 Assembler. Daten lesen in den Speicher und zugreifen mit 8Bit, 16Bit oder 32Bit - egal, weil Speicher ist Speicher.
So nun dachte ich, Daten einlesen in einem Rutsch, und zugreifen mit:
8Bit-Werten, liest mir ein Byte aus dem Puffer in meine uint8_t -Variable
16Bit-Werten, liest mir zwei Byte aus dem Puffer in meine uint16_t-Variable
geht nur nicht.
Ich habe es umgestellt auf Byte und muss dann shiften und den zweiten Wert nochmal verknüpfen.
- - - Aktualisiert - - -
Ich schlage mich mit den X-Y-Z-Werten des Lagessensors rum.
mit ACX = obj.getX(); bekomme ich einen 16Bit-Wert (anscheinend vorzeichenbehaftet)
obj.getCalculatedX(); liefert normalerweise positive und negative Werte als Float, wenn man das als Serial.print(..) ausgibt.
bei ACX = (uint16_t)obj.getCalculatedX(); bekomme ich aber nur "0"-Werte
bei ACX = obj.getCalculatedX(); ebenfalls
ACX ist dabei uint16_t
Diese Sensorwerte wollte ich einfach einlesen und speichern. Na ja ...
Wobei die Methode getCalculatedX() mit float als Rückgabewert deklariert ist.
Verstehe noch nicht, warum da nur Nullen bei rum kommen.
Jetzt hab ich es: ich bekomme nur Nullen als Nicht-float, weil die Werte so klein sind. 0 bis +1.
Lesezeichen