関数 void "SDK_DelayAtLeastUs(uint32_t delayTime_us, uint32_t coreClock_Hz)" の注記には、「正確な遅延が必要な場合は、DWT 遅延を有効にしてください」と記載されています。これは、SDK_DELAY_USE_DWT と DWT を定義することによって実行されるようです。これらの定義はどこにも文書化されていません。DWT がデフォルトで有効になっていないのはなぜですか?DWT を有効にすると何か副作用はありますか? ありがとうございます。
正確な遅延のために DWT オプションを有効にするにはどうすればよいでしょうか?
私は超音波センサを i.mx93 (mcimx9352-evk) とインターフェイスさせる作業を行っていますが、正確に 10 マイクロ秒でピンをトリガーする必要がありますか?
そのため、私はこのような関数を使用しました
void SendTrigPulse(void)
{
RGPIO_PinWrite(BOARD_RGPIO、TRIG_PIN、1);
SDK_DelayAtLeastUs(10, SystemCoreClock);
RGPIO_PinWrite(BOARD_RGPIO、TRIG_PIN、0);
}
この遅延によりマイクロ秒値が不正確になりますか?
前もって感謝します!
こんにちは@michaeldkfowler 、
DWT は ARM デバッグ アーキテクチャの一部です。ARM ® v7-Mアーキテクチャを参照できます
詳細についてはリファレンスマニュアルを参照してください。
DWT を使用してカウントする場合、コードは CPU クロックごとに増加する DWT->CYCNT レジスタを読み取ります。DWT を使用して時間をカウントCAN。しかし、ここではデフォルトの方法で十分だと思います。
よろしくお願いいたします。
ジン