🍓
Raspberry Pi Pico: タイマーを利用する
はじめに
本記事では、Raspberry Pi Pico のハードウェアタイマーをベアメタルのソフトウェア(PICO SDKを利用しない)で利用する方法についてまとめています。
タイマーブロックの仕様
データシートを見ると、RP2040にはペリフェラルに64ビットのカウントアップタイマーが搭載されています。
クロック系統
clk_ref
がタイマーブロックに供給されている様子でウォッチドックタイマーと同じクロックであることが分かります。1サイクルは1マイクロ秒になっているようです。
カウンタ仕様
64ビットのカウンタが存在し、clk_ref
クロックで+1カウントアップ(インクリメント)されます。このカウンタは初期値0で、32ビット単位でTIMEHR
(上位32ビット)とTIMELR
(下位32ビット)のレジスタからリード可能です。一方、カウンタ値を書き換えたい場合は、TIMEHW
(上位32ビット)とTIMELW
(下位32ビット)のレジスタを利用する様子です。
アラーム仕様
上記の64ビットカウンタに対して、下位32ビットの値が指定された値になったときに割り込みを発生させるアラーム機能を4チャンネル分設定可能 (ALARM0
- ALARM3
) です。
メモリアドレス
ベースアドレス
レジスタマップ
割り込み系統
最終的に NVIC (Nested Vectored Interrupt Controller) の IRQ0
- IRQ3
に接続されています。
Discussion