ディレイの作り方
たとえばAVRなら<util/delay.h>に用意されている関数で簡単にディレイを生成できる。命令の実行時間予測が容易なので、 クロック設定さえ教えれば必要な待ちループを作ってくれる。
一方、NiosIIでは実際の実行時間予測が難しい。たとえ単純な待ちループであっても、コード領域のリードに掛かる時間などのゆらぎ要素がある。 そのせいかループによるディレイ関数は用意されていないようだ。
NiosでOSを載せない(HALを使う)場合には、IntervalTimerでシステムチックを供給させ、アラームやalt_nticks()のポーリングでディレイを作る。
準備
QsysまたはSOPC BuilderでIntervalTimer(QsysならLibrary→Peripherals→Microcontroller peripheralsにある)を追加。
- 適当にperiodを設定
- PresetはSimple periodic interruptを選択