Я намагаюся знайти ефективний спосіб обчислення оберненого на AVR (або наближення до нього).
Я намагаюся обчислити період імпульсу для крокового двигуна, щоб я міг змінювати швидкість лінійно. Період пропорційний оберненій швидкості ( p = K/v
), але я не можу придумати хороший спосіб обчислення цього на ходу.
Моя формула така
p = 202/v + 298; // p in us; v varies from 1->100
Випробовуючи Arduino, дивіться, що дивізіон повністю ігнорується, залишаючи p
фіксованим 298
(хоча, можливо, це було б інакше в avr-gcc). Я також спробував підбивати підсумки v
в циклі, поки він не перевищить 202
, і порахувати петлі, але це досить повільно.
Я міг генерувати таблицю пошуку і зберігати її у спалах, але мені було цікаво, чи є інший спосіб.
Редагувати : Можливо, заголовок повинен бути "ефективним поділом" ...
Оновлення : Як вказує pingswept, моя формула для відображення періоду до швидкості є неправильною. Але головна проблема - це операція розділення.
Редагувати 2 : При подальшому дослідженні розбіг працює над ардуїно, проблема була пов'язана як з неправильною формулою вище, так і з переливом int в іншому місці.