Forum: Mikrocontroller und Digitale Elektronik Fixkomma library für den AVR?


von Hanno (Gast)


Lesenswert?

Hallo!

Ich werde im Moment mit den float und double-typen im gcc nicht ganz
glücklich. Die sind ja bekanntermaßen Spericher- und
Taktzyklen-Fresser, und ich brauche ja nur ein paar bits nach dem
Komma.
Also meine Frage: Kennt jemand eine Fixkomma (fixed-point-math) library
für den avr-gcc?
Selbermachen? Schon gut. Hab ich schon. Aber die division im gcc ist
mir auch noch zu langsam (600 zyklen für zwei 16-Bit-Werte). Das geht
noch schneller!
Also: Vorschläge?

Danke und Gruß,
Hanno

von Jörg Wunsch (Gast)


Lesenswert?

Woher weißt Du denn, daß die Division noch schneller geht? ;-)

Da die Zyklenzahlen für die Division stark von den Operanden abhängen,
ist sowas sowieso 'ne Hausnummer.  (Division durch 2^N sollte
erheblich schneller gehen. :)

Ich habe noch ein gutes altes Buch ,,Arithmetische Algorithmen der
Mikrorechentechnik'' im Schrank, danach könnte man sicher sowas
implementieren.  Allerdings würde ich an Deiner Stelle einen
derartigen Aufwand nur für eine größere Serienproduktion treiben und
ansonsten lieber den nächstgrößeren Controller benutzen.  Das ist
preiswerter.  Ansonsten wirst Du bei einem umgerechneten
,,Stundenlohn'' von ein paar Cent rauskommen.

Ob die Portierung einer `aribtrary precision arithmetic library'
(z. B. libgmp) einfacher ist, mag ich nicht einzuschätzen.

von Hanno (Gast)


Lesenswert?

Ja, ok, erwischt! :)
Ich habe kurz die Appnotes überflogen und gesehen, dass da mit wenig
Assembler in 100-200 Zyklen 16-Bit (integer) Divisionen gemacht
werden.
Das kommt mir schon recht entgegen. Vielleicht baue ich mir das passend
ein (32 Bit?).
Ich bin fast vom Stuhl gefallen, als ich gestern gesehen habe, dass das
Umwandeln einer float-Zahl nach Ascii im gcc 14000 Takte braucht.
Spätestens da bin ich dann mit Fixkomma um Längen schneller.

Das mit dem Stundenlohn ist bei meinen Einzelstücken eh ein Punkt, über
den man besser nicht nachdenkt :)

Gruß,
Hanno

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.