ディレイの作り方

たとえばAVRなら<util/delay.h>に用意されている関数で簡単にディレイを生成できる。命令の実行時間予測が容易なので、 クロック設定さえ教えれば必要な待ちループを作ってくれる。

一方、NiosIIでは実際の実行時間予測が難しい。たとえ単純な待ちループであっても、コード領域のリードに掛かる時間などのゆらぎ要素がある。 そのせいかループによるディレイ関数は用意されていないようだ。

NiosでOSを載せない(HALを使う)場合には、IntervalTimerでシステムチックを供給させ、アラームやalt_nticks()のポーリングでディレイを作る。

準備

QsysまたはSOPC BuilderでIntervalTimer(QsysならLibrary→Peripherals→Microcontroller peripheralsにある)を追加。