Renesas RX621 PWM
PB0をMTIOC9Aに設定し、PWMモード1を用いてPWMを出力していきます。
hardware_setup.cにて以下のMTU2_initialize関数を作成し、HardwareSetup関数で呼びましょう。
MTU2_initialize
void MTU2_initialize(void) { // MTU9 = PWM Mode 1 MSTP(MTU9) = 0; // Wake up MTU9 MTU9.TCR.BIT.TPSC = 4; // PCLK/256 MTU9.TCR.BIT.CKEG = 1; // Count rising edge MTU9.TCR.BIT.CCLR = 1; // Compare Match TGRA MTU9.TMDR.BIT.MD = 2; // PWM mode 1 MTU9.TMDR.BIT.BFA = 0; // TGRA, TGRC normal mode MTU9.TMDR.BIT.BFB = 0; // TGRB, TGRD normal mode MTU9.TIORH.BIT.IOA = 6; // Initial High compare match High MTU9.TIORH.BIT.IOB = 5; // Initial High compare match Low MTU9.TGRA = 29999; // 1KHz MTU9.TGRB = 14999; // Duty 50% MTU9.TCNT = 0; // Clear Count MTUB.TSTR.BIT.CST3 = 1; // Count Start }
これでビルドをし、PB0から1kHz50%のPWMが出ていれば成功です。
それでは、MTU9(PWM)の設定手順を見ていきます。
- モジュールスタート(消費電力低減機能の解除)
- ピンの設定
- MTU9の設定
- ユーザ関数の定義
1.モジュールスタート
MSTP(MTU9) = 0; // Wake up MTU9
消費電力低減機能を解除します。RX631のようにアクセスロックはないので、そのまま解除します。
MSTPCTRレジスタがiodefine.hでMSTP(****)というようにデファインされているのでこれを使用します。
2.ピンの設定
MTU9のMTIOC9Aを設定すると自動的に出力されます。
3.MTU9の設定
データシートp.940の図18.26を参考に設定していきます。
また、動作はデータシートの図18.27を参考にします。今回の設定ではTGRBの値をそのままDuty比に変換したいため、MTIOC9AのHighとLowが入れ替わっています。
MTU9.TCR.BIT.TPSC = 4; // PCLK/256 MTU9.TCR.BIT.CKEG = 1; // Count rising edge MTU9.TCR.BIT.CCLR = 1; // Compare Match TGRA MTU9.TMDR.BIT.MD = 2; // PWM mode 1 MTU9.TMDR.BIT.BFA = 0; // TGRA, TGRC normal mode MTU9.TMDR.BIT.BFB = 0; // TGRB, TGRD normal mode MTU9.TIORH.BIT.IOA = 6; // Initial High compare match High MTU9.TIORH.BIT.IOB = 5; // Initial High compare match Low MTU9.TGRA = 29999; // 1KHz MTU9.TGRB = 14999; // Duty 50% MTU9.TCNT = 0; // Clear Count MTUB.TSTR.BIT.CST3 = 1; // Count Start
まずMTU2にはMTU0~11までのユニットがあります。今回はPWMモード1を使用できるMTU9を用いて、MTIOC9AからPWMを出力します。
また、各ユニットは持っている機能と出力できるピンが指定されているので、設定するときは注意しましょう。
(MTU2という周辺機能にMTU0~11があるのですが、思いっきりMTU2が被っててわかりにくいですよね(´・_・`))
レジスタの設定を見ていきましょう。MTU9ユニット内のレジスタを設定していきます。
TCRレジスタの
TPSC: 4→カウント周期をPCLK/256に
CLEG: 1→立ち上がりエッジでカウント
CCLR: 1→TGRAとTCNTがコンペアマッチしたときにTCNTをクリア
TMDRレジスタの
MD: 2→PWMモード1に
BFA,BFB: 0→TGRA~Dはノーマルモード
TIORHレジスタの
IOA: 6→初期値HighコンペアマッチでHighに
IOB: 5→初期値HighコンペアマッチでLowに
MTU9.TGRAレジスタを1kHzとなるように設定
MTU9.TGRBレジスタをDuty比50%になるように設定
TSTRレジスタの
CST3: 1→MTU9のカウントスタート
となっています。
4.ユーザ関数の定義
今回はユーザ関数は作成しないので省略。
これでMTU9にてPWMの設定が完了しました。
20160822の記事