floatzahl in ein assemblerkompatibles Format umwandeln

Gast #2102476
Lesenswert?
• ▲
▼
Hallo zusammen,

eine Sensorelektronik liefert eine Floatzahl welche Werte von -200,0 bis 
+850,0 beschreibt.
Diese Floatzahl ist zwar mit 'C' auszuwerten aber ich suche eine 
Möglichkeit diese in ein assemblerkompatibles Zahlenformat umzuwandeln.

Gibt es da eine Lösung?
Moderator (Firma: Titel) Persönliche Seite #2102491
Lesenswert?
• ▲
▼
König Artus schrieb:
> eine Sensorelektronik liefert eine Floatzahl welche Werte von -200,0 bis
> +850,0 beschreibt.
Worüber (Schnittstelle, ADC) wird diese Zahl geliefert?

> Möglichkeit diese in ein assemblerkompatibles Zahlenformat umzuwandeln.
Wozu? In welchem Assembler?

> eine Floatzahl welche Werte von -200,0 bis +850,0 beschreibt.
Diese Zahl liesse sich z.B. in einer Festpunktzahl super abbilden.
Du definierst einfach: Zahlenbereich -2000...8500 und schwuppdiwupp 
passt das locker in eine 16-Bit Zahl...
Gast #2102782
Lesenswert?
• ▲
▼
Danke für eure Antworten!

Lothar Millers Idee mit der 16-Bitzahl ist schon mal einleuchtend.


Der Hintergrund:(Hätte ich sofort schreiben sollen)

Die Sensorelektronik gibt über SPI(Slave) eine floatzahl aus(4 Byte).
Die Empfängerplatine übernimmt mit SPI(Master) diesen Wert. Wie tobi 
schrieb, ist es wohl maso-mässig diese floatzahl im Assemblerprogramm 
des Empfängers weiter zuverarbeiten.
Da sind 16-Bit doch handlicher, auch wenn die Übertragung viermal 
solange dauert.

Besten Dank!
Moderator (Firma: Titel) Persönliche Seite #2103030
Lesenswert?
• ▲
▼
König Artus schrieb:
> Die Sensorelektronik gibt über SPI(Slave) eine floatzahl aus(4 Byte).
Das macht nur Sinn, wenn die Dynamik des Signals es erfordert. Das ist 
hier augenscheinlich nicht nötig...

Was ist das für eine "Sensorelektronik"?

Serieller schrieb:
>> Da sind 16-Bit doch handlicher, auch wenn die Übertragung viermal
>> solange dauert.
> Halb so lange...
Hätte ich auch getippt: 32 Bit (float) vs 16Bit (short)...
Gast #2103819
Lesenswert?
• ▲
▼
> Da sind 16-Bit doch handlicher, auch wenn die Übertragung viermal
> solange dauert.

Halb so lange...

Ähm..
"Bedecket mein Haupt nun, es muss erst gereinigt sein"(Aus "Die 
Zauberflöte")


Lothar Miller schrieb:
> Du definierst einfach: Zahlenbereich -2000...8500 und schwuppdiwupp
> passt das locker in eine 16-Bit Zahl...

So, zwischen "schwuppdi" und "wupp" hakt es jetzt. ;-)

Nachdem was ich mir erlesen habe kommt da ein 16-Bit 2er-komplement in 
Frage. Wie konvertiere ich eine float in das 2er-komplement?

Ich hab mal folgendes gemacht:

float a;
signed int b;

b = a;

In b steht zwar das 2er-komplement von der Ganzzahl von float a, aber 
eine Auf/Abrundung der ersten Nachkommastelle von float a wird nicht 
berücksichtigt.

Gibt es da vielleicht Bibliotheksroutinen?

Vor lauter Bäumen seh ich den Wald nicht mehr.
Gast #2103874
Lesenswert?
• ▲
▼
Helmut Lenzen schrieb:
> Du willst ja eine Nachkommastelle haben.
>
> Also von 2000 .. 8500

Ja, von -2000 bis +8500.

Das Geheimniss mit der +0.5 war mir neu. Ich hab jetzt folgendes 
gemacht:

float a;
signed int b;

if(a < 0)
    b = 10 * a - 0.5; // -2000 bis <0
    else
        b = 10 a + 0.5; // 0 bis 8500


Besten Dank für deine Hilfe!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.