シリーズ:実験シリーズ(フェーズ0)
この記事の役割:LEDが点かない・動かないときに、I/Oレジスタで「ソフトが出力しているか」「ピンが実際に変化しているか」を切り分けられるようにする。
1. この実験のゴール(合格条件)
次を 自分の手で確認できたら合格です。
- I/O Registersビューを表示できる(※初回は「その他…」から)
- PORT6 のレジスタで P600=bit0 を確認できる
- LED ON/OFF(またはPinWrite)に合わせて、次が切り替わるのを確認できる
- PODR bit0
- (できれば)PIDR bit0 / PDR bit0 も確認
ここでの「LEDが光ったか」は必須ではありません。
まずは「レジスタが切り替わる」ことを成功判定にします(光らない理由は切り分けで潰す)。
2. 事前準備(前提)
- e² studio + FSP でプロジェクトがビルドできる
⇒次の記事の4章以降にプロジェクト作成~ビルドまでの手順の記載があります。
統合開発環境e² studio+FSPのインストールからビルドまで - デバッグ実行して停止できる(ブレークポイントで止められる)
⇒次の記事の4章以降にデバッグ方法の記載があります。
初心者のためのデバッグ入門:ブレークポイントと変数を見る - EK-RA8M2を接続できている
3. 実験で使うピン(今回の例)
EK-RA8M2のUser LED接続(マニュアル記載):
- User LED1:P600
- P600 = Port6 Pin0
→ レジスタでは PORT6 の bit0 を見る
4. 手順
手順1:Pins設定の確認(P600がGPIO出力になっているか)
FSP Configurator(configuration.xml)→ Pins で P600 を確認します。
- Mode:Output mode (Initial Low)
これでP600が「GPIO出力」として使える状態になり、起動直後の出力はLowになります。

設定を変更したら、Generate Project Content を実行します。
※すでに設定済みでも、設定が反映されていない疑いがある場合は Generate を実行してOK です。
Generate(生成)後、生成ファイル(例:pin_data.c など)に g_bsp_pin_cfg が出力されている。
手順2:確認用の最小コード(ON/OFF切り替え)
hal_entry() に、P600を切り替えるコードを書きます。
ポイント:ON/OFFの直後で止めて、I/Oレジスタが見れるプログラムにします。
#include "hal_data.h"
void hal_entry(void)
{
while (1)
{
/* ON側(仮) */
R_BSP_PinWrite(BSP_IO_PORT_06_PIN_00, BSP_IO_LEVEL_HIGH);
__asm volatile ("nop"); // ←ここで止める(ON側)
/* OFF側(仮) */
R_BSP_PinWrite(BSP_IO_PORT_06_PIN_00, BSP_IO_LEVEL_LOW);
__asm volatile ("nop"); // ←ここで止める(OFF側)
}
}※P600 → BSP_IO_PORT_06_PIN_00(Port6 Pin0)
手順3:I/O Registersビューを出す(初回は「その他…」)
e² studioを起動した際に、「IO Registers」ウィンドウがどこにも表示されていない場合は、次の手順で表示します。
「ウィンドウ」→「ビューの表示」→「その他」を選択

一覧から「IO Registers」を選択し、「開く」をクリック

手順4:PORT6のレジスタを見る(P600=bit0)
- PORT6のレジスタの値を確認するために、ターゲットに接続
- 最初の
sm volatile ("nop");にブレークポイントを設定 - デバッグを開始
- ブレークポイントで停止したら、「IO Registers」ビューで、次を探す
- PORT → PORT6
- その中で次を探す
- PODR(出力)
- PDR(方向)
- PIDR(入力)
- その中で次を探す
※I/O Registers の表示階層は環境により異なります。PODR/PDR/PIDR が直接見える場合も、PCNTR1/PCNTR2 の中にまとまっている場合もあります。

※画像では、「IO Registers」ビューの「選択されたレジスター」タブで必要なレジスタのみを表示しています。
このようにして、レジスタの値を確認していきます。
次の__asm volatile ("nop");にブレークポイントを設定して、デバッグを再開し、同じように「IO Registers」ビューで、PORT6のbit0の値を確認します。
5. 何を見るべきか(最低限)
まずは PODR bit0 だけでOKです。
- ON側の停止:PODR bit0 が 1
- OFF側の停止:PODR bit0 が 0
6. 追加で見ると切り分けが強くなる(推奨)
- PDR bit0:出力になっているか(出力なら1になっています)
- PIDR bit0(またはPCNTR2 bit0):ピンの今の状態(1/0)
7. 結果(記録)
- 使用ボード:EK-RA8M2
- 対象ピン:P600(PORT6 bit0)
- 確認できたこと:
- I/O Registersビュー表示
- PODR bit0 の切り替え
- PDR bit0 の状態(出力)
- PIDR/PCNTR2 bit0 の切り替え
8. よくあるつまずき(実験シリーズ向け)
8-1. I/O Registersビューが見つからない
- ウィンドウ → ビューの表示 → その他… に入っている
8-2. PODRが変わらない
- 見ているピンが違う(P600以外を切り替えている)
- Pins設定が反映されていない → Generateを実行
8-3. PODRは変わるのにLEDが光らない
- ジャンパ短絡が未設定でLEDがピンに接続されていない
9. 次にやること
- (次)LED点灯の“現象”とレジスタの関係を確認する(Active-Lowの確認)
- (次)GPIOが変わっているのに外に出ないときの切り分け(ピン機能/PFS)