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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.