ATtiny: нет поддержки умножения?


10

Правда ли, что у ATtiny AVR нет аппаратной поддержки для умножения? Кажется, это работает нормально, так как я делаю умножение в моем коде. Я также включил math.h и несколько вычислений sin () и cos (). Я сталкиваюсь с каким-то огромным штрафом в 800 циклов за эти вычисления, кто-нибудь знает?


используйте таблицы поиска для триггера и линейной интерполяции, если вам нужно лучшее разрешение (с допустимой ошибкой)
vicatcu

Ответы:


14

ATtiny не имеет аппаратного множителя, но программное умножение не так дорого, как вы предполагаете. См. Примечание к приложению AVR200 и соответствующий код для некоторых оптимизированных процедур умножения и деления.

Вычисления синуса и косинуса могут быть ускорены с помощью справочных таблиц, эффективно торгующих в памяти для циклов процессора. Однако, как правильно заметил @DaveTweed, алгоритмическое приближение синуса и косинуса в программном обеспечении увеличит счетчик циклов ближе к диапазону, которого вы боитесь.


6
Полиномиальная аппроксимация для sin()и, cos()как правило, включает в себя несколько (3-5) умножений, плюс сложение / вычитание мультиточности, свертывание диапазона и т. Д., Поэтому 800 тактов на вызов функции не являются нереальными.
Дэйв Твид

@DaveTweed: Спасибо, хорошая мысль. Отредактировано для уточнения.
Скотт Уиндер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.