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関数