|
|
No.0205 2026.1.5
ルネサス RA6T2 (6) デジタル割り込み入力の方法
回路図(PDF): 20251228_RA6T2.pdf (1,128 KB)(前回と同じ)
ピンアサイン表(Excel): RA6T2 ピンアサイン 20251228.xlsx (129 KB)(前回と同じ)
ソースファイル: なし
□ 1.割り込み入力を使う方法
| |
デジタル入力において、電圧がLoからHi(もしくはHiからLo)に切り替わったときに割り込みが発生して関数を呼び出す機能です。
今回はPB13を割り込み入力にします。
ハードウェアマニュアルに記載されている通り、PB13はIRQ3が対応しています。
configuration.xml をダブルクリックして FSP Configurationを開きます。
「Pins」タブを開いて、PB13の「Mode」を「Disabled」にしてデジタル入力を無効にします。
「Input:ICU」の「ICU3」を開いて、「Operation Mode」を「Enabled」に変更します。
「Input/Output」の「IRQ3」を「PB13」に設定します。
この状態でPB13の設定を開くと、「Mode」が「IRQ mode」に変更されていることが確認できます。
以上でピン設定は完了です。次にIRQ割り込みのスタックを作成します。
「Stacks」タブを開きます。
「New Stack」を開いて、「Input」->「External IRQ (r_icu)」を選択します。
作成した External IRQ (r_icu)のプロパティを開いて以下のように設定します。
「Channel」は、IRQ3を使用するので「3」に設定します。
「Name」は、「g_external_irq3」に変更します。
「Trigger」は、ボタンが押されている状態を検出したいので「Low Level」を選択します。「Falling」でも良いと思いますが、好みの問題だと思います。
「Digital Filtering」は「Enabled」に変更します。これも好みの問題で、「Disabled」のままでも問題ありません。
「Callback」は「irq_3_interrupt」と名付けました。割り込み発生時に呼び出される関数名です。
「Pin Interrupt Priority」は「Priority 6」にします。前回作成したPWM出力用のタイマーをそのまま使うため、それよりも優先度が高い小さい数字にしておきます。数字が小さいほど優先度が高くなります。
「Pins」の「IRQ3」が「PB13」になっていることを確認します。
以上で、設定完了です。コード生成をして完了です。
次にhal_entry.cのコードを追記修正します。
ドラッグ&ドロップで、IRQ割り込み関数 irq_3_interrupt関数の雛形を貼り付けます。
hal_entry関数内で記載していたボタンを押したときの処理を、
この割り込み関数内に移動します。
irq_3_interrupt関数
PB13のポート入力は無効にしたため、宣言部分の記載も削除がコメントアウトします。
hal_entry関数に、IRQ入力割り込み機能を有効初期化するR_ICU_ExternalIrqOpen関数と、IRQ入力割り込みをONにするR_ICU_ExternalIrqEnable関数を追加します。
ボタンの処理が消えたため、スッキリしました。
以上でコードの修正は完了です。
プロジェクトをビルドして、デバッグでマイコンを動作をさせます。前回と同じようにボタンを押したときにLチカがONになり、もう一度ボタンを押すとLチカがOFFになります。
hal_entry()関数
次は、タイマー機能を使った特殊な入力を動かしてみましょう。
|
次のレポート
>> ルネサス RA6T2 (7) タイマーで色々なデジタル入力機能を使ってみる
前のレポート
<< ルネサス RA6T2 (5) タイマーでLチカの方法
|