PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC double



th
17.02.2006, 13:59
Hallo,

wiess jemand mit welchem Compiler man doubles auf einem PIC erstellen kann?
Ich habe so stark wechselnde input variablen dass ich manchmal aus der Reichweite von 32 bit ints hinaus komme (>2^32 oder <1). Ich habe eine etwas kompliziertere Rechnung und daher auch viele temp. Variablen bei denen ich auch auf den Betrag aufpassen muss.
Mit floats kenne ich mich auch nicht so gut aus und ich denke dass die auch nicht groesser als 2^32 sein duerfen (richtig???).
Daher denke ich daran an einer Stelle einen double einzusetzen um im Bezug auf Groesse der Zahl und Genauigkeit grossen Spielraum zu haben. Mein Compiler (C+C) unterstuetzt doubles aber leider nicht.

Optimal waere ein datentyp der lediglich eine bestimmte Anzahl von stellen fuer die Genauigkeit (in meinem Fall vielleicht 4) und einen exponenten speichert.
Existiert so etwas und kann man damit auf einem PIC arbeiten?

danke fuer die Hilfe,

mfg Thomas

mcs
17.02.2006, 15:00
Hallo!

ich kenne keinen Compiler der doubles unterstützt. ich würde diese variablentyp einfach selbst erstellen (mit entsprechenden routinen), das wird schneller gehen als auf einen neuen compiler umzusteigen

mfg matthias

PICture
17.02.2006, 17:55
Hallo!

Wie wäre es mit einer Additionsschleife X-1 mal X=X+X ?

MfG

*Mario*
20.03.2006, 18:33
Hallo,

ich weiß nicht ob das noch relevant ist. Aber schau doch mal bei microchip bei den Appnotes vorbei. Dort gibts jede Menge Material zu math-routinen, inklusive *.asm/*.inc Dateien. Die solltest Du dann mit dem C-Compiler einbinden (extern "C" ...) wie das geht steht da vermutlich auch gut beschrieben.

Eine float-Variable besteht aus der Mantisse (=Zahl mit einem Bit vor dem komma und dem Rest dahinter) und dem Exponenten. Die "länge" der Float-variabel in bit gibt daher nur dei Genauigkeit an, nicht aber Ihren Wertebereich.

Aber Achtung! Float-Berechnungen drücken die Geschwindigkeit ordentlich in die Knie, umso genauer umso schlimmer. Eine mittlere Anzahl der benötigten Taktzyklen findest Du auch in den Appnotes.

Nochwas: Das Library ist nicht reentrant, d.h. Du sollst es dann nicht im Interrupt und gleichzeitig im Haputprogramm verwenden (gemeinsame Variablen).

Mario

Fritzli
21.03.2006, 07:53
Hallo

Was ist denn das für eine hochspezialisierte High-Tech-Anwendung, die nicht mit 32Bits auskommt?

Distanz zum Mond in [mm]?


Gruess
Fritzli