RX210のタイマユニットMTU0,MTU1,MTU2を組み合わせて同期したPWMを7つ出力するプログラムです。使用するポートはP15,P32,P33,PE4,PB5,P26,P27です。
リストは設定部部のみです。
- void initMTUsyncPWM(void)
- {
- SYSTEM.PRCR.WORD = 0x0A502;
- MSTP(MTU0) = 0; //MTU0 モジュールスタンバイ解除
- MSTP(MTU1) = 0; //MTU1 モジュールスタンバイ解除
- MSTP(MTU2) = 0; //MTU2 モジュールスタンバイ解除
- SYSTEM.PRCR.WORD = 0x0A500;
- /* MTUタイマの設定 */
- MTU.TSTR.BIT.CST0 = 0x00; //MTUカウント停止
- MTU.TSTR.BIT.CST1 = 0x00; //MTUカウント停止
- MTU.TSTR.BIT.CST2 = 0x00; //MTUカウント停止
- /* 同期動作の設定 */
- MTU.TSYR.BIT.SYNC0 = 0x01; //MTU0同期動作
- MTU.TSYR.BIT.SYNC1 = 0x01; //MTU1同期動作
- MTU.TSYR.BIT.SYNC1 = 0x01; //MTU2同期動作
- /* カウント設定 */
- MTU0.TCR.BIT.TPSC = 0x01; // CLK PCLK/4 でカウント
- MTU1.TCR.BIT.TPSC = 0x01; // CLK PCLK/4 でカウント
- MTU2.TCR.BIT.TPSC = 0x01; // CLK PCLK/4 でカウント
- /* カウンタのクリア要因設定 */
- MTU0.TMDR.BIT.MD = 0x03; //タイマーPWMモード2
- MTU1.TMDR.BIT.MD = 0x03; //タイマーPWMモード2
- MTU2.TMDR.BIT.MD = 0x03; //タイマーPWMモード2
- MTU0.TCR.BIT.CCLR = 0x01; //TCNT0はTGRAのコンペアマッチでクリア
- MTU1.TCR.BIT.CCLR = 0x03; //TCNT1は同期クリア/同期動作をしている他のチャネルのカウンタクリアでTCNTをクリア
- MTU2.TCR.BIT.CCLR = 0x03; //TCNT2は同期クリア/同期動作をしている他のチャネルのカウンタクリアでTCNTをクリア
- /* 波形出力の設定 */
- MTU0.TIORH.BIT.IOB = 0x02; // MTIOC0B 初期出力はLow出力コンペアマッチでHigh出力
- MTU0.TIORL.BIT.IOC = 0x02; // MTIOC0C 初期出力はLow出力コンペアマッチでHigh出力
- MTU0.TIORL.BIT.IOD = 0x02; // MTIOC0D 初期出力はLow出力コンペアマッチでHigh出力
- MTU1.TIOR.BIT.IOA = 0x02; // MTIOC1A 初期出力はLow出力コンペアマッチでHigh出力
- MTU1.TIOR.BIT.IOB = 0x02; // MTIOC1B 初期出力はLow出力コンペアマッチでHigh出力
- MTU2.TIOR.BIT.IOA = 0x02; // MTIOC2A 初期出力はLow出力コンペアマッチでHigh出力
- MTU2.TIOR.BIT.IOB = 0x02; // MTIOC2B 初期出力はLow出力コンペアマッチでHigh出力
- /* ピンの設定 */
- PORT1.PODR.BIT.B5 = 0; // P15 MTIOC0B 出力初期値
- PORT1.PDR.BIT.B5 = 1; // P15 出力設定
- PORT1.PMR.BIT.B5 = 0; // P15 ポートとして使用
- PORT3.PODR.BIT.B2 = 0; // P32 MTIOC0C 出力初期値
- PORT3.PDR.BIT.B2 = 1; // P32 出力設定
- PORT3.PMR.BIT.B2 = 0; // P32 ポートとして使用
- PORT3.PODR.BIT.B3 = 0; // P33 MTIOC0D 出力初期値
- PORT3.PDR.BIT.B3 = 1; // P33 出力設定
- PORT3.PMR.BIT.B3 = 0; // P33 ポートとして使用
- PORTE.PODR.BIT.B4 = 0; // PE4 MTIOC1A 出力初期値
- PORTE.PDR.BIT.B4 = 1; // PE4 出力設定
- PORTE.PMR.BIT.B4 = 0; // PE4 ポートとして使用
- PORTB.PODR.BIT.B5 = 0; // PB5 MTIOC1B 出力初期値
- PORTB.PDR.BIT.B5 = 1; // PB5 出力設定
- PORTB.PMR.BIT.B5 = 0; // PB5 ポートとして使用
- PORT2.PODR.BIT.B6 = 0; // P26 MTIOC2A 出力初期値
- PORT2.PDR.BIT.B6 = 1; // P26 出力設定
- PORT2.PMR.BIT.B6 = 0; // P26 ポートとして使用
- PORT2.PODR.BIT.B7 = 0; // P27 MTIOC2B 出力初期値
- PORT2.PDR.BIT.B7 = 1; // P27 出力設定
- PORT2.PMR.BIT.B7 = 0; // P27 ポートとして使用
- /* 保護解除 */
- MPC.PWPR.BIT.B0WI = 0; // PFSWE書き込み可
- MPC.PWPR.BIT.PFSWE = 1; // PFSレジスタへの書き込み可
- /* ピンの機能設定 */
- MPC.P15PFS.BIT.PSEL = 1; // P15をMTIOC0Bとして使用
- MPC.P32PFS.BIT.PSEL = 1; // P32をMTIOC0Cとして使用
- MPC.P33PFS.BIT.PSEL = 1; // P33をMTIOC0Dとして使用
- MPC.PE4PFS.BIT.PSEL = 2; // PE4をMTIOC1Aとして使用
- MPC.PB5PFS.BIT.PSEL = 2; // PB5をMTIOC1Bとして使用
- MPC.P26PFS.BIT.PSEL = 1; // P26をMTIOC2Aとして使用
- MPC.P27PFS.BIT.PSEL = 1; // P27をMTIOC2Bとして使用
- /* 保護 */
- MPC.PWPR.BIT.PFSWE = 0; // PFSレジスタへの書き込み禁止
- /* ピンを周辺機器に設定 */
- PORT1.PMR.BIT.B5 = 1; // P15周辺機器として使用
- PORT3.PMR.BIT.B2 = 1; // P32周辺機器として使用
- PORT3.PMR.BIT.B3 = 1; // P33周辺機器として使用
- PORTE.PMR.BIT.B4 = 1; // PE4周辺機器として使用
- PORTB.PMR.BIT.B5 = 1; // PB5周辺機器として使用
- PORT2.PMR.BIT.B6 = 1; // P26周辺機器として使用
- PORT2.PMR.BIT.B7 = 1; // P27周辺機器として使用
- /* 初期値設定 */
- MTU0.TGRA = 255; // 周波数設定
- MTU0.TGRB = 300; // MTIOC0Bのデューティー比設定 256以上の設定はデューティー比 0
- MTU0.TGRC = 300; // MTIOC0Cのデューティー比設定
- MTU0.TGRD = 300; // MTIOC0Dのデューティー比設定
- MTU1.TGRA = 300; // MTIOC1Aのデューティー比設定
- MTU1.TGRB = 300; // MTIOC1Bのデューティー比設定
- MTU2.TGRA = 300; // MTIOC2Aのデューティー比設定
- MTU2.TGRB = 300; // MTIOC2Bのデューティー比設定
- /* MTUタイマ起動 */
- MTU.TSTR.BIT.CST0 = 0x01; //MTU0カウント動作
- MTU.TSTR.BIT.CST1 = 0x01; //MTU1カウント動作
- MTU.TSTR.BIT.CST2 = 0x01; //MTU2カウント動作
- }
※コメント投稿者のブログIDはブログ作成者のみに通知されます