-
        

Ergebnis 1 bis 5 von 5

Thema: PIC double

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2005
    Beiträge
    7

    PIC double

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.07.2004
    Ort
    Zwingenberg (Bergstraße)
    Alter
    28
    Beiträge
    136
    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

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

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

    MfG

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    44
    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

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

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

    Distanz zum Mond in [mm]?


    Gruess
    Fritzli

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •