|
|
No.0104 2026.1.2
ルネサス RL78/F25 (5) タイマーでLチカの方法
回路図(PDF): 20251228_RL78F25.pdf (1,112 KB)(前回と同じ)
ピンアサイン表(Excel): RL78_F25 ピンアサイン 20251228.xlsx (23 KB)(前回と同じ)
ソースファイル: 20260101_RL78F25-1.zip (1.91MB)
□ 1.タイマーを使う方法
| |
Lチカは、タイマー機能を使用して実現します。
スマート・コンフィグレータを起動して、「コンポーネント」タブの「タイマ・アレイ・ユニット」を開きます。
「TAU1」の「TAU17」をダブルクリックしてコンポーネントの追加ダイアログを開きます。
コンポーネントに「インターバル・タイマ」が選択されていることを確認して、次へをクリックします。
今回はタイマー17を使用しますが、今回はどのタイマーを使用しても大丈夫です。
設定そのままで、終了(E)をクリックします。
今回は0.5秒ごとにLEDがON/OFFするようにします。
Config_TAU1_7 の設定が表示されるので、クロックソースを「fCLK/2^8」に変更します。
インターバル時間(16ビット)を「500」、単位を「ms」に変更します。
設定が完了したら、「コードの生成」を実行して、スマート・コンフィグレータを閉じます。
CS+を確認すると、Config_TAU1_7とソースコードが追加されています。
Config_TAU1_7.cを確認すると、R_Config_TAU1_7_Start()関数と、R_Config_TAU1_7_Stop()関数があります。
それぞれタイマーをONする関数と、OFFする関数です。今回はmain()関数で使います。
main()関数の記述です。
最初にタイマーをON/OFFする関数を呼び出すために、Config_TAU1_7.h ヘッダファイルをincludeします。
タイマーの状態遷移を示す変数として、timer_swをグローバル変数として宣言します。
初期状態では、RL78のすべての割込が無効となっているため、__EI()を呼び出して割り込みを有効にします。
ボタンが押されたとき、timer_swの値に応じてLEDをON/OFFさせるタイマーをON、もしくはタイマーを止める要求にします。
Config_TAU1_7_user.c に、タイマーがカウント値に達した(コンペアマッチ)ときに呼び出される、割り込み関数があります。スマートコンフィグレータのルールとして、コード生成で作成される r_************_user.c には、割り込み発生時に呼び出される関数が生成されます。
グローバル変数宣言部分に、timer_sw をexternで宣言します。
r_Config_TAU1_7_interrupt()関数が、タイマーがカウント値に達した(コンペアマッチ)ときに呼び出される割り込み関数です。
timer_swの値に応じて状態を遷移、もしくはタイマーを止める処理を記述します。
タイマーを止めるときは、LEDの点灯をOFFにします。
ビルド&ダウンロードでデバッグ接続をしてマイコンを動作をさせると、ボタンを押したときにLチカがONになり、もう一度ボタンを押すとLチカがOFFになります。
|
□ 2.もう1つのタイマー動作、PWM出力
| |
タイマーの動作に応じてポートをON/OFFさせる処理にしましたが、
タイマーで直接ON/OFFさせる方法があります。具体的にはPWM出力の機能があります。
では、さっそく使ってみましょう。
最初に、先ほど作成したタイマーのコンポーネントを削除します。
PWM出力を行うほうのポートを、「使用しない」に変更します。
今回はP65をタイマー出力(PWM出力)にします。
PWM出力は、タイマーを2つ使います。Duty50%固定であれば、タイマー1つで動作する方形波出力も使用可能です。
今回はPWM出力を使用します。
P65に対応するタイマーはTAU16ですが、TAU16を制御するためにTAU14を使います。
意味が分からないと思いますが、RL78マイコンの制限事項です。
詳細は、ユーザーズマニュアルに記載されている「6.4 タイマ・アレイ・ユニットの基本ルール」の「6.4.1 複数チャネル連動動作機能の基本ルール」を参照してください。
TAU14をダブルクリックしてコンポーネントの追加ダイアログを開き、PWM出力を選択して、
次へをクリックします。
リソースをTAU1_4に設定して、終了ボタンを押します。
クロック・ソースを「fCLK/2^8」にします。
PWM周期設定の周期設定を「500」、単位を「ms」にします。
割り込み設定のチェックを入れて、割り込みを有効にします。
PWMスレーブ選択設定の「チャネル6スレーブ」にチェックを入れます。
チェックを入れることでTAU16が有効になり、P65が出力可能になります。
PWMスレーブ設定のデューティは50%にします。
この数字を1〜99に変更すれば、LEDの点灯割合を変更できます。
割り込み設定は、チェックを入れて有効にします。
「端子」タブの「端子機能」を開き、「タイマ・アレイ・ユニット」の「TAU1」->「TAU16」を開きます。
TO16の「使用する」にチェックが入っていることを確認し、端子番号を「26」に変更します。
以上で設定完了です。コード生成を実行して閉じます。
生成されたConfig_TAU1_4.cを見てみると、生成された関数内にはTAU14とTAU16のレジスタが同時に記述されていることが分かります。
main()関数は、Config_TAU1_4のタイマを使うように記述を変更します。
Config_TAU1_4_user.c には、最初と同じようにグローバル変数を記述します。
r_Config_TAU1_4_channel6_interrupt()関数が、タイマーがカウント値に達した(コンペアマッチ)ときに呼び出される割り込み関数です。
最初と同じように、timer_swの値に応じて状態を遷移、もしくはタイマーを止める処理を記述します。
タイマーが止まると出力も止まるため、ポートの出力をOFFにする記述等は不要です。
ビルド&ダウンロードでデバッグ接続をしてマイコンを動作をさせると、最初と同じようにボタンを押したときにLチカがONになり、もう一度ボタンを押すとLチカがOFFになります。
次もマイコン入門の定番、デジタル割り込み入力を動かしてみましょう。
|
次のレポート
>> ルネサス RL78/F25 (6) デジタル割り込み入力の方法
前のレポート
<< ルネサス RL78/F25 (4) デジタル入出力の方法
|