goo blog サービス終了のお知らせ 

忘備録-備忘録

技術的な備忘録

RX210を使用してPWMを7個出力する

2024-12-27 22:28:54 | RX210
RX210のタイマユニットMTU0,MTU1,MTU2を組み合わせて同期したPWMを7つ出力するプログラムです。使用するポートはP15,P32,P33,PE4,PB5,P26,P27です。
リストは設定部部のみです。
 
  1. void initMTUsyncPWM(void)
  2. {
  3.     SYSTEM.PRCR.WORD = 0x0A502;
  4.     MSTP(MTU0) = 0; //MTU0 モジュールスタンバイ解除
  5.     MSTP(MTU1) = 0; //MTU1 モジュールスタンバイ解除
  6.     MSTP(MTU2) = 0; //MTU2 モジュールスタンバイ解除
  7.     SYSTEM.PRCR.WORD = 0x0A500;
  8.     /* MTUタイマの設定 */
  9.     MTU.TSTR.BIT.CST0 = 0x00;    //MTUカウント停止
  10.     MTU.TSTR.BIT.CST1 = 0x00;    //MTUカウント停止
  11.     MTU.TSTR.BIT.CST2 = 0x00;    //MTUカウント停止
  12.     /* 同期動作の設定 */
  13.     MTU.TSYR.BIT.SYNC0 = 0x01;    //MTU0同期動作
  14.     MTU.TSYR.BIT.SYNC1 = 0x01;    //MTU1同期動作
  15.     MTU.TSYR.BIT.SYNC1 = 0x01;    //MTU2同期動作
  16.     /* カウント設定 */
  17.     MTU0.TCR.BIT.TPSC = 0x01;    // CLK PCLK/4 でカウント
  18.     MTU1.TCR.BIT.TPSC = 0x01;    // CLK PCLK/4 でカウント
  19.     MTU2.TCR.BIT.TPSC = 0x01;    // CLK PCLK/4 でカウント
  20.     /* カウンタのクリア要因設定 */
  21.     MTU0.TMDR.BIT.MD = 0x03;    //タイマーPWMモード2
  22.     MTU1.TMDR.BIT.MD = 0x03;    //タイマーPWMモード2
  23.     MTU2.TMDR.BIT.MD = 0x03;    //タイマーPWMモード2
  24.     MTU0.TCR.BIT.CCLR = 0x01;    //TCNT0はTGRAのコンペアマッチでクリア
  25.     MTU1.TCR.BIT.CCLR = 0x03;    //TCNT1は同期クリア/同期動作をしている他のチャネルのカウンタクリアでTCNTをクリア
  26.     MTU2.TCR.BIT.CCLR = 0x03;    //TCNT2は同期クリア/同期動作をしている他のチャネルのカウンタクリアでTCNTをクリア
  27.     /* 波形出力の設定 */
  28.     MTU0.TIORH.BIT.IOB = 0x02;    // MTIOC0B 初期出力はLow出力コンペアマッチでHigh出力
  29.     MTU0.TIORL.BIT.IOC = 0x02;    // MTIOC0C 初期出力はLow出力コンペアマッチでHigh出力
  30.     MTU0.TIORL.BIT.IOD = 0x02;    // MTIOC0D 初期出力はLow出力コンペアマッチでHigh出力
  31.     MTU1.TIOR.BIT.IOA = 0x02;    // MTIOC1A 初期出力はLow出力コンペアマッチでHigh出力
  32.     MTU1.TIOR.BIT.IOB = 0x02;    // MTIOC1B 初期出力はLow出力コンペアマッチでHigh出力
  33.     MTU2.TIOR.BIT.IOA = 0x02;    // MTIOC2A 初期出力はLow出力コンペアマッチでHigh出力
  34.     MTU2.TIOR.BIT.IOB = 0x02;    // MTIOC2B 初期出力はLow出力コンペアマッチでHigh出力
  35.     /* ピンの設定 */
  36.     PORT1.PODR.BIT.B5 = 0;        // P15 MTIOC0B 出力初期値
  37.     PORT1.PDR.BIT.B5 = 1;        // P15 出力設定
  38.     PORT1.PMR.BIT.B5 = 0;        // P15 ポートとして使用
  39.     PORT3.PODR.BIT.B2 = 0;        // P32 MTIOC0C 出力初期値
  40.     PORT3.PDR.BIT.B2 = 1;        // P32 出力設定
  41.     PORT3.PMR.BIT.B2 = 0;        // P32 ポートとして使用
  42.     PORT3.PODR.BIT.B3 = 0;        // P33 MTIOC0D 出力初期値
  43.     PORT3.PDR.BIT.B3 = 1;        // P33 出力設定
  44.     PORT3.PMR.BIT.B3 = 0;        // P33 ポートとして使用
  45.     PORTE.PODR.BIT.B4 = 0;        // PE4 MTIOC1A 出力初期値
  46.     PORTE.PDR.BIT.B4 = 1;        // PE4 出力設定
  47.     PORTE.PMR.BIT.B4 = 0;        // PE4 ポートとして使用
  48.     PORTB.PODR.BIT.B5 = 0;        // PB5 MTIOC1B 出力初期値
  49.     PORTB.PDR.BIT.B5 = 1;        // PB5 出力設定
  50.     PORTB.PMR.BIT.B5 = 0;        // PB5 ポートとして使用
  51.     PORT2.PODR.BIT.B6 = 0;        // P26 MTIOC2A 出力初期値
  52.     PORT2.PDR.BIT.B6 = 1;        // P26 出力設定
  53.     PORT2.PMR.BIT.B6 = 0;        // P26 ポートとして使用
  54.     PORT2.PODR.BIT.B7 = 0;        // P27 MTIOC2B 出力初期値
  55.     PORT2.PDR.BIT.B7 = 1;        // P27 出力設定
  56.     PORT2.PMR.BIT.B7 = 0;        // P27 ポートとして使用
  57.     /* 保護解除 */
  58.     MPC.PWPR.BIT.B0WI = 0;        // PFSWE書き込み可
  59.     MPC.PWPR.BIT.PFSWE = 1;        // PFSレジスタへの書き込み可
  60.     /* ピンの機能設定 */
  61.     MPC.P15PFS.BIT.PSEL = 1;    // P15をMTIOC0Bとして使用
  62.     MPC.P32PFS.BIT.PSEL = 1;    // P32をMTIOC0Cとして使用
  63.     MPC.P33PFS.BIT.PSEL = 1;    // P33をMTIOC0Dとして使用
  64.     MPC.PE4PFS.BIT.PSEL = 2;    // PE4をMTIOC1Aとして使用
  65.     MPC.PB5PFS.BIT.PSEL = 2;    // PB5をMTIOC1Bとして使用
  66.     MPC.P26PFS.BIT.PSEL = 1;    // P26をMTIOC2Aとして使用
  67.     MPC.P27PFS.BIT.PSEL = 1;    // P27をMTIOC2Bとして使用
  68.     /* 保護 */
  69.     MPC.PWPR.BIT.PFSWE = 0;        // PFSレジスタへの書き込み禁止
  70.     /* ピンを周辺機器に設定 */
  71.     PORT1.PMR.BIT.B5 = 1;        // P15周辺機器として使用
  72.     PORT3.PMR.BIT.B2 = 1;        // P32周辺機器として使用
  73.     PORT3.PMR.BIT.B3 = 1;        // P33周辺機器として使用
  74.     PORTE.PMR.BIT.B4 = 1;        // PE4周辺機器として使用
  75.     PORTB.PMR.BIT.B5 = 1;        // PB5周辺機器として使用
  76.     PORT2.PMR.BIT.B6 = 1;        // P26周辺機器として使用
  77.     PORT2.PMR.BIT.B7 = 1;        // P27周辺機器として使用
  78.     /* 初期値設定 */
  79.     MTU0.TGRA = 255;            // 周波数設定
  80.     MTU0.TGRB = 300;            // MTIOC0Bのデューティー比設定 256以上の設定はデューティー比 0
  81.     MTU0.TGRC = 300;            // MTIOC0Cのデューティー比設定
  82.     MTU0.TGRD = 300;            // MTIOC0Dのデューティー比設定
  83.     MTU1.TGRA = 300;            // MTIOC1Aのデューティー比設定
  84.     MTU1.TGRB = 300;            // MTIOC1Bのデューティー比設定
  85.     MTU2.TGRA = 300;            // MTIOC2Aのデューティー比設定
  86.     MTU2.TGRB = 300;            // MTIOC2Bのデューティー比設定
  87.     /* MTUタイマ起動 */
  88.     MTU.TSTR.BIT.CST0 = 0x01;    //MTU0カウント動作
  89.     MTU.TSTR.BIT.CST1 = 0x01;    //MTU1カウント動作
  90.     MTU.TSTR.BIT.CST2 = 0x01;    //MTU2カウント動作
  91. }




最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。