Ich muss Rotationstransformationen (und andere) in einer eingebetteten Anwendung durchführen, wobei die Funktionen sin () cos () und tan () erforderlich sind. Ich weiß, dass Sie Nachschlagetabellen verwenden können, und das ist die einzige Lösung, die ich für meine eigenen Recherchen finden könnte. Aber gibt es da draußen eine gute Triggerbibliothek für feste Punkte?
Ich denke darüber nach, einen Cortex M3 für die Anwendung zu verwenden, daher möchte ich mich so weit wie möglich vom Gleitkomma fernhalten, um die Anwendungen flink zu halten.
Antworten:
Ein guter Ansatz für die Trigonometrie in eingebetteten Anwendungen ist die Verwendung von Polynomnäherungen an die von Ihnen benötigten Funktionen. Der Code ist kompakt, die Daten bestehen aus wenigen Koeffizienten, und die einzigen erforderlichen Operationen sind Multiplizieren und Addieren / Subtrahieren. Viele eingebettete Systeme verfügen über Hardware-Multiplikatoren, die eine gute Leistung bieten.
quelle
_Fract
ist meiner Meinung nach ein Stück Mist; Ich hasse die Tatsache, dass es vom C-Komitee "standardisiert" wurde. Es zwingt Sie, Q15 oder Q31 für alles zu verwenden, was in vielen Situationen nicht sinnvoll ist, und lässt Sie in diesen Situationen ohne Hilfe festsitzen.Sind Sie dagegen, die Fixpunkt-Cortex-Bibliotheken dafür zu verwenden?
von:
Es verwendet eine Nachschlagetabelle mit quadratischer Interpolation, ist aber ziemlich schnell. Sie können es an die lineare Interpolation anpassen, um eine schnellere Geschwindigkeit, aber mehr Fehler zu erzielen.
Beachten Sie auch, dass selbst Cortex M4 nicht unbedingt über eine FPU verfügt. Ich habe gesehen, dass sie "M4F" heißen, wenn sie es tun.
quelle