私の知る限り、「時間関数」は通常、プラットフォームに依存します。私は Raspberry-Pi を使用しているため、私の OS は Raspbian または Debian (Linux) です。
最初に、プログラムの実行を可能な限り正確に数十ナノ秒の精度レベルまで遅らせることが重要である理由を説明する必要があります。ADC (アナログ - デジタル コンバーター) に接続しています。命令がデバイスに送信された後、ADC が論理信号を HIGH または LOW に送信する時間を持つことが重要です。
例えば:
1 つのデータ ラインが「変換要求」ピンを制御します。変換要求を開始するには、このピンを 20 ns 間論理 Low にする必要があります。
別の例は、「読み取り要求」ピンです。出力バスでデータを有効にするには、このデータ ラインを 10 ns 間論理 Low にする必要があります。
現在、次のような構造のプログラムがあります: (wireingPi ライブラリを使用)。
return_type functionName()
{
digitalWrite(CONVERT_RQ, LOW);
delayMicroseconds(1); // Part of the wiringPi.h library
digitalWrite(CONVERT_RQ, HIGH);
}
delayMicroseconds(1);
ADC が論理ロー パルスを見逃す可能性があるため、呼び出しを削除するのは安全ではないと思います。(からdigitalWrite
。) ピンは約 200 kHz でハイとローを切り替えることができると思いますが、それについてはわかりません。編集:つまり、MHz
1 マイクロ秒の遅延は明らかにかなり無駄です。理想的には、その時間の 1% を待ちたいと思います。
私が知る限り、delayMicroseconds() 関数は実際にプログラムを中断し、OS は待機中に別のタスクの実行に切り替えます。これも理想的ではありません。2 マイクロ秒、おそらくそれ以上待つことになるかもしれません。もちろん、別のプロセスに切り替えることは、1 マイクロ秒未満では意味がありません。その時間ではたいしたことはできません。
これがどのように行われるかについて誰にもアイデアがありますか? ありがとう