0

プロジェクトに 2 つのマイクロコントローラーを使用しています。両方のマイクロコントローラーの内部タイマーを使用して、コードの実行時間を測定したいと考えています。ただし、1 つのマイクロコントローラーのタイマーは 32 ビット値までカウントし、2 番目のマイクロコントローラーのタイマーは 16 ビット値までカウントしてから再起動します。コードの実行時間が 16 ビット値を超えることはわかっています。この問題の解決策を教えてください。(GPIO ピンをオンまたはオフにしても、有用な結果は得られません)

4

1 に答える 1

0

実行時間が数日または数時間未満であると仮定すると、いずれかのタイプのタイマーを使用して実行時間を測定できるはずです。本当の問題は、ニーズに合わせてタイマーを構成する方法です。タイマーをどのように構成するかによって、測定の精度または粒度、および測定可能な最大間隔が制御されます。

したがって、一般的なアプローチは次のようになります。

  1. 必要な精度を特定し、測定する最長間隔を推定します
  2. 精度を考慮して、精度要件を満たすタイマ クロック プリスケーラまたは分周器を決定します。たとえば、クロック速度が 50 MHz で、マイクロ秒の精度が必要な場合は、(プリスケーラ) / (クロック速度) ~ 1 マイクロ秒のプリスケーラを選択します。これにはスプレッドシートが役立ちます。この場合、分周器の値を 64 にすると、タイマーのインクリメントごとに約 1.28 マイクロ秒になります。
  3. タイマー レジスタが十分に大きいかどうかを判断します。16 ビット タイマーの場合、(1.28 マイクロ秒) * (2^16 - 1) = 0.084 秒、つまり約 10 分の 1 秒を測定できます。測定にこれより長い時間がかかる場合は、精度要件を再考する必要があります。

ここまでで、制限事項を念頭に置いて、タイマーを構成するための主要なパラメーターを特定したはずです。使用する予定のマイクロコントローラーや測定しようとしているものなど、より具体的に回答を更新すると、より具体的になる可能性があります。

于 2016-09-27T20:07:39.113 に答える