|
|
No.0106 2026.1.2
ルネサス RL78/F25 (7) タイマーで色々なデジタル入力機能を使ってみる
回路図(PDF): 20251228_RL78F25.pdf (1,112 KB)(前回と同じ)
ピンアサイン表(Excel): RL78_F25 ピンアサイン 20251228.xlsx (23 KB)(前回と同じ)
ソースファイル: なし
□ 1.入力信号のハイ、ロウレベル幅測定
| |
タイマを使った入力方法を試してみます。
1つめは、ボタンを押された時間を測定して、一定時間以上の場合は処理を行うようにします。
最初に、前回設定した割り込み入力のコンポーネントを削除します。
スマートコンフィグレータを起動して、コンポーネントのConfig_INTCを削除します。
タイマのTAU17をダブルクリックして、コンポーネントの追加ダイアログを表示させます。
コンポーネントは「入力信号のハイ/ロウ・レベル幅測定」を選択して、次へを選択します。
初期設定のまま、終了をクリックします。
TAU17の設定をします。
長めの時間がカウントできるように、動作クロックはCK11を選択します。
RL78マイコンのタイマは、クロック源(分周比)を4つ設定することができます。
各々のタイマーは4つのクロック設定のどれかを選択して、そのクロックでカウントします。
クロックソースは、最大4秒測定できるように 「fCLK/2^10」 を選択します。
下の青い説明書きに、測定可能な時間の範囲が表示されるので、それを参考に選びます。
入力ソース設定は、「TI17」を選択します。
「TI17端子入力信号のノイズ・フィルタ使用」にチェックを入れます。
幅測定のレベル選択を「ロウ・レベル」にします。
「タイマ・チャネル7のキャプチャ完了で割り込み発生(INTTIM17)」にチェックを入れます。
端子タブのタイマアレイユニット、TAU17の設定を開き、TI17の使用するにチェックが入っていることを確認し、端子番号が38になっていることを確認します。
以上で設定完了です。コードを生成して閉じます。
生成された Config_TAU1_7_user.c の r_Config_TAU1_7_interrupt()関数を見てみると、
関数内に処理が記述されています。g_tau1_ch7_width変数が、ボタンが押された測定時間になります。
ちなみにタイマーのクロック源であるfCLKは、スマートコンフィグレータのクロックで設定できます。
先ほどのクロックソースの設定から、カウント1ビットは32usであることが分かっています。
今回は、1.6sec ÷ 32us = 50000、1.6秒以上押されたときにLチカをON/OFFするようにします。
「/* Start user code for ・・・」の後に、前回までと同じ処理を記述します。
タイマー関数のヘッダをincludeする記述と、タイマー遷移に使うグローバル変数の記述を前回までと同じようにします。
main()関数を、タイマーを使うように修正します。
最初からTAU17を有効にするため、R_Config_TAU1_7_Start()関数をWhile文の前に記述します。
以上のコーディングが終わり、ビルドやファイルの保存を行うと、なぜかR_Config_TAU1_7_Get_PulseWidth関数の引数で使用されているuint32_tが定義されていないエラー(E0520020)が発生してしまいます。
メンドクサイので、uint32_tを unsigned long に書き換えてしまいます。
こちらはヘッダファイルです。
Cソースコード側も、unsigned long に書き換えます。
この状態でビルド&ダウンロードしてマイコンを動作させます。
ボタンを2秒くらい以上押すと、LチカがON/OFFできるようになりました。
|
□ 2.外部イベントカウンタ
| |
次はLチカがOFFの状態でボタンを3回押すとLチカがONになり、
ONの状態でボタンを1回押すとLチカがOFFになる、といった処理をしてみます。
スマートコンフィグレータを起動して、先ほど作成したConfig_TAU1_7を削除します。
TAU17をダブルクリックして、コンポーネント追加のダイアログを開きます。
コンポーネントは「外部イベント・カウンタ」を選択して、次へをクリックします。
初期状態のまま、終了ボタンをクリックします。
TAU17の設定をします。
今度はボタンの押されるタイミング、電圧が切り替わるタイミングを測定することになるため、動作クロックはCK10を選択します。
クロックソースは、「fCLK/2^8」 を選択します。
外部イベントカウンタの「TI17端子入力信号のノイズ・フィルタ使用」にチェックを入れます。
外部イベント・エッジ選択(TI17)は、「立ち下がりエッジ」を選択します。
今回は3回ボタンを押してLチカONとするため、初期のカウント値は「3」に設定します。
「タイマ・チャネル7のキャプチャ完了で割り込み発生(INTTIM17)」にチェックを入れます。
端子タブのタイマアレイユニット、TAU17の設定を開き、TI17の使用するにチェックが入っていることを確認し、端子番号が38になっていることを確認します。
以上で設定完了です。コードを生成して閉じます。
生成された Config_TAU1_7_user.c の r_Config_TAU1_7_interrupt()関数に、
今までと同じようにタイマーON関数やタイマーの遷移処理を記述します。
ボタン押下のカウント数は、TDRレジスタで設定します。
今回はTAU17を使用しているため、TDR17が設定レジスタです。
設定値代入後は、TS1レジスタのタイマ7に該当するビットを1にすることで、TDR17に設定した値が有効になります。
タイマー関数のヘッダをincludeする記述と、タイマー遷移に使うグローバル変数の記述を今までと同じようにします。
main()関数は、最初の「入力信号のハイ、ロウレベル幅測定」と同じ記述になります。
この状態でビルド&ダウンロードしてマイコンを動作させます。
LチカがOFFの状態でボタンを3回押すとLチカがONになり、
ONの状態でボタンを1回押すとLチカがOFFになる動作になりました。
次は、CAN通信を動かしてみましょう。
|
次のレポート
>> ルネサス RL78/F25 (8) CAN通信回路を作成する
前のレポート
<< ルネサス RL78/F25 (6) デジタル割り込み入力の方法
|