スライド 1

Similar documents
スライド 1

スライド 1

スライド 1

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

スライド 1

スライド 1

スライド 1

RX210 グループ MTU2 を用いた相補 PWM モードの波形出力 要旨 本サンプルコードでは MTU2 を用いて相補 PWM モードの波形を出力する方法について説 明します 対象デバイス RX210 1 / 41

スライド 1

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

Microsoft PowerPoint - RX62N動画マニュアルDMAC.ppt [互換モード]

スライド 1

MTU2 三相の相補PWM出力機能 (相補PWMモード)

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

スライド 1

アプリケーションノート AS-E402サンプルプログラム

スライド 1

RX コード生成 V リリースノート

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

スライド 1

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

/* モジュールストップ解除 */ SYSTEM.MSTPCRA.BIT.MSTPA24 = 0; /* MSTPA24(S12ADA 制御部 ) クロック供給開始 */ SYSTEM.MSTPCRA.BIT.MSTPA17 = 0; /* MSTPA17(S12ADA0) クロック供給開始 */

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

スレーブ用システム設計ガイド アプライアンス社モータビジネスユニット 2012/2/15 Rev. 2 Page 1

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Report Template

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

スライド 1

R1RP0416DIシリーズデータシート

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Microsoft Word - TE7790PF_DS_REV111.doc

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

057 { 058 int i; 059 timecounter=0; 060 pwmvalue=0;x=0;v=0; 061 requestdisplaydata=1; 062 tick=1; 063 for (i=0; i<rbuffsize; i++) { 064 ringbuffer[i]=

ETCB Manual

Microsoft Word - プログラムをRAM.doc

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

// USB_CNC_Machine リモート PIO 端末プログラムのメイン関数およびユーザアプリ部 // 編集作成 by Takehiko Inoue /*********** メイン関数 ***************************/ #pragma code

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

1 1 TA, ,9 1. ( 2. TM TM GUI TM 1. P7-13 TM Notepad, Meadow, ( P109 ). 2. (shisaku01/sys test)

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

TMSx70 MCU の RTI(リアルタイム割り込み)を使用してオペレーティングシステムの Tick を発生させる方法

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

PowerPoint プレゼンテーション

GR-SAKURA-SAのサンプルソフト説明

Microsoft Word - N-TM307取扱説明書.doc

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

RL78/I1D 中速オンチップ・オシレータでのUART 通信の実現 CC-RL

c H8 H (TSTR) (TSNC) (TMDR) (TOLR) A (TISRA) B (TISRB) C (TISRC) (16TCRn) I/O (TIORn) (16TCNTn) A (GTAn) B (GRBn) 1 16TCNTn 16 CPU GRAn

ディジタル電子回路 設計演習課題

Microsoft Word - RTC㇢ㅊㅪㇱㅼㇷㅧㅳㅞㅉㅥ㇢ㅫ

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

Microsoft PowerPoint - timer_pwm2.pptx

PowerPoint Presentation

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

RX ファミリ、M16C ファミリ アプリケーションノート M16CからRXへの置き換えガイド 調歩同期式シリアル通信(UART)編

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

変更履歴 Revision 日付 内容 /10/10 初版 /10/24 車載関連説明文削除 /10/06 会社所在地を本社に修正 2

スライド 1

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

Microsoft Word - TC4017BP_BF_J_P10_060601_.doc

SICE東北支部研究集会資料(2014年)

【注意事項】RX Driver Package、 RXファミリ RTC モジュール Firmware Integration Technology

GR-SAKURA-SAのサンプルソフト説明

Microsoft Word - 本文.doc

基本条件 (1Slot 版用 ) 機能 MR-SHPC 端子名 設定内容 備考 CS 空間 -CS CS6 空間 ( キャッシュ無し ) キャッシュ無し空間を使用 (B h) RA25 0 固定 レジスタ空間 RA24 0 固定 RA23 0 固定 B83FFFE 4h~B83FFFF

Microsoft PowerPoint pptx

Microsoft Word - T-AD16P.doc

Microsoft Word - T-ADA16S.doc

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

R1LP5256E Series Datashet

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

8ビットデータバスでアクセスする場合は、16ビットレジスタを上位バイト、下位バイトに分けてアクセスします

まず,13 行目の HardwareTimer Timer(1); は,HardwareTimer というクラスを利用するという宣言である. この宣言によって Timer というインスタンスが生成される.Timer(1) の 1 は,OpenCM に 4 個用意されているタイマのうち,1 番のタイマ

SP-1221 LIN I/F 基板 ユーザーズマニュアル 作成日 :2017 年 10 月 17 日

赤外線受光モジュール C言語リモコンプログラム解説マニュアル

NI P1200 Release Notes Cover

R1LV3216R データシート

thesis.dvi

マイコンボードの LED 制御 準備編その 1 マイコンとノート PC の役割 どうすれば LED は光るの? 光らせる LED の選択は? マイコン端子に接続された LED マイコン端子の電圧設定 制御用ソフトウェアの注意点 1

< 動作マトリクス > 停止 REQ 固定位置 REQ 往復 REQ 停止 () 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止 ( 固定位置 ) 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止パルス中 ( 停止パルス終了後 ) ( 停止パルス終了後動作 )

ANJ-0003: ADXL345 を用いた歩数計

三菱電機マイコン機器ソフトウエア株式会社

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン

ターゲット項目の設定について

Microsoft PowerPoint - kougi7.ppt

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Microsoft PowerPoint LC_15.ppt

TC74HC4060AP/AF

RL78/G1G タイマRD(相補PWM モード)とPWM・オプション・ユニットによるPWM出力の強制遮断 CC-RL

RXファミリ 静電容量計測精度向上のためのセンサ補正

メモリ空間 - 最大 16M バイトの空間をアクセス可能 (24 ビットアドレス ) DSP MUL( 乗算演算 ) ビット (1 サイクル ) MAC( 積和演算 ) ビット (1サイクル) DIV( 除算演算 ) ビット (17~20 サイクル ) 内蔵

Transcription:

RX62N 周辺機能紹介 MTU2 マルチファンクションタイマパルスユニット 2 ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A

コンテンツ MTU2 の概要 プログラムサンプル (1) インプットキャプチャ機能 プログラムサンプル (2) PWM モード プログラムサンプル (3) 相補 PWM モード プログラムサンプルのカスタマイズ 2

MTU2 の概要 3

MTU2 の構成 MTU2 ユニット 0 チャネル チャネル 0 チャネル 1 チャネル 2 チャネル 3 16 ビットタイマ 同一機能 ユニット 1 チャネル4 チャネル5 チャネル6 チャネル7 チャネル8 チャネル9 チャネル10 チャネル11 4

MTU2 の仕様 5

MTU2 の動作概要カウント動作 TCNT 時間 6

MTU2 の動作概要インプットキャプチャ TCNT 入力信号が変化したときのカウンタ値 入力 時間 MTIOC0A 端子 入力信号の変化 7

MTU2 の動作概要コンペアマッチ TCNT 一致 ( コンペアマッチ ) 設定 TGRA 時間 出力 MTIOC0A 端子 出力信号の変化 8

プログラムサンプル (1) インプットキャプチャ機能 9

インプットキャプチャ動作 パルス幅 =(160h - 5h) クロック時間 周期 =(180h) クロック時間 10

プログラムサンプル (1) インプットキャプチャ機能仕様 インプットキャプチャ機能のプログラム例 MTIC5U 端子の入力信号の立ち下がりエッジでキャプチャし 配列 capture_data_array に格納する 仕様 動作モード インプットキャプチャモード 立ち下がりエッジ クロックソース PCLK[48MHz]/64 TCNTクリア 無し カウントスタートソフトウェアスタート 割り込み インプットキャプチャ割り込み 入力端子 MTIC5U 端子 11

プログラム フローチャート リセット スタート main TCIU5 割り込み関数 (Excep_MTU5_TCIU5) スタートアップルーチン init_mtu5 初期設定 立ち下がりエッジ発生時のカウント値を配列に書き込む setpsw_i( 組み込み関数 ) 割り込み許可 RTE 12

インプットキャプチャ機能の初期化フロー 初期化開始 モジュールストップ解除 端子の設定 カウンタクロックの選択 エッジの設定 カウントスタート 割り込み許可 割り込みコントローラの割り込み許可 割り込み優先レベルの設定 割り込み要求の許可 初期化終了 13

モジュールストップコントロールレジスタ A(MSTPCRA) ユニット 0 使用可 14

入力バッファコントロールレジスタ (ICR) 15

タイマコントロールレジスタ (TCR) 16

タイマ I/O コントロールレジスタ (TIOR) ( 省略 ) 17

タイマスタートレジスタ (TSTR) 18

タイマインタラプトイネーブルレジスタ (TIER) 19

割り込みコントローラの設定 割り込みコントローラ IER( 許可 ) IPR( 優先レベル ) CPU へ 20

割り込み要求許可レジスタ m(ierm)(m = 02h ~ 1Fh) IER11 21

割り込み要因プライオリティレジスタ m(iprm)(m= 00h~8Fh) TCNTU カウンタをインプットキャプチャしたときの割り込み :IPR5B 22

インプットキャプチャ機能の初期化関数 初期化開始 void init_mtu5(void) { // Wakeup MTU ch5 MSTP(MTU5) = 0; // ICU for MTIC5U is enable PORTD.ICR.BIT.B7 = 1; // PCLK/64 MTU5.TCRU.BIT.TPSC = 0x03; // Input capture start by falling edge MTU5.TIORU.BIT.IOC = 0x12; // MTU5.TCNTU performs count operation MTU5.TSTR.BIT.CSTU5 = 0x1; // TGIEU of MTU5 interrupt is enabled MTU5.TIER.BIT.TGIE5U = 1; // TGIEU of MTU5 interrupt is enabled IEN(MTU5,TGIU5) = 1; // TGIEU of MTU5 interrupt priority level is 1 IPR(MTU5,TGIU5) = 1; } モジュールストップ解除 端子の設定 カウンタクロックの選択 エッジの設定 カウントスタート 割り込み許可 割り込みコントローラの割り込み許可 割り込み優先レベルの設定 初期化終了 23

メイン関数 void main(void) { // MTU5 initialization init_mtu5(); setpsw_i(); while(1); } main init_mtu5 初期設定 setpsw_i( 組み込み関数 ) 割り込み許可 24

割り込み関数の作成とベクタテーブルの登録 // MTU5 TCIU5 #pragma interrupt (Excep_MTU5_TCIU5(vect=139)) void Excep_MTU5_TCIU5(void) { static uint8_t buff_index; // Timer count read capture_data_array[buff_index++] = MTU5.TGRU; } TCIU5 割り込み関数 (Excep_MTU5_TCIU5) 立ち下がりエッジ発生時のカウント値を配列に書き込む RTE 25

プログラムサンプル (2) PWM モード 26

PWM とは PWM(Pulse Width Modulation: パルス幅変調 ) はパルス波のデューティ比 を変化させて変調する変調方法 デューティ比を変化させることで 電圧や電流を制御できる デューティ比 波形例 平均電圧 パルス幅 小 低い 大 高い 周期 (T) デューティ比 = パルス幅 (High レベル区間 ) / 周期 27

PWM モードの動作 コンペアマッチ機能を使用 周期の設定 デューティ比の設定 28

プログラムサンプル (2) PWM モード仕様 インプットキャプチャ機能のプログラム例チャネル 0 の MTIOC0C 端子から周期 100μs デューティ比 30% のパルスを連続的に 出力する 仕様 動作モード PWMモード クロックソース PCLK[48MHz] TCNTクリア TGRCのコンペアマッチ カウントスタートソフトウェアスタート 割り込み なし 出力端子 MTIOC0C 端子 ( 初期 Low ) 29

プログラム フローチャート リセット スタート main スタートアップルーチン init_mtu0 MTU0 の初期化 初期化 カウント開始 start_mtu0 MTU0 カウントスタート wait( 組み込み関数 ) 割り込み要求待ち 低消費電力モードへ遷移 30

PWM モードの初期化フロー インプットキャプチャのサンプルと同じ 初期化開始 モジュールストップ解除 カウンタクロックの選択 カウンタクリア要因の選択 PWM モードの設定 波形出力レベルの選択 カウント値の設定 初期化終了 31

カウンタクロックの選択とカウント値の設定 ジェネラルレジスタCに設定する カウント値 =48[MHz] 100[ µ s] 1 = 4800 1 < 16ビット カウンタクロック = 周辺クロック 1 分周 ジェネラルレジスタDに設定するカウント値 =4800 0.3 1= 1440-1 < 16ビット TGRC TGRC のコンペアマッチでカウンタクリア TGRD MTIOC0C 32

タイマコントロールレジスタ (TCR) リセット後は設定不要 33

タイマモードレジスタ (TMDR) モード選択ビット 34

タイマコントロールレジスタ (TCR) 35

タイマ I/O コントロールレジスタ (TIOR) 周期の設定 デューティ比の設定 36

タイマジェネラルレジスタ (TGR) アウトプットコンペアレジスタとして機能 ( カウント値 - 1) を設定 ジェネラルレジスタ C のカウント値 =4800 ジェネラルレジスタ C のカウント値 =1440 37

PWM モードの初期化関数 void init_mtu0(void) { // Wakeup MTU0 MSTP(MTU0) = 0; // Counts on PCLK/1 リセット後は設定不要 MTU0.TCR.BIT.TPSC = 0; // TCNT0 is cleared by TGRC compare match MTU0.TCR.BIT.CCLR = 5; // PWM mode MTU0.TMDR.BIT.MD = 2; // (initial:low) -> (CompareMatch:High) MTU0.TIORL.BIT.IOC = 2; // (initial:low) -> (CompareMatch:Low) MTU0.TIORL.BIT.IOD = 1; // count is 48MHz*100μs-1 MTU0.TGRC = 48*100-1; // PWM duty is 30% MTU0.TGRD = 48*100*0.3-1; } 初期化開始モジュールストップ解除カウンタクロックの選択カウンタクリア要因の選択 PWMモードの設定波形出力レベルの選択カウント値の設定初期化終了 38

タイマスタートレジスタ (TSTR) 39

PWM モードのカウント開始関数 main void start_mtu0(void) { // Count start MTUA.TSTR.BIT.CST0 = 1; } init_port LED の初期化 init_cmt0 CMT0 初期化 start_cmt0 CMT0 カウントスタート setpsw_i( 組み込み関数 ) 割り込み許可 wait( 組み込み関数 ) 割り込み要求待ち 低消費電力モードへ遷移 40

PWM モードのメイン関数 void main(void) { // MTU0 initialization init_mtu0(); // MTU0 count start start_mtu0(); while(1){ // CPU sleep wait(); } } main init_port LED の初期化 init_cmt0 CMT0 初期化 start_cmt0 CMT0 カウントスタート setpsw_i( 組み込み関数 ) 割り込み許可 wait( 組み込み関数 ) 割り込み要求待ち 低消費電力モードへ遷移 41

プログラムサンプル (3) 相補 PWM モード 42

相補 PWM モードとは 正相と逆相がノンオーバラップの関係にある PWM 波形 オーバラップ ノンオーバラップ 正相 逆相 同時に ON ノンオーバラップ時間 ( デッドタイム ) PWM 出力信号のアクティブレベルをアクティブローとしたときの例 43

相補 PWM モードのカウント動作 ユニット 0 はチャネル 3 と 4 を組み合わせて使用 逆相用の周期設定 正相用の周期設定 カウント値 デッドタイムの設定 逆相用のカウンタ 正相用のカウンタ 時間 44

相補 PWM モードの出力 ユニット 0 はチャネル 3 と 4 を組み合わせて使用 カウント値 逆相用のカウンタ 正相用のカウンタ デューティ比の設定 3 3 相の相補 PWM 出力が可能 電圧 時間 正相の出力 アクティブローの例 デッドタイム 逆相の出力 45

プログラムサンプル (3) 相補 PWM モード仕様 相補 PWM モードのプログラム例キャリア周期が 400μs で デューティ比が 10% から 90% の間を 10% 刻みで変化する 相補 PWM 信号を出力します 仕様 動作モード 相補 PWMモード クロックソース PCLK[48MHz] カウントスタートソフトウェアスタート 割り込み 山の割り込み キャリア周期 400μsec デッドタイム 4μsec 出力端子 MTIOC4B-B MTIOC4D-B 端子 出力アクティブ アクティブロー 46

プログラム フローチャート リセットスタート main TGIA3 割り込み関数 (Excep_MTU3_TGIA3) スタートアップルーチン init_mtu_pwm 相補 PWM モード 3 に設定 デューティ比の変更 初期化 カウント開始 init_mtu_excep MTU の例外処理の設定 start_mtu MTU のカウンタを起動 setpsw_i( 組み込み関数 ) 割り込み許可 RTE PWM 出力 47

相補 PWM モードの初期化のフロー 初期化開始 A インプットキャプチャのサンプルと同じ モジュールストップ解除 端子の設定 相補 PWM モード設定 バッファ動作の設定 カウンタクロックの選択 波形出力の許可 カウンタの初期値の設定 キャリア周期の設定 初期化終了 デューティ比の設定 デッドタイムの設定 A 48

相補 PWM モードの出力端子 正相 逆相 正相 逆相 正相 逆相 49

ポートファンクションレジスタ C(PFCMTU) PWM 出力端子 1( 正 逆 ) PWM 出力端子 2( 正 逆 ) PWM 出力端子 3( 正 逆 ) 50

カウンタクロックの選択とカウント値の設定 カウント値 正相 チャネル4 のカウンタの初期値 = 0 < 16ビット 正相のキャリア周期 ( 半周期分のカウント値 ) 400[ µ s] 周期データレジスタ バッファレジスタの設定値 = 48[MHz] = 9600 < 16ビット 2 逆相 チャネル3 のカウンタの初期値 = 48[MHz] 4[ µ s] = 192 < 16ビット 逆のキャリア周期 ( 半周期分のカウント値 ) チャネル3 のジェネラルレジスタA,Cの設定値 = 9600 + 192 = 9792 < 16ビット 共通 デューティ比 チャネル4 のジェネラルレジスタB,Dの設定値 = 9600 10[%] = 960 < 16ビット デッドタイム デッドタイムデータレジスタの設定値 =192 < 16ビット 時間 51

タイマコントロールレジスタ (TCR) 逆相 正相 同じ値を設定する リセット後は設定不要 52

タイマカウンタ (TCNT) 正相 逆相 チャネル 4 のカウンタの初期値 =0 チャネル 3 のカウンタの初期値 =192 53

相補 PWM モードのバッファ動作 コンペアレジスタバッファレジスタテンポラリレジスタ S/Wで設定 自動的に転送 54

タイマ周期データレジスタ (TCDR) とタイマ周期バッファレジスタ (TCBR) 正相のキャリア周期 正相のキャリア周期設定用のカウント値 =9600 55

タイマジェネラルレジスタ (TGR) 逆相のキャリア周期 PWM 出力端子 1 のデューティ比 PWM 出力端子 2 のデューティ比 PWM 出力端子 3 のデューティ比 逆相のキャリア周期設定用のカウント値 =9600+192 デューティ比設定用のカウント値 = 960 56

タイマデッドタイムデータレジスタ (TDDR) デッドタイムのカウント値 =192 57

相補 PWM モードの初期化関数 ~ デッドタイムの設定まで ~ void init_mtu_pwm(void) { // Wakeup MTU3 MSTP(MTU3) = 0; // select group B IOPORT.PFCMTU.BIT.MTUS5 = 1; // Counts on PCLK/1 リセット後は MTU3.TCR.BIT.TPSC = 0x0; 設定不要 MTU4.TCR.BIT.TPSC = 0x0; // Initialization of the 16bit counter MTU3.TCNT = 48*4; // 48MHz*4μs MTU4.TCNT = 0; // half the PWM carrier cycle MTUA.TCDR = 48*400/2; MTUA.TCBR = 48*400/2; // half the PWM carrier cycle + Dead time MTU3.TGRA = 48*400/2+48*4; MTU3.TGRC = 48*400/2+48*4; // duty is 10% MTU4.TGRB = (48*400/2)*0.1; MTU4.TGRD = (48*400/2)*0.1; // Dead time set MTUA.TDDR = 48*4; // Set PWM mode 3 MTU3.TMDR.BIT.MD = 0xf; // Buffer is enabled MTU3.TMDR.BIT.BFA = 1; MTU3.TMDR.BIT.BFB = 1; // MTIOC4B and MTIOC4D output is enabled MTUA.TOER.BIT.OE4B = 1; MTUA.TOER.BIT.OE4D = 1; } 初期化開始 モジュールストップ解除 端子の設定 カウンタクロックの選択 カウンタの初期値の設定 キャリア周期の設定 デューティ比の設定 デッドタイムの設定 A 相補 PWM モード設定 バッファ動作の設定 波形出力の許可 初期化終了 A 58

相補 PWM モードの転送タイミング MTU3.TCNT MTU4.TCNT MTU3.TGRA TCDR TDDR 時間 59

タイマモードレジスタ (TMDR) ユニット 0 はチャネル 3 で設定 60

タイマモードレジスタ (TMDR) ユニット 0 はチャネル 3 で設定 61

タイマアウトプットマスタイネーブルレジスタ (TOER) PWM 出力端子 1( 正相 ) PWM 出力端子 2( 正相 ) PWM 出力端子 3( 正相 ) PWM 出力端子 1( 逆相 ) PWM 出力端子 2( 逆相 ) PWM 出力端子 3( 逆相 ) 62

相補 PWM モードの初期化関数 ~ 相補 PWM モードの設定から ~ void init_mtu_pwm(void) { // Wakeup MTU3 MSTP(MTU3) = 0; // select group B IOPORT.PFCMTU.BIT.MTUS5 = 1; // Counts on PCLK/1 MTU3.TCR.BIT.TPSC = 0x0; MTU4.TCR.BIT.TPSC = 0x0; // Initialization of the 16bit counter MTU3.TCNT = 48*4; // 48MHz*4μs MTU4.TCNT = 0; // half the PWM carrier cycle MTUA.TCDR = 48*400/2; MTUA.TCBR = 48*400/2; // half the PWM carrier cycle + Dead time MTU3.TGRA = 48*400/2+48*4; MTU3.TGRC = 48*400/2+48*4; // duty is 10% MTU4.TGRB = (48*400/2)*0.1; MTU4.TGRD = (48*400/2)*0.1; // Dead time set MTUA.TDDR = 48*4; // Set PWM mode 3 MTU3.TMDR.BIT.MD = 0xf; // Buffer is enabled MTU3.TMDR.BIT.BFA = 1; MTU3.TMDR.BIT.BFB = 1; // MTIOC4B and MTIOC4D output is enabled MTUA.TOER.BIT.OE4B = 1; MTUA.TOER.BIT.OE4D = 1; } 初期化開始 モジュールストップ解除 端子の設定 カウンタクロックの選択 カウンタの初期値の設定 キャリア周期の設定 デューティ比の設定 デッドタイムの設定 A 相補 PWM モード設定 バッファ動作の設定 波形出力の許可 初期化終了 A 63

割り込みのタイミング MTU3.TCNT MTU4.TCNT 山の割り込み : チャネル 3 の TCNT と TGRA がコンペアマッチで発生 MTU3.TGRA TCDR TDDR 時間 谷の割り込み : チャネル 4 の TCNT が 0 で発生 64

割り込み許可のフロー 割り込みの初期化開始 割り込み許可 割り込みコントローラの割り込み許可 割り込み優先レベルの設定 必要ならば山の割り込みと谷の割り込みそれぞれに対して行う 割り込みの初期化終了 65

タイマインタラプトイネーブルレジスタ (TIER) 66

割り込みコントローラの設定 割り込みコントローラ IER( 許可 ) IPR( 優先レベル ) CPU へ 67

割り込み要求許可レジスタ m(ierm)(m = 02h ~ 1Fh) IER10 IER11 68

割り込み要因プライオリティレジスタ m(iprm)(m= 00h~8Fh) 山の割り込み :IPR57 谷の割り込み :IPR5A 69

相補 PWM モードの割り込みの要求許可関数 void init_mtu_excep(void) { // TGIEA of MTU3 interrupt is enabled MTU3.TIER.BIT.TGIEA = 1; } // TGIEA of MTU3 interrupt is enabled IEN(MTU3,TGIA3) = 1; // TGIEA of MTU3 interrupt priority level is 1 IPR(MTU3,TGIA3) = 1; 割り込みの初期化開始割り込み許可割り込みコントローラの割り込み許可割り込み優先レベルの設定 割り込みの初期化終了 70

割り込み関数の作成とベクタテーブルの登録 // MTU3 TGIA3 #pragma interrupt (Excep_MTU3_TGIA3(vect=129)) void Excep_MTU3_TGIA3(void) { static int duty = 1; if( ++duty > 9) // Exceeds 90% { duty = 1; // set to 10% duty ratio } MTU4.TGRD = (48*400/2)*duty*0.1; } TGIA3 割り込み関数 (Excep_MTU3_TGIA3) デューティ比の変更 RTE 71

タイマスタートレジスタ (TSTR) 0xC0 72

相補 PWM モードのカウント開始関数 main void start_mtu(void) { // Count Start MTUA.TSTR.BYTE = 0xC0; } init_mtu_pwm 相補 PWM モード 3 に設定 init_mtu_excep MTU の例外処理の設定 start_mtu MTU のカウンタを起動 setpsw_i( 組み込み関数 ) 割り込み許可 PWM 出力 73

プログラムサンプルのカスタマイズ 74

相補 PWM モードのキャリア周期変更 デューティ比の変更キャリア周期の変更 (2 倍 ) // MTU3 TGIA3 #pragma interrupt (Excep_MTU3_TGIA3(vect=129)) void Excep_MTU3_TGIA3(void) { static int duty = 1; if( ++duty > 9) // Exceeds 90% { duty = 1; // set to 10% duty ratio } MTU4.TGRD = 48*200*duty*0.1; } // MTU3 TGIA3 #pragma interrupt (Excep_MTU3_TGIA3(vect=129)) void Excep_MTU3_TGIA3(void) { static int duty = 1; static int scale = 2; // half the PWM carrier cycle MTUA.TCBR = 48*200*scale; // half the PWM carrier cycle + Dead time MTU3.TGRC = 48*200*scale+48*4; } MTU4.TGRD = 48*200*scale*duty*0.1; 75

END ルネサスエレクトロニクス株式会社