ダミー・ループの代わりにタイマー割り込みを使用して、アーキテクチャ、プログラミングの問題、およびオペレーティング・システムを区別するという時間遅延を実装する利点は何ですか?どんな助けもありがとう。前もって感謝します。タイマー割り込みとダミー・ループ
答えて
ダミーループでは、CPUが絶えず動作する必要があります(カウンタを増やすか、システムタイマーのしきい値を比較する)。
このCPU時間は何もしないので、Dummy Loopという名前が使われます。
マルチタスクOSでは、何か他のことをするのに費やされていた可能性があるので、悪いです。
あなたが1つのタスクをしている場合、/他に何もする必要はありません。低エネルギーモードに費やされたのは時間です(電力に優しいだけでなく、バッテリ駆動のデバイスでは非常に重要です)。
ダミーループはプロセッサの速度に依存します。タイマー割り込みを使用すると、イベントへの応答が速くなり、消費電力が節約されます。
ハードウェアタイマーが設定されると、CPUが実行しているコードとは無関係にカウントされます。 CPUは、タイマーの実行中に別のタスクを実行したり、割り込みをサービスしたり、スリープ状態に移行して電力を節約することさえできます。その後、タイマ割込みが発生すると、CPUはウェイクアップし、および/またはタイマの満了に対応するために待機タスクに戻る。タイマの持続時間は、タイマがカウントしている間にCPUが何をしても影響を受けません。
ダミーループでは、CPUがカウント中であるため、別のタスクに切り替えることも、スリープすることもできません。また、ダミー・ループが中断された場合、その期間は割り込みを処理するのに要する時間だけ増加します。つまり、割り込み処理中にダミーループが一時停止します。
ダミーループの継続時間は、コンパイラーやリンカーのオプションの影響を受ける可能性があります。たとえば、コンパイラの最適化のレベルを変更すると、ダミーループの速度が変わる可能性があります。あるいは、ダミー・ループ関数が異なる数の待ち状態を有する異なるメモリに配置された場合、ダミー・ループの速度は変化する可能性がある。ハードウェアタイマーはこれらの変更に対して影響を受けません。
- 1. Arduinoタイマー割り込みサンプリング
- 2. ピンコントロールのないArduinoタイマー割り込み
- 3. CCSでのポート割り込みとタイマーの使用
- 4. Winformsタイマーのダミー
- 5. タイマー割り込みを待機プロセスにする方法は?
- 6. TRAP、ソフトウェア割り込みとハードウェア割り込みの違いは?
- 7. 割り込みフラグと割り込み保留中のビットstm32
- 8. 割り込みとディスパッチャ
- 9. ハード割り込みとsoftirq
- 10. VB.NET - フォームのループと終了フォームの割り込み
- 11. ATtiny85:ピンとタイマーの割り込みに同時に対応する方法
- 12. 割り込みsuper.onCreate()
- 13. ipythonノートブックでのwhileループの優雅な割り込み
- 14. ユーザ入力で「ループ割り込み」が可能ですか?
- 15. プログラムの実行と割り込み
- 16. RTCと周期的な割り込み
- 17. 割り込みとイベントの違い
- 18. 割り込みと非同期
- 19. VBA:デザインモードのトリガーと割り込みプログラム
- 20. Qt 500msごとの割り込みプログラム
- 21. ESP8266外部割り込み
- 22. Ardino USART1割り込み
- 23. カーネルモジュールプログラミング(割り込みハンドラ)
- 24. アセンブラ16ビット割り込み
- 25. dsPIC33外部割り込み
- 26. イメージアップロード - ローカルホスト割り込み
- 27. Arduinoでの割り込み
- 28. 割り込みノコギリSAXパーサ?
- 29. キーボード割り込み、ソケット、スレッド
- 30. PIC32MZ UART RX割り込み
タイマーは割り込みを必要としません。nに数えるループは、コンパイラとプロセッサに依存します。正確なポーリングされたタイミングがあり、正確な割り込みが発生します。実装と保守を中断するのが難しくなりますが、他のことをすることができます。 –
私はこれまで何度もこの質問をしてきたと確信しています。それを検索するのに気にすることはできません。要約:タイミングの問題があれば、ハードウェアタイマーはプロのソリューションで、ダミーループはガレージハック、アマチュアソリューションです。コード内の複数の場所から再利用できる汎用タイマーHALを実装するのはかなり簡単です。 – Lundin