私は、タイムアウト値をいくつかのマイクロチップの2バイトレジスタに書き込む必要がある組み込みプロジェクトに取り組んでいます。
タイムアウトは次のように定義されます。
timeout = REG_a * (REG_b +1)
256 から 60000 までの範囲の整数を使用してこれらのレジスタをプログラムしたいと考えています。タイムアウト値を指定して、REG_a と REG_b を計算するアルゴリズムを探しています。
正確な解決策が不可能な場合は、次に考えられる大きなタイムアウト値を取得したいと考えています。
私はこれまでに何をしましたか:
私の現在のソリューションは次のように計算します:
temp = integer_square_root (timeout) +1;
REG_a = temp;
REG_b = temp-1;
これにより、実際にうまく機能する値が得られます。しかし、皆さんがより最適な解決策を思い付くことができるかどうかを確認したいと思います.
ああ、私はメモリに制約があるので、大きなテーブルは問題外です。また、実行時間も重要なので、単純に力ずくで解決することはできません。