Renesas RX631 PWM
モーター制御等さまざまな分野で必要不可欠なPWMを出力していきます。
PE2をMTIOC4Aに設定し、1kHzのPWMを出力していきます。
以下の手順で設定していきます。
1.消費電力低減機能の解除
2.ピンの設定
3.MTU2の設定
4.ユーザ関数の定義(今回、関数は定義しないので省略)
はじめに
1.消費電力低減機能の解除
2.ピンの設定
を一度にみていきましょう。
hardware_setup.cにて以下のMTU2_initialize関数を作成し、HardwareSetup関数で呼びましょう。
MTU2_initialize関数
void MTU2_initialize(void){ // MTU4 SYSTEM.PRCR.WORD = 0xA502; // Release Protect MSTP(MTU4) = 0; // Wake up MTU4 SYSTEM.PRCR.WORD = 0xA500; // Protect // Set MPC PORTE.PMR.BIT.B2 = 1; // Set PE2: Peripheral MPC.PWPR.BIT.B0WI = 0; // Release protect MPC.PWPR.BIT.PFSWE = 1; MPC.PE2PFS.BIT.PSEL = 1; // Set PE2: MTIOC4A MPC.PWPR.BIT.PFSWE = 0; // Protect MPC.PWPR.BIT.B0WI = 1; // PWM Settings MTU.TOER.BIT.OE4A = 1; // Enable MTIOC4A Output MTU4.TCR.BIT.TPSC = 4; // PCLK/256 MTU4.TCR.BIT.CKEG = 0; // Count rising edge MTU4.TCR.BIT.CCLR = 1; // Clear TCNT count when compare match TGRA MTU4.TMDR.BIT.MD = 2; // MTU4 PWMモード1 MTU4.TMDR.BIT.BFA = 0; // TGRA, TGRC normal mode MTU4.TMDR.BIT.BFB = 0; // TGRB, TGRD normal mode MTU4.TIORH.BIT.IOA = 6; // Compare Output High MTU4.TIORH.BIT.IOB = 7; // Compare Output Low MTU4.TGRA = 29999; // 1kHz MTU4.TGRB = 14999; // Duty 50% MTU4.TCNT = 0; // Clear MTU4 count MTU.TSTR.BIT.CST4 = 1; // Start MTU4 count }
まず、SCI、Timer割り込み同様に、消費電力低減機能のアクセスロックを解除し、消費電力低減機能を解除し、再度ロックします。
つぎに、SCI同様にMPCのアクセスロックを解除し、ピンに周辺機能を割り当て、再度ロックし、下準備を完了します。
3.MTU2の設定
データシートp.834の図23.25と図23.26を参考に設定します。
ここで、MTU2の中にはMTU0~6のユニットがあり、今回はMTU4をPWMモード1で使用します。
まず、PWMモードの設定手順例を参考に設定していきます。
・カウンタクロックの設定
→使用するクロックの分周比を設定します。
・カウンタクリアの要因の選択
→カウンタクロックがクリアされるソースを選択します。TGRAまたはTGRB。
・PWMモードの設定
→PWMモード1に設定します。
・波形出力レベルの選択
→どのように波形を出すか設定します。今回は初期HIGHに設定し、TGRBのコンペアマッチでLOW出力に、TGRAのコンペアマッチでHIGH出力。
・TGRの設定
→実際に値を設定し、PWM周波数とDuty比を設定します。今回はTGRB操作することでDuty比、TGRAを操作することでPWM周波数を設定します。ただし常にTGRA>TGRBを満たす。
・カウント動作開始
→実際にカウントスタートさせ動作を開始します。
(ただし、今回MTIOC4Aは初期状態では出力が禁止されているため、TOERレジスタのOE4Aビットを1にし、出力を許可しておきます。)
4.ユーザ関数の定義
今回は用意しないため省略します。
これでPWMの設定は完了しました。実際に書き込みオシロスコープ等でPE2の波形を観測し、PWMが出ていれば成功です!
PWM波形の一例を載せておきます。
20160818の記事