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