Forum: Mikrocontroller und Digitale Elektronik PIC Microchips Festkomma-Bibliothek mpy()


von Mr.T (Gast)


Lesenswert?

Halle Leute,
ich beschäftig emich gerade mit dem dsPIC30F3010 und Microchips 
Bibliothek zur rechnung mit Festkommazahlen.

(Benutze MPLABXIDE und den XC16-C-Compiler)

Ich habe das Problem, dass die Funktion zum multiplizieren zweier Zahlen 
"_Q16 _Q16mpy(_Q16 a, Q16 b);" nicht gelinkt werden kann.

Die Funktion ist im "16-Bit Language Tools Libraries Reference Manual" 
auf Seite 238 Dokumentiert.

Fehlermeldung:
build/default/production/measurement.o(.text+0x88): In function 
`.LSM16':
: undefined reference to `__Q16mpy'
make[2]: *** [dist/default/production/EFF.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

Hat jemand eine Ahnung woran es liegen könnte?
Die Bibliothek ist gelinkt und die h-Datei includiert und andere 
Funktionen aus dieser Bib funktionieren auch (z.B. _Q15add() oder 
_Q16div()).

von Carsten M. (ccp1con)


Lesenswert?

nur so ne Idee - versuch mal _IQ16mpy

von Mr.T (Gast)


Lesenswert?

ok danke das scheint zu funktionieren.
sowas hatte ich schonmal glaub im microchipforum gelesen.
wie kommt man auf sowas?
für die bib gibts doch auch kein source code oder?

wiso schreibt microchip die funktion in die doku aber nicht in die bib?!

wiso gibts die ganzen standart rechenoperationen nicht für die _Q15 
datentypen?

von benny (Gast)


Lesenswert?

Hab das gleiche Problem,

allerdings funktioniert bei mir der Trick mit _IQ16mpy nicht. Führt zur 
selben Fehlermeldung.

Ich habe
1
#include <libq.h>

eingebunden und die libq-elf.a zum Projekt hinzugefügt. Welche Lib muss 
denn dafür verwendet werden?

Der Fehler scheint ja schon eine ganze Weile zu existieren ... Lustig 
ist auch, dass die Website von microchip alle _Q-Funktionen für _Q15 und 
_Q16 anpreist.

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.