4手法(ポーリング、1系統GPIO、2系統GPIO、PIO)によるパルス検出を検証した。まとめると以下のようになる。

・ポーリング
・1系統GPIO
・2系統GPIO
・PIO

240nsec以下検出不可
592nsec以下検出不可
16nsec検出(ただし、2つのGPIOが必要)
16nsec検出

次に、パルス発生から検出までの時間をオシロスコープで確認した。

オシロスコープ上段(黄色)が発生パルス、下段(紫)が検出ピンの信号。幅608nsecのパルスを発生させ、検出フラグ確認後に検出ピンをHIGHとし、休止関数 sleep_us(1) を呼び出してからLOWとしている(実際には2usec近く休止)。下記の括弧内の数値は、パルスHIGHエッジから検出HIGHエッジまでの時間である。

・左上 ― ポーリング(0.2usec)
・右上 ― 1系統GPIO(3.6usec)
・左下 ― 2系統GPIO(4.2usec)
・右下 ― PIO(0.4usec)

割込みを用いないポーリングが最も早い検出時間で、次がPIO割込みである。GPIO割込みは時間を要することが分かった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です