Ускоряем вычисления с использованием дробной константы
Небольшая таблица в Exel для быстрого расчета коэффициентов.

Я думаю часто приходилось использовать коэффициенты вроде 0.78
, 0.23
, 0.87
для корректировки измереных значений АЦП, для последующей обработки, или может где-то ещё, где это значение является константой.
Но что делать если у нас есть требования ко времени выполнения и использовать float
кажется слишком дорого?
Правильно использовать обходные пути - например умножение и деление на целочисленные значения. Правда и тут есть свои "но..." в ядре Cortex-M3
деление тоже немного затратная операция и занимает коколо 7 тактов (могу ошибаться). Значит будем использовать умножение и сдвиг.
Да, мы конечно потеряем немного в точности вычислений, но что делать, всегда чем-то приходится жертвовать.
Для ускорения и небольшой автоматизации подобных вычислений я набросал небольшую табличку в Excel
. Принцип использования прост - вводим текущее значение IN
и необходимое значение OUT
, а так же по желанию увеличиваем и уменьшаем дельту DELTA
(в вычислениях она не участвует, но поможет быстренько сориентироваться).
В итоге имеем следующую формулу:
OUT = IN * MUL >> RSHIFT;
Самы таблицу можно скачать здесь.
Как всегда приятного и удачного кодинга.