Доброго времени суток тебе All!
Требуется вычислять на ОМК (AVR - структуры) следующее выражение
Y=А*Log(В*X)
Где А,В - константы
Х - меняется в диапазоне 1-65534 (реально точек меньше, потому как Х=Х1+Х2, где Х2 некая фиксированная константа).
Положение запятой фиксировано.
Y - целое число в диапазоне 1-4094, А - масштабный коэффициент.
Скорость вычисления не менее 4 вычислений в секунду.
Это вообще реально, на процессоре рангом пониже iP ?
Вариант с таблицей я уже рассмотрел и он мне не понравился - потому как в программе и так таблица для более сложного преобразования в 65536 значений по 2 байта каждое (128 к)
Или можно как-то сократить эти таблицы.
Функция в таблице нелинейная, безразрывная, в виде суммы логарифмов (предположительно) снята запоминающим осциллографом с реального узла. Аргумент
16 бит, функция 12 бит.Таймеры использовать нельзя. Прерывания заняты и следуют с частотой до 20000 в секунду. Аппаратный умножитель использовать нельзя.
Так-же нужно реализовать программно ФHЧ (интегратор с симматором на входе), на вход которого приходят прямоугольные импульсы постоянной амплитуды и длительности, но переменного периода следования от 0,1 сек, до 50 мкСек.
Результат с выхода этого ФHЧ и есть Х1. Опрос сотояния фильтра 4 раза в секунду.
Это я предпологаю собрать на реверсивном счетчике. Во время действия импульсов он инкрементируется, в паузах дикрементируется. Каждые 0,25 секунды его значение делиться на 5000 (типа интеграл взяли) и полученное чило идет далее.
P.S. Hе добыв ADuC решил все узлы впихнуть в один или несколько микроконтроллеров связанных цифровыми линиями связи.
Будь счастлив(а) All... С уважением Wladimir.