Правда ли, что у ATtiny AVR нет аппаратной поддержки для умножения? Кажется, это работает нормально, так как я делаю умножение в моем коде. Я также включил math.h и несколько вычислений sin () и cos (). Я сталкиваюсь с каким-то огромным штрафом в 800 циклов за эти вычисления, кто-нибудь знает?
10
Ответы:
ATtiny не имеет аппаратного множителя, но программное умножение не так дорого, как вы предполагаете. См. Примечание к приложению AVR200 и соответствующий код для некоторых оптимизированных процедур умножения и деления.
Вычисления синуса и косинуса могут быть ускорены с помощью справочных таблиц, эффективно торгующих в памяти для циклов процессора. Однако, как правильно заметил @DaveTweed, алгоритмическое приближение синуса и косинуса в программном обеспечении увеличит счетчик циклов ближе к диапазону, которого вы боитесь.
источник
sin()
и,cos()
как правило, включает в себя несколько (3-5) умножений, плюс сложение / вычитание мультиточности, свертывание диапазона и т. Д., Поэтому 800 тактов на вызов функции не являются нереальными.