Potrzebuję wykonać transformacje rotacyjne (i inne) we wbudowanej aplikacji, wymagające funkcji sin () cos () i tan (). Wiem, że możesz korzystać z tabel przeglądowych i to jedyne rozwiązanie, jakie mogłem znaleźć, prowadząc własne badania, ale czy jest tam dobra biblioteka ze stałymi punktami wyzwalania?
Zastanawiam się nad zastosowaniem kory M3 do aplikacji, więc chcę jak najdalej trzymać się punktu zmiennoprzecinkowego, aby aplikacje były niepoprawne.
Odpowiedzi:
Dobrym podejściem do wykonywania trygonometrii w aplikacjach osadzonych jest stosowanie aproksymacji wielomianowych do potrzebnych funkcji. Kod jest zwarty, dane składają się z kilku współczynników, a jedynymi wymaganymi operacjami są mnożenie i dodawanie / odejmowanie. Wiele systemów wbudowanych ma multiplikatory sprzętowe, co zapewnia dobrą wydajność.
źródło
_Fract
to bzdura IMHO; Nienawidzę faktu, że została ona „znormalizowana” przez komisję C. Zmusza cię do użycia Q15 lub Q31 do wszystkiego, co nie ma sensu w wielu sytuacjach i pozostawia cię bez pomocy w tych sytuacjach.Czy jesteś przeciwny używaniu do tego celu bibliotek Cortex ze stałym punktem?
od:
Używa tabeli odnośników z interpolacją kwadratową, ale jest dość szybka. Możesz dostosować go do interpolacji liniowej, aby uzyskać większą prędkość, ale więcej błędów.
Zauważ też, że nawet Cortex M4 niekoniecznie ma FPU. Widziałem je nazywane „M4F”, jeśli tak.
źródło