Copyright (C)SUWA TSUSHIN NETWORK.
All Rights Reserved. TOPへ戻る
スポンサードリンク

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) デジタル割り込み入力の方法


スポンサードリンク

TOPへ戻る


ご利用条件
 Copyright (C)SUWA TSUSHIN NETWORK. All Rights Reserved.