Операция выполнена!
Закрыть
Хабы: Программирование микроконтроллеров

Вероятно, в сети, можно найти множество статей, касательно вычислениям с фиксированной точкой. По роду своей деятельности, я разработчик электроники и программист микроконтроллеров. Математика, с фиксированной точкой в моих задачах практически не встерчалась.

Имеется фрезерный станок ЧПУ. Было принято решение, переделать его систему управления, используя ядро Cortex M3. Вобщем и целом, существуют программные пакеты, позволяющие сделать это. Например GRBL. Однако, у меня своя специфика. Для реализации ПО, потребовались математичесике операции sin(x), cos(x), sqrt(x). И я задумался над их реализацией в формате фиксированной точки.

Для начала приступил к реализации функций sin(x), cos(x). Да, конечно, можно использовать табличные методы, но я пошел другим путем и решил реализовать апроксимацию, используя ряд Тейлора. Оценил участок, на котором буду раскладывать в ряд и приступил к реализации. Для разложения в ряд был выбран отрезок [0..PI/4], так как на этом отрезке, значение аргумента функции укладывается в промежуток [0..1], так и результат функции укладывается в отрезок от 0 до 1, таким образом со всеми числами можно работать как с 32-битными положительными дробными числами на интервале [0..0.9999(9)]. Единственное, значение cos(0), принимает значение 1.0., но я ограничился значением 0.9999(9). Таким образом удалось расширить диапазон значений на два бита. Бит знака и бит единичного разряда.Т.е. при вычислениий sin(x), cos(x), на этом отрезке, эффективно используются все 32-бита.

Читать далее
Читайте также
СТАТЬ АВТОРОМ
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro