10
AVRの効率的な逆(1 / x)
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オーバーフローの両方が原因でした。