RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A
コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2
ADC の概要 3
ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果 4
ADC のモード A/D 電圧コンパレータは事前にソフトでパワー オン A/D 電圧コンパレータは変換時に自動でパワーオン 5
ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 6
仕様 動作概要 A/D コンバータのソフトウエア トリガ 連続変換モードを使用し ANI0 に入力されたアナログ電圧を A/D 変換します A/D 変換終了を HALT モードで待ち A/D 変換終了後 A/D 変換結果を 6 ビット右シフトして内蔵 RAM に格納します < 設定条件 > 高速オンチップオシレータのクロックは 32MHz で動作します CPU/ 周辺ハードウェア クロックは 32MHz で動作します アナログ入力は P20/ANI0 端子を使用します A/D 変換チャネル選択はセレクト モードを使用します A/D 変換動作モードは連続変換モードを使用します A/D 変換開始条件はソフトウエア トリガを使用します A/D 変換完了割り込み (INTAD) を使用します 基準電圧源は V DD V SS を使用します 7
初期設定のフロー 8
入出力ポートの設定フロー 9
端子をアナログ入力に設定 A/D ポート コンフィギュレーション レジスタ (ADPC) A/D コンバータのアナログ入力 / ポートのデジタル入出力の切り替え 目的の端子 アナログ入力 10
ポートを入力モードに選択 ポート モード レジスタ 2(PM2) 各ポートの入出力モードの選択 ポート モード レジスタのフォーマット (64 ピン製品 ) 11
入出力ポートの設定関数 void PORT_Create(void) { ADPC = 2; // アナログ入力 PM2 = 1; // 入力モード } 12
A/D コンバータの設定フロー (1/3) A/D コンバータの設定フロー (2/3) 13
A/D コンバータ回路へクロック供給 周辺イネーブル レジスタ 0(PER0) 各周辺ハードウエアへのクロック供給許可 / 禁止を設定する 14
変換動作の停止 A/D コンバータ モード レジスタ 0(ADM0) A/D 変換するアナログ入力の変換時間, 変換動作の開始 / 停止を設定 0x00 15
A/D 変換完了割り込み要求フラグのクリア 割り込み要求フラグ レジスタ (IF1H) 対応する割り込み要求の発生または命令の実行によりセット リセット信号発生時または命令の実行によりクリア 割り込みが受け付けられた場合は自動的にクリア 16
A/D 変換完了割り込みを禁止 割り込みマスク フラグ レジスタ (MK1H) 対応するマスカブル割り込み処理の許可 / 禁止を設定 17
割り込み優先レベルの設定 優先順位指定フラグ レジスタ (PR01H, PR11H) PR0xy レジスタと PR1xy レジスタを組み合わせて, 対応するマスカブル割り込みの優先順位レベルを設定 18
A/D コンバータの設定関数 (1/3) void R_ADC_Create(void) { ADCEN = 0x01; ADM0 = 0x00; ADIF = 0x00; ADMK = 0x01; ADPR1 = 0x01; ADPR0 = 0x01; PM2 = 0x01; ADM0 = 0x28; ADM1 = 0x00; ADM2 = 0x00; ADUL = 0xFF; ADLL = 0x00; ADS = 0x00; } A/D コンバータの設定フロー (2/3) 19
A/D コンバータの設定フロー (2/3) A/D コンバータの設定フロー (1/3) 20
変換時間の設定 A/D コンバータ モード レジスタ 0(ADM0) A/D 変換するアナログ入力の変換時間, 変換動作の開始 / 停止を設定 サンプルの CPU/ 周辺ハードウエア クロック 21
A/D 変換チャネル選択モードの設定 A/D コンバータ モード レジスタ 0(ADM0) A/D 変換するアナログ入力の変換時間, 変換動作の開始 / 停止を設定 22
A/D 変換トリガ モードの選択 A/D コンバータ モード レジスタ 1(ADM1) A/D 変換トリガ, 変換モード, ハードウエア トリガ信号を設定 23
A/D 変換動作モードの設定 A/D コンバータ モード レジスタ 1(ADM1) A/D 変換トリガ, 変換モード, ハードウエア トリガ信号を設定 24
A/D コンバータの設定関数 (2/3) void R_ADC_Create(void) { ADCEN = 0x01; ADM0 = 0x00; ADIF = 0x00; ADMK = 0x01; ADPR1 = 0x01; ADPR0 = 0x01; ADM0 = 0x28; ADM1 = 0x00; ADM2 = 0x00; ADUL = 0xFF; ADLL = 0x00; ADS = 0x00; } A/D コンバータの設定フロー (1/3) 25
A/D コンバータの設定フロー (3/3) A/D コンバータの設定フロー (1/3) 26
A/D 変換分解能の選択 A/D コンバータ モード レジスタ 2(ADM2) 準電圧の選択,A/D 変換結果の上限値 / 下限値のチェック, 分解能の選択, および SNOOZE モードを設定 27
A/D コンバータの基準電圧源の選択 A/D コンバータ モード レジスタ 2(ADM2) 準電圧の選択,A/D 変換結果の上限値 / 下限値のチェック, 分解能の選択, および SNOOZE モードを設定 28
変換結果比較上限値 / 下限値の設定 変換結果比較上限値設定レジスタ (ADUL) 変換結果に対し, 上限値をチェックするために設定 255( 最大値 ) 変換結果比較下限値設定レジスタ (ADLL) 変換結果に対し, 下限値をチェックするために設定 0( 最小値 ) 最大値 上限値 範囲内 下限値 29
アナログ入力チャネル指定 アナログ入力チャネル指定レジスタ (ADS) A/D 変換するアナログ電圧の入力チャネルを指定 30
A/D コンバータの設定関数 (3/3) void R_ADC_Create(void) { ADCEN = 0x01; ADM0 = 0x00; ADIF = 0x00; ADMK = 0x01; ADPR1 = 0x01; ADPR0 = 0x01; ADM0 = 0x28; ADM1 = 0x00; ADM2 = 0x00; ADUL = 0xFF; ADLL = 0x00; ADS = 0x00; } A/D コンバータの設定フロー (1/3) 31
A/D コンバータの設定関数のコード生成 (1/2) 32
A/D コンバータの設定関数のコード生成 (2/2) 33
main のフロー 34
A/D 電圧コンパレータの動作許可と A/D コンバータの動作開始フロー パワー オン 1μs 35
A/D 電圧コンパレータの動作許可 A/D コンバータ モード レジスタ 0(ADM0) A/D 変換するアナログ入力の変換時間, 変換動作の開始 / 停止を設定 36
A/D 変換開始 A/D コンバータ モード レジスタ 0(ADM0) A/D 変換するアナログ入力の変換時間, 変換動作の開始 / 停止を設定 37
A/D 電圧コンパレータの動作許可と A/D コンバータの動作開始関数 void R_ADC_Set_OperationOn(void) { ADCE = 1; } void R_ADC_Start(void) { ADIF = 0U; ADMK = 0U; ADCS = 1U; } 38
main のフロー 39
A/D 変換結果を RAM へ格納するフロー 40
A/D 変換結果の取得 10 ビット A/D 変換結果レジスタ (ADCR) A/D 変換結果を保持する 16 ビットのレジスタ 41
A/D 変換結果を RAM へ格納する関数 void R_ADC_Get_Result(uint16_t *buffer) { *buffer = (uint16_t) (ADCR >> 6); } 42
main 関数 uint16_t result_buffer; void main(void) { uint8_t count; result_buffer = 0; DI(); R_ADC_Set_OperationOn(); /* ---- stabilization wait time(about 1us) ---- */ for (count=0u; count<3u; count++) { NOP(); } R_ADC_Start(); while (1U) { HALT(); R_ADC_Get_Result( &result_buffer ); ADIF = 0; } } 43
END ルネサスエレクトロニクス株式会社