- 公開日:2026年01月16日
- | 更新日:2026年01月23日
アナログエンジニアがマイコンを触ってみた。 第5回 割込編
- ライター:sato
- マイコン
アナログ回路設計者である私達が、ひょんなことからルネサス製RXマイコンを使ってみることに。
普段見慣れたデータシートとは違う、分厚いユーザーズマニュアル。聞いたことのない専門用語の数々。
正直、どこから手をつけていいか分かりませんでした。
今回のシリーズは、同じようにマイコンの第一歩を踏み出すアナログエンジニアへの、
ささやかな道しるべとなれば幸いです。
第5回は、マイコンの醍醐味でありながら最初の壁でもある『割り込み』に挑みます。
(*)前回の記事はこちら
アナログエンジニアがマイコンを触ってみた 第4回 PWM編
そもそも割り込みとは?
「実行中の処理を一時中断し、外部信号などの急ぎの用件を最優先で処理する仕組み」です。

割り込みを使わない場合、CPUは常に「何か起きていないか?」を見張り続ける必要があります(これをポーリングと呼びます)。
割り込みを活用することで、CPUは「何かが起きた時だけ」動けばよいため、待機中に他の計算をしたり、
省電力モードで待機したりすることが可能になり、システム全体の効率が飛躍的に向上します。
(*)ルネサス ホームページより
Renesas Engineer School
今回実施する内容
第4回でご紹介したPWMタイマのコードに割り込みを追加した内容を作っていきます。
【URL】
アナログエンジニアがマイコンを触ってみた 第4回 PWM編
大枠の動作としては、こちらです。
通常動作: MTIOC0A端子からDuty 50%のPWM波形を出力し続けます。
割り込みきっかけ: ユーザーボタン(IRQx端子)が押され、入力が「H」になった瞬間(立ち上がりエッジ)を検知します。
割り込み処理の内容: MTUのレジスタ(TGRA/TGRBなど)を書き換え、Dutyを90%に更新します。
タイマを動作させる評価基板について、
今回も市販されている「Target Board for RX231」を使用し、「PWMタイマ⇒割り込み」を動作させていきます。
本ボードはプログラムを書き込むためのエミュレータ回路が搭載されています。
つまり、他に特別な機材を用意する必要がありません。この基板とPCをUSBケーブルで繋ぐだけで、すぐに開発をスタートできます!

【Target Board for RX231はこちらから】
プロジェクトスタート、
まずはe2Studioを使用して、プロジェクトをスタートさせます。スタートの仕方については、1回目でもお知らせしたので、
以下のURLを改めてご確認ください。
スマートコンフィグレータについて(タイマの設定)
「PWMタイマ」については、4回目の記事をご確認ください。
スマートコンフィグレータについて(割り込み)
1.プロジェクトより「スマートコンフィグレータ」(以下の図ではscfg)を起動させます。

2.ファイルを開くと以下の画面が表示されますので、画面下側赤枠の「コンポーネント」タブをクリックします。

3.以下の画面が表示されますので、「割り込みコントローラ」を選択します。

4.以下の画面が表示されますので、「終了」を選択します。

5.以下の画面が出てきますので、設定を行います。
RX231マイコンには外部割り込みを受け取る「窓口」がIRQ0〜IRQ7まで合計8つ用意されていますが、
今回はその中からIRQ4を使用します。

◯検出タイプ
外部割り込み(IRQ/Interrupt Request)が発生する電気的な条件を決定します。
接続するデバイスや信号の性質に合わせて選択します。
ローレベル (Low Level): 信号が「L」の間、割り込み要求を出し続けます。
立ち下がりエッジ (Falling Edge): 信号が「H」から「L」に変わった瞬間に1回検知します。
立ち上がりエッジ (Rising Edge): 信号が「L」から「H」に変わった瞬間に1回検知します。
今回は入力が「H」になった瞬間⇒立ち上がりエッジを検知します。
◯優先順位
複数の割り込みが重なった際、どちらを先に処理するかという「緊急度」を決める司令塔のような設定です。
16段階のレベル: 0〜15で指定し、15が最高、**0は禁止(無効)**を意味します。
今回はIRQ4を「レベル15」に設定しており、他の何よりも最優先させる設定になっています
◯デジタルフィルタ
マイコンのピンに入力される信号には、一瞬のノイズやスイッチのバタつき(チャタリング)が含まれることがあります。
これらをそのまま受け取ると、1回の操作で何度も割り込みが発生するなどの誤動作に繋がります。
これを防ぐのがデジタルフィルタです。入力信号を一定周期でサンプリング(監視)し、
数クロック分の間、同じレベルを維持した時だけ「正しい信号」としてCPUに伝えます。
サンプリング周期より短いノイズは無視される仕組みです。
スマートコンフィグレータでは周波数を選択することで、フィルタの強度を調整可能です。
アナログ回路のRCフィルタと同様の役割を、ソフト設定ひとつで実現できる便利な機能です。
今回は「無効」にして進めていきます。
6.コードを生成する
「コードの生成」のボタンを押してください。

プログラムの生成
ここからはプログラムを書いていきます。

1.「#include “h”」、「#include “Config_MTU0.h」、「Config_ICU.h」
「#include “r_smc_entry.h”」は、スマートコンフィグレータが自動生成した、マイコンの初期設定を読み込む為のコードです。
「#include “Config_MTU0.h”」はMTU0を操作するための関数が使えるようになる為のコードです。
「#include “Config_ICU.h”」は、ICU(割り込みコントローラ)を操作するための関数や設定が使えるようになるためのコードです。
2.R_Config_MTU0_Create ();
スマートコンフィギュレータで設定した内容(周期5000μs、Duty 1%など)をタイマーレジスタに書き込む関数です。
「R_Config_MTU0_Create()」の内容については画面左側の「プロジェクト・エクスプローラー」の
「src」→「smc_gen」→「Config_MTU0.c」を確認できます。
3.R_Config_MTU0_Start ();
ここで初めてタイマのカウントがスタートし、物理ピン(16番ピン)から波形が出始めます。
4.R_Config_ICU_IRQ4_Start ();
外部割り込み(IRQ4)を有効化し、信号の検知を開始するための関数です。
この関数を実行した時点から、マイコンは特定のピン(IRQ4ピン)に入力される信号の変化(スイッチが押された、センサーが反応した等)を監視し始め、条件が揃った時に割り込み処理を実行できるようになります。
5.While文
プログラムを終了させない為にwhile文を挿入。
プログラムの生成(割り込み後の動作について)
割り込み後の動作については、「R_Config_ICU_irq4_interrupt()」で決められます。
この「R_Config_ICU_irq4_interrupt()」の内容が画面左側の「プロジェクト・エクスプローラー」の
「src」→「smc_gen」→「Config_ICU_user.c」で確認できます。
前回4回目の内容にて、(1-(TGRB初期値/TGRA初期値))の値がDutyになる事がわかったので、
Duty=50%にするには、TGRB初期値に16874の50%に当たる8437をPWM出力設定に入力しておきます。

割込入力後のDutyについては、90%にしたいので、
先程の計算式(1-(TGRB初期値/TGRA初期値))にて、TGRBのレジスタが1687にする必要があります。
その為、「Config_ICU_user.c」内「R_Config_ICU_irq4_interrupt()」の中に
MTU0.TGRB=1687を入力することによって割り込みが入った際には、TGRBのレジスタが1687になります。


コードの実装
ここでは作成したコードを実装します。
1.ビルド
ソースコードを、コンピュータが実行できる形式のファイル(実行可能ファイル)に変換する一連の作業になります。赤枠のトンカチボタンを押します。

2.「build finished」が表示されていれば成功です。

3.デバック
MCUへの書き込みを行い、プログラムのバグを探すための準備をします。赤枠の虫のマークをクリックします。

プログラムの実行
最後にプログラムを実行し、所望の動作をしているか確認します。
1.ツールバーの「再生」ボタンをクリックすると、MCU上でプログラムが実行されます。

2.起動当初はDutyが50%でしたが、割込入力後にはDutyが90%
▢Duty 50%時

▢Duty 90%時

まとめ
次回はアナログ出身者には親しみやすい「ADC」について、書いていきます。
お問い合わせはこちら
ルネサス製品をお探しの方は、メーカーページもぜひご覧ください。
