Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

組み込みシステムにおけるタイマー

組み込みシステムでは、timer はクロックサイクルをカウントする特別なハードウェア周辺機能です。これにより、時間を測定したり、遅延後に何かをトリガーしたりできます。CPU時間を浪費する単純なループとは異なり、タイマーはハードウェア上でカウントを続けるため、CPUはほかの処理を行ったり、スリープ状態に入ったりできます。

タイマーは次のような用途に使用できます。

  • LEDを一定間隔で点滅させる
  • 操作にどれくらい時間がかかるかを測定する
  • 周期的なタスクをトリガーする
  • 正確な遅延を生成する
  • モーターやLEDのPWM信号を制御する

タイマーは、どのマイクロコントローラーでも最も便利な周辺機能の1つです。ほとんどのマイクロコントローラーには、TIMER0、TIMER1 などの複数のハードウェアタイマーがあります。それぞれは独立して動作します。

nRF52833のタイマー

nRF52833マイクロコントローラーには、カウンターモードを備えた5つの32ビットタイマーが含まれています。現時点では、タイマーの内部動作についてこれ以上深くは扱いません。

LEDをオンにしてからオフにするまでの間に遅延を入れて、点滅効果を作るためにタイマーを使用します。

コードを変更する

それでは、タイマー周辺機能を初期化するために src/main.rs ファイルを更新しましょう。

まず、必要なimportを追加します。

#![allow(unused)]
fn main() {
use nrf52833_hal::timer::Timer;
}

次に、main関数の中に以下の行を追加します。

#![allow(unused)]
fn main() {
let mut timer0 = Timer::new(peripherals.TIMER0);
}

この行は、HALのTimer抽象化を使ってハードウェアタイマーTIMER0を初期化します。後で、このインスタンスを使ってLEDのオンとオフの間に遅延を作成します。