mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik H8/300H mit IAR int Multiplikation


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich versuche gerade die folgende Gleichung auf einem H8/300H Controller
von Renesas zu implementieren:

x = 1/sqrt(3) * (y + 2*z)

Als Compiler verwende ich den von IAR.

Soweit ist auch alles klar wie ich das ganze Umsetzen muss und es
funktioniert auch schon. Nur macht der Compiler nicht so ganz das was
ich will, d.h. ich habe folgendes probiert um mit 1/sqrt(3) zu
multiplizieren:

#define PWM_SQRT3_INV_Q15    18919  //!< 1/sqrt(3) in q15 format  =>
1/sqrt(3)*2^15

lTemp_     = (long)iTemp_ * SQRT3_INV_Q15; //   * 1 / sqrt(3)
lTemp_   <<= 1;                   // format to q12 in high word
x = (int)(lTemp_ >> 16); // store high word to x


Der Compiler erzeugt nun im Listing einen Unterfunktionsaufruf um die
beiden 16Bit Integer im long-Format zu multiplizieren. Er könnte jedoch
auch einfach den mul-Befehl verwenden und temporär in einem
32Bit-Register arbeiten. Da ich Zeit sparen möchte würde ich dem
Compiler also gerne den Funktionsaufruf verbieten.
Ich habe das ganze auch mal auf einem Renesas-Compiler getestet und da
wird alles so genacht wie ich es erwartet hätte.

Hat vielleicht einer einen Tip wie ich den COmpiler überreden kann dass
zu tun was ich möchte? Ich habe schon mit den verschiedensten Castings
rumprobiert, allerdings ohne Erfolg :-(

Viele kB Grüße,

Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.