GR-ROSEのタイマリソース

GR-ROSEのArduinoライブラリで使用されるタイマリソースについてまとめる。Arduino環境でRXマイコンのタイマリソースを直接使用する場合、Arduinoライブラリとの競合に注意する。またGR-ROSEのArduinoライブラリはFreeRTOS上で動作していることにも要注意。

GR-SAKURA/GR-CITRUSについてはこちら ↓
GR-SAKURA/GR-CITRUSのタイマリソース - 滴了庵日録

(1) FreeRTOS

FreeRTOSのシステムタイマとして CMT0 が使用される。vTaskDelay関数やxTimerCreate関数などがこのシステムタイマに依存する。

(2) PWM出力

ServoクラスおよびanalogWrite関数で使用されるタイマリソースは以下の通り。詳細はisHardwarePWMPin関数, setPinModeHardwarePWM関数, setPinModeSoftwarePWM関数のソースを参照。

ピン番号 使用するタイマリソース 備考
3 TPU5
7 TPU0
9 MTU2
10 MTU1
13 MTU4
上記以外 TPU4 ソフトウェアPWM, 割り込み使用

また、tone関数はピン番号にかかわらずソフトウェアPWMであり、TPU4を使用する。

(3) PPG(プログラマブルパルス生成)

GR-ROSEのライブラリでは従来からあるPWM系のライブラリに加えて、PPGライブラリがある。PPGライブラリで使用されるタイマリソースは以下の通り。

ピン番号 使用するタイマリソース
1 MTU0
3 MTU1
5 MTU2
7 MTU3

(4) その他

ライブラリ 使用するタイマリソース 備考
delay関数 CMT0 ※1
millis関数
micros関数
delayMicroseconds関数
CMT1 ※2
SoftwareSerialクラス 未対応
MsTimer2クラス CMT0 ※3
WavMp3pクラス 未対応
attachIntervalTimerHandler関数 CMT0 ※3
attachCyclicHandler関数 未対応

※1: FreeRTOSのvTaskDelay関数を使っている。
※2: これらはFreeRTOSとは別個のタイマを使用している。
※3: FreeRTOSのxTimerCreate関数を使っている。

タイマリソース別まとめ

MTU0 PPG
MTU1 ハードウェアPWM, PPG
MTU2 ハードウェアPWM, PPG
MTU3 PPG
MTU4 ハードウェアPWM
MTU5~8 未使用
TPU0 ハードウェアPWM
TPU1 未使用
TPU2 未使用
TPU3 未使用
TPU4 ソフトウェアPWM
TPU5 ハードウェアPWM
CMT0 システムタイマ(FreeRTOS)
CMT1 millis関数, micros関数, delayMicroseconds関数
CMT2〜3 未使用
TMR0〜1 未使用

ハードウェアPWM: ServoクラスおよびanalogWrite関数
ソフトウェアPWM: ServoクラスおよびanalogWrite関数, tone関数