2016-04-24 60 views
-2

ダミー・ループの代わりにタイマー割り込みを使用して、アーキテクチャ、プログラミングの問題、およびオペレーティング・システムを区別するという時間遅延を実装する利点は何ですか?どんな助けもありがとう。前もって感謝します。タイマー割り込みとダミー・ループ

+0

タイマーは割り込みを必要としません。nに数えるループは、コンパイラとプロセッサに依存します。正確なポーリングされたタイミングがあり、正確な割り込みが発生します。実装と保守を中断するのが難しくなりますが、他のことをすることができます。 –

+0

私はこれまで何度もこの質問をしてきたと確信しています。それを検索するのに気にすることはできません。要約:タイミングの問題があれば、ハードウェアタイマーはプロのソリューションで、ダミーループはガレージハック、アマチュアソリューションです。コード内の複数の場所から再利用できる汎用タイマーHALを実装するのはかなり簡単です。 – Lundin

答えて

1

ダミーループでは、CPUが絶えず動作する必要があります(カウンタを増やすか、システムタイマーのしきい値を比較する)。

このCPU時間は何もしないので、Dummy Loopという名前が使われます。

マルチタスクOSでは、何か他のことをするのに費やされていた可能性があるので、悪いです。

あなたが1つのタスクをしている場合、/他に何もする必要はありません。低エネルギーモードに費やされたのは時間です(電力に優しいだけでなく、バ​​ッテリ駆動のデバイスでは非常に重要です)。

0

ダミーループはプロセッサの速度に依存します。タイマー割り込みを使用すると、イベントへの応答が速くなり、消費電力が節約されます。

2

ハードウェアタイマーが設定されると、CPUが実行しているコードとは無関係にカウントされます。 CPUは、タイマーの実行中に別のタスクを実行したり、割り込みをサービスしたり、スリープ状態に移行して電力を節約することさえできます。その後、タイマ割込みが発生すると、CPUはウェイクアップし、および/またはタイマの満了に対応するために待機タスクに戻る。タイマの持続時間は、タイマがカウントしている間にCPUが何をしても影響を受けません。

ダミーループでは、CPUがカウント中であるため、別のタスクに切り替えることも、スリープすることもできません。また、ダミー・ループが中断された場合、その期間は割り込みを処理するのに要する時間だけ増加します。つまり、割り込み処理中にダミーループが一時停止します。

ダミーループの継続時間は、コンパイラーやリンカーのオプションの影響を受ける可能性があります。たとえば、コンパイラの最適化のレベルを変更すると、ダミーループの速度が変わる可能性があります。あるいは、ダミー・ループ関数が異なる数の待ち状態を有する異なるメモリに配置された場合、ダミー・ループの速度は変化する可能性がある。ハードウェアタイマーはこれらの変更に対して影響を受けません。

関連する問題