Forum: Mikrocontroller und Digitale Elektronik Float mit Assembler


von Michael Stather (Gast)


Lesenswert?

Ich habe gesehen dass die AVR Mikrocontroller den float Datentyp unter
C(++) unterstützen. Wie sieht das mit Assembler aus? Wird
Fliesskommaarithmetrik direkt vom Chip unterstützt oder "emuliert"?
Also gibt es auch Assembler-Befehle dazu? Hab in die Tabelle geschaut
aber das hilft mir auch nicht richtig weiter.

von Thomas W. (Gast)


Lesenswert?

nein, der AVR kann kein float in Hardware. Sowas nennt sich übrigens
Gleitkommaeinheit oder Floating Point Unit (FPU). Der Compiler setzt
das also alles in Software um. Deswegen float wenn immer geht
vermeiden!

von Vorn N. (eprofi)


Lesenswert?

Float kann man oft umgehen, indem man skaliert arbeitet (mit 16 oder
32-bit). Den Skalierfaktor legt man so, dass der Wertebereich möglichst
ausgenutzt wird und/oder man Schiebebefehle verwenden kann. Das nennt
man auch fixed-point.

z.B. Multiplikation mit 3,456 : *3456 / 1000   oder *3538/1024
angenähert *885/256

/1024 entspricht >>10   oder Zugriff um 1 Byte versetzt und >>2
/ 256 entspricht >>8    oder Zugriff um 1 Byte versetzt

Bitschieben um 8 kann man sich sparen, wenn man direkt auf das richtige
Byte zugreift.

Nenn mal ein Beispiel, was Du berechnen willst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.