チュートリアルを学ぶとき
両方のコード例に delay(1)
のコード行があり、コメントを明確に理解できません:
delay(1 ); //安定性のための読み取り間の遅延
何のための/の安定性?
チュートリアルを学ぶとき
両方のコード例に delay(1)
のコード行があり、コメントを明確に理解できません:
delay(1 ); //安定性のための読み取り間の遅延
何のための/の安定性?
これらの遅延は意味がありません。それらは何の安定性にも追加されません。あなたが言うことができる最もよいことは彼らがあなたのシリアルポートをスパムするのを止めるということです。 (ただし、1ミリ秒はそれほど長くはありません。)
根本的な原因を調べずに、「うまく機能しているように見える」ために遅延が発生することがあります。この場合、作成者はシリアルデータの受信を改善するために遅延を使用していた可能性があり、時折遅延が発生すると「安定性が向上する」という考えを頭に浮かびました。
アナログ安定性
ATMEGA328のデータシートから240ページ:
バンドギャップ基準電圧がADCへの入力として使用される場合、電圧が安定するまでに一定の時間がかかります。安定していない場合、最初の変換後に読み取られた最初の値が間違っている可能性があります。
したがって、複数の読み取りを行う場合は、数サイクル待つ必要があります。
自動トリガーを使用する場合、遅延は必要ありません。
自動トリガーを使用する場合、トリガーイベントが発生するとプリスケーラーがリセットされます。これにより、トリガーイベントから変換の開始までの固定遅延が保証されます。このモードでは、サンプルアンドホールドは、トリガーソース信号の立ち上がりエッジの2ADCクロックサイクル後に発生します。同期ロジックには、さらに3つのCPUクロックサイクルが使用されます。
また、同じADCモジュールの異なるチャネルを読み取る場合は、アナログMUXが配置されるように、読み取り間に遅延を設ける必要があります。 S&Hコンデンサは充電されています。
この情報はハードウェアの観点からのものであり、Arduinoの内部ADCルーチンがこれらの遅延を補償するかどうかはわかりません。
デジタル安定性
デジタル読み取りチュートリアルschmaticから:
回路図では、プッシュボタンは電気的に切断されていません-バウンス。状態の読み取りが遅れると、ソフトウェアで状態をデバウンスするのに役立ちます。
Nick Gammonが示唆したように、状態の連続フラッディングも改善されます。