• 公開日:2025年12月18日
  • | 更新日:2026年01月23日

アナログエンジニアがマイコンを触ってみた 第3回 コンペアタイマ編

アナログ回路設計者である私達が、ひょんなことからルネサス製RXマイコンを使ってみることに。普段見慣れたデータシートとは違う、
分厚いユーザーズマニュアル。聞いたことのない専門用語の数々。正直、どこから手をつけていいか分かりませんでした。
今回のシリーズは、同じようにマイコンの第一歩を踏み出すアナログエンジニアへの、ささやかな道しるべとなれば幸いです。

今回からはタイマを扱っていきます。まずは「コンペアマッチタイマ」です。

(*)前回の記事はこちら

アナログエンジニアがマイコンを触ってみた 第2回 Lチカ編

そもそもタイマとは?

私たちアナログ技術者が「タイマ回路作って」と言われたら、
まず頭に浮かぶのはCR回路とコンパレータの組み合わせではないでしょうか?(あるいは懐かしの555タイマICとか…)
コンデンサに一定電流を流して電圧を上げ(積分)、
その電圧が基準電圧(Vref)を超えたらコンパレータがパタンと反転して「時間だよ!」と知らせる。あの仕組みです。

マイコンではクロックが内蔵されているケースが多く、そのクロックをベースに様々な種類のクロックが準備されています。

では、実際にRXマイコンのデータシートを見てみましょう。
「タイマ」と名のつく機能が山のように出てきて面食らいますが、
我々アナログエンジニアの視点で「翻訳」すると、実はこのように分類できます。

タイマ名称 役割(ひとことで言うと) 初心者おすすめ度
MTU2a(マルチファンクションタイマパルスユニット)/
TPUa
(タイマパルスユニット)
【波形生成・モータ制御】
インバータ制御や複雑なPWM波形を作るためのプロ仕様。
機能が多すぎて設定が大変。
★☆☆☆☆
(今は見なかったことに)
WDT(ウォッチドックタイマ)/
RTC
(リアルタイムクロック)
【専用機能】
時計(RTC)や、フリーズ監視(ウォッチドッグ)など、
特定の目的専用のタイマ。
★★☆☆☆
(必要になったら…)
CMT(コンペアマッチタイマ) 【ただのタイマ】
時間を測って、時間が来たら知らせるだけ。
余計な機能がないのでシンプル。
★★★★★
(まずはコレ!)

その中で今回は、一番の基本である「コンペアマッチタイマ」を取り扱います。

コンペアマッチタイマについて

まず、コンペアマッチタイマを簡単に説明すると
「クロックをカウントし、設定値と一致したらなにかしらフラグを立てる単純なタイマ」です。
大枠の構造は以下になります。

 

①元となるクロック (PCLK)
まず、マイコン内部生成されるクロックの源振(PCLK)が入ってきます。これは非常に高速(数MHz〜数十MHz)です。

②分周回路(プリスケーラ)
高速すぎるクロックを、使いやすい速度に間引く「分周回路」を通します。

③比較とイベント発生
ゆっくりになったクロックを「カウンタ」が数えていきます。
そして、あらかじめ決めておいた設定値(コンペアマッチ)と一致した瞬間に、フラグを立てます。

 

タイマを動作させる評価基板について

今回も市販されている「Target Board for RX231」を使用し、「コンペアマッチタイマ」を動作させていきます。
本ボードはプログラムを書き込むためのエミュレータ回路が搭載されていることです。
つまり、他に特別な機材を用意する必要がありません。この基板とPCをUSBケーブルで繋ぐだけで、すぐに開発をスタートできます!

【Target Board for RX231はこちらから】

プロジェクトスタート

まずはe2Studioを使用して、プロジェクトをスタートさせます。
スタートの仕方については、1回目でもお知らせしたので、
以下のURLを改めてご確認ください。

アナログエンジニアがマイコンを触ってみた 第1回 導入編

スマートコンフィグレータについて(端子設定)

1.プロジェクトより「スマートコンフィグレータ」(以下の図ではjikken.scfg)を起動させます。

 

 

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

 

 

3.以下の画面が表示されますので、「ポート」を選択します。

 

 

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

 

 

5.以下の画面が表示されますので、「PORT4」を選択し、「PORT4」のタブをクリックします。

 

 

6.以下の画面が表示されますので、「P40」の項目の「出力」にチェックを入れ、「コードの生成」をクリックします。

 

 

7.画面左側の「プロジェクト・エクスプローラー」の「src」→「smc_gen」→「Config_PORT」のフォルダに
「Config_PORT.c」が生成され、 P40が出力ピンである旨のコードが書き込まれたことが確認できます。

 

 

スマートコンフィグレータについて(タイマの設定)

1.プロジェクトより「スマートコンフィグレータ」(以下の図ではjikken.scfg)を起動させます。

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

 

3.以下の画面が表示されますので、「コンペアマッチタイマ」を選択します。

 

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

 

5.以下のタイマ設定画面にて、500ms周期で出力が変化するように設定します。
この中で調整するパラメータとしては、「クロック設定」と「インターバル時間」を2つです。

まず、インターバル時間は選択したクロックをソースとして、信号変化が発生する周期を決定するパラメータ
となります。今回は500ms周期なので、インターバル時間に500msを入力します。
その際、実施の値を確認頂き、目標のインターバル時間になっていない場合は、クロック設定を調整してください。

 

今回はPCLK /512で設定すると、500ms程度のインターバル時間になりました。

設定が完了したら、コードを生成。

 

 

プログラムの生成

ここからはLEDが500ms毎に光るようなプログラムを書いていきます。

  1. 画面左側の「プロジェクト・エクスプローラー」の「src」→「jikken.c」
    にLチカをさせるプログラムを書き込んでいきます。

「#include “r_smc_entry.h”」と「#include “platform.h”」については、以下URLの内容をご参照ください。

アナログエンジニアがマイコンを触ってみた 第2回 Lチカ編

 

  1. R_Config_CMT0_Start ();

ここでスマートコンフィグレータが生成した「コンペアマッチタイマ」のコードを参照しています。
実行の大枠の流れを大枠で示すとマイコンの内部では以下の2つの「スイッチ」が入ります。
IEN (Interrupt Enable):割り込み許可スイッチを「ON」にします。

STR0 (Start bit):タイマのカウントを「開始」します。

これでタイマが動き出し、あらかじめ設定した時間(コンペアマッチ)に到達した瞬間、
プログラムは自動的に割り込み関数へと飛び出します!

 

具体的に説明しますと
この「R_Config_CMT0_Start ()」の内容が画面左側の「プロジェクト・エクスプローラー」
の「src」→「smc_gen」→「Config_CMT0.c」を確認できます。

確認すると上記のような内容が記載されています。簡単にいうと、
今回のCMT0「コンペアマッチタイマ0(このタイマですね。)」が
あらかじめ決めておいた設定値(コンペアマッチ)と一致してに
コンペアマッチが発生した際、IEN(割り込み許可スイッチ)がONであれば、
CMI0という割り込みイベントが発生し、CPUが実行中のプログラムを中断して、
ハードウェアの仕組みによって自動的に割り込み関数(CMI0)へジャンプします。

 

3.r_Config_CMT0_cmi0_interrupt(void)

続きまして、割り込み許可(IEN/Interrupt ENable)後の関数についてです。
CMT0「コンペアマッチタイマ0(このタイマですね。)」がCMI0「Compare match Interrupt0」
というイベントが発生後の関数がこちらになります。
新たにユーザーより追加するコードが以下になります。
「PORT4.PODR.BIT.B0 = ~PORT4.PODR.BIT.B0;」こちらは、最初に設定した出力ポートP40
の論理を反転(0なら1、1なら0へ)させる処理です。この関数が 500ms ごとに実行されることで、
私たちの目には LED が点滅しているように見えます。
(*)~ はビット反転の記号です。割り込みが500msごとに発生するため、
LEDは0.5秒点灯、0.5秒消灯を繰り返し、1秒周期でチカチカ動くことになります

 

コードの実装については、以下のURLを確認してください。

アナログエンジニアがマイコンを触ってみた 第2回 Lチカ編

 

 

コードの実装

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

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

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

プログラムの実行

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

 

500ms毎に点灯している事が確認できました。

 

 

まとめ

次回はより難易度が高い、「PWMタイマ」に挑戦していきます。

(*)4回目はこちらから
アナログエンジニアがマイコンを触ってみた 第4回 PWM編

お問い合わせはこちら

ルネサス製品をお探しの方は、メーカーページもぜひご覧ください。

【ルネサスメーカーページはこちら】