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