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:さらなる調査で、除算はarduinoで機能しています。問題は、上記の誤った式と他の場所でのintオーバーフローの両方が原因でした。