Forum: Mikrocontroller und Digitale Elektronik Typumwandlung in Fixkomma-Library


von Enrico. J. (ejoerns)


Lesenswert?

Hallo,

bei meiner Suche nach einer Festkomma-Library für AVR bin ich auf das 
Projekt avrfix (http://avrfix.sourceforge.net/) gestoßen.

Dort sind Konvertierungs-Makros definiert:

z.B. _Accum nach double:
#define ktod(k)   ((double)((_sAccum)(k) / (1 << SACCUM_FBIT)))
oder float nach _Accum:
#define ftok(f)   ((_nAccum)(f)  * (1 << ACCUM_FBIT))

wobei SACCUM_FBIT beispielsweise die Position des ersten Integral-Bits 
des 'short _Accum'-Typen angibt. (_nAccum entspricht _Accum)

Arbeitet jemand mit dieser Bibliothek und kann mir sagen, ob irgendeine 
Magie oder für mich undurchsichtige Intention in diesen 'Formeln' 
versteckt?
Denn leider ergeben sie nicht das richtige Ergebnis und auch logisch 
kann ich sie nicht nachvollziehen.

Sinn (und in der Ausgabe das korrekte Ergebnis) ergäbe für mich z.B.

#define ktod(k)   ((double)(k) / (1 << ACCUM_FBIT))
und
#define ftok(f)   ((_nAccum)((f)  * (1 << ACCUM_FBIT)))

Ist das ein Fehler in der Bibliothek oder in meinem Verständnis?
Vielen Dank!

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.