RX621でMTU2を持ちいてモータ制御してみたメモ.
MTU2を用いてPWM出力と位相係数モードを使うことは難しいことではありません.
今回確認したかったのは,4モータを制御することです.
ちなみにピン選定はPDG(Peripheral Driver Generator)を使うと楽です.
コード生成機能はあまり使用しませんが,モジュールで使用するピンが簡単に
わかりやすく出力されるので,一目でピンを確認できます.
PDGを使用した結果4モータを制御するためには
MTU1,2,7,8を位相係数モード.(7,8はポートB)
MTU6,9をPWMモード2.
その他適当なピンをモータドライバにつなぐのが良いとわかりました.
以下MTU6のPWMモード2とMTU1,2の位相係数モードのイニシャライズメモ
その他もほとんど同じです.
//MTU6
SYSTEM.MSTPCRA.BIT.MSTPA8 = 0; //モジュールストップ状態の解除 MTU6
MTU6.TCR.BIT.TPSC =2; //PCLK/16
MTU6.TCR.BIT.CCLR = 1; //TGRAでカウントクリア
MTU6.TMDR.BIT.MD = 2; //PWMモード1
MTU6.TIORH.BIT.IOA = 1; //出力禁止
MTU6.TIORH.BIT.IOB = 2; //LOW->HIGH出力
MTU6.TIORL.BIT.IOC = 1; //出力禁止
MTU6.TIORL.BIT.IOD = 2; //LOW->HIGH出力
MTU6.TGRA = 3000-1; //1kHz
MTU6.TGRB = 0;
MTU6.TGRC = 3000-1; //1kHz
MTU6.TGRD = 0;
MTUB.TSTR.BIT.CST0 = 1; //カウント動作開始
//MTU1,MTU2
SYSTEM.MSTPCRA.BIT.MSTPA9= 0; //MTUストップ解除
MTUA.TSTR.BIT.CST1 = 0; //MTU1カウント停止
MTUA.TSTR.BIT.CST2 = 0; //MTU2カウント停止
PORT2.ICR.BYTE=0xff; //ポート機能解除
IOPORT.PFCMTU.BIT.TCLKS = 0; //ポート設定
MTU1.TMDR.BIT.MD = 4; //位相係数モード
MTU1.TSR.BIT.TCFD = 1; //TCNTはアップカウント,フラグクリア
MTU1.TCNT = 0; //カウントストップ
MTU2.TMDR.BIT.MD = 4; //位相係数モード
MTU2.TSR.BYTE = 0xC0; //TCNTはアップカウント,フラグクリア
MTU2.TCNT = 0; //カウントクリア
MTUA.TSTR.BIT.CST1 = 1; //76543210
MTUA.TSTR.BIT.CST2 = 1; //MTU2カウント開始
モータドライバはこれ,モータはこれのエンコーダ付き
現在いじっている基盤にそのままモータドライバは乗らなかったので
別に基盤を作りました.
結構ゴチャゴチャしてきました.
とりあえずこれで4モータ動かし,回転数を取得できることは確認しました.
今回で回路の確認は終了したので
前にも書いたとおりマイクロマウスの製作に入りたいと思います.
とりあえずモータ買わないと.
0 件のコメント:
コメントを投稿