📚 LED点消灯を10分で制御させる　LM_1_SIM

##### QQQ :bow_tone1:３Q! 
##### [【初心者から】組み込み開発_RL78G14篇　LC1](https://qiita.com/zhb/items/a8749effa03b8dd31b0e)　:arrow_heading_up:

# ■ 開発環境準備

## ◇ ソフトウェアIDE環境

- e2 Studio + LLVM for RL78 环境
    - 编译&デバッグ环境
        - C:\ProgramData\LLVM for Renesas RL78 17.0.1.202406\bin
    - GNU make環境
        - C:\Renesas\e2_studio\eclipse\plugins\com.renesas.ide.exttools.gnumake.win32.x86_64_4.3.0.v20220121-1024\mk

## ◇ ハードウェア

https://www.ndk-m.co.jp/evaluation-board/

**RL78/G14ターゲットボード（FB-R5F104PL-TB）**
![RL78G14_Board_FB-R5F104PL-TB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/3b226b06-89a3-4f76-917f-f34f92433acb.png)

回路図

![RL78G14_Board_FB-R5F104PL-TB_Circuit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/40688cb5-e93e-42b3-bd94-8fcfc4bceda7.png)

## レッスン動画
[📚 LED点消灯を10分で制御させる（GIF動画）](https://qiita.com/zhb/items/0ad7f2172fdb1f9cfca1)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/6498514d-6909-47d2-8004-caa5a027af9d.gif" width="50%">

# ■ プロジェクト作成

### 作業フォルダー選択（例：C:\QQQ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/50ee9207-9b95-46ff-bc72-8b2468d94175.png)

### コンパイラ選択（LLVM for Renesas RL78 C/C++ Executable Project）
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/0848ed45-39ab-4979-8a71-058a8f3d1070.png)

### プロジェクト名記入
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/4d485a5f-eb5c-4467-b441-cfc70792a39f.png)


### プロジェクト構成設定
- マイコン選択：
R5F104PL
- ICE＆基板よりハードウェアデバッグ構成：
E2Lite（RL78）
- ソフトウェアシミュレーターデバッグ構成：
RL78 Simulator
- リリース構成：
CreateRelease Configuration
![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/823fc15f-be8c-4b8c-98a5-92fcdcefd004.png)

### ソース自動生成
✅「Use Peripheral Code Generator」をチェック
![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/64bf06d8-dc5d-4657-aca1-6dc23854b7e0.png)

そのまま、「Next」へ！
![image (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/0a21eb1c-eef5-40fa-a4fd-5b85bb0bc812.png)

そのまま、「Next」へ！
![image (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/44ac2c90-f42f-43dd-a65a-dbb4c16bd647.png)

「Finish」完了！
![image (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/41bcf3ca-f449-406a-94dc-959f3d2eb7d6.png)

初期画面は下記の通りです。
![image (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/b806449b-be7c-47f4-9300-fa57b0705b84.png)

黄色部分ファイルはソース自動生成後に不要なので、予めご削除してください。
![image (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/da5830ef-3e9d-4021-9c8a-888404f5183c.png)


# ■ ソース自動生成

## 【クロック発生回路】ノード

下記のタブを設定し、他のタブはそのまま触らないでください。

### 「端子割り当て設定」タブ

「確定する」ボタン押下して、次へ！

![image (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/aabade62-d3e1-471e-90c4-70780af37ed8.png)

### 「クロック設定」タブ

![image (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/9c792719-bf94-43df-a0d7-7169a488a4ba.png)


### 「オンチップ・デバッグ設定」タブ

![image (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/01ef6c00-40e2-4038-ae2e-2cf2a83d1f90.png)

## 【ポート】GPIOノード

### 出力ポート（LED1、LED2）の設定

![image (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/d883e728-fef9-4b99-9625-4282265d87b7.png)


### 入力ポート（KEY）の設定

![image (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/4e17e8fe-73a1-4f3b-bdda-c5034371900b.png)


## 「ウォッチドッグ・タイマ」ノード

現時点で使わないため、「使用しない」とする。

![image (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/8a0ca8d2-ae47-40f2-9f83-485657416c72.png)


## ソース自動生成の実行

![image (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/4fb7b3a2-0916-498a-bcd2-7f932039c5da.png)


## ソースフォーマット設定
![image (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/d413ed50-111a-450a-89ef-65421c27700a.png)

## プロジェクトのビルド

![image (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/c55e8e93-bbee-4331-86ed-753c517ae3aa.png)


# ■ デバッグ構成環境の作成
![image (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/3127f2e8-5f8b-4140-bd21-16f405e0bd81.png)
「ソフトウェアシミュレーターデバッグ構成（RL78 Simulator）」をそれぞれ作成しよう！
![image (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/22b7a03a-6771-4ab8-9b2c-9bb42d11371e.png)

## 「RL78 Simulator」構成作成
### 「main」タブ
![image (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/f9e4cb5a-af95-4260-b629-3ee12d3a9e2c.png)

プロジェクトelfファイル(例：QQQ.elf)選択して、Mainタブの赤警告マークを解消する。
![image (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/4a43a3e5-671d-4ae8-8307-378ccff96a8d.png)

### 「Debugger」タブ

「Target Device」→「R5F104PL」

「Time Measurement」- 「Run Break Time Measurement」→「**yes**」

![image (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/96ea14aa-a878-4557-9089-d0beace28a26.png)

### 「Common」タブ

文字コード→「UTF-8」

![image (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/7308eba3-b571-40d8-a078-05134ddea97c.png)


### 設定完了して、「Apply」→「Debug」押下、実行！

![image (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/f1669d98-9e71-427a-9a76-1ed4ab0ded02.png)

![image (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/f85ac8ab-538d-46d2-bc5f-8b3a0fd21ceb.png)

![image (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/b774e73e-1697-47da-9b84-8ba95f01f74d.png)


# ■ シミュレーターパネルのデザイン

## デザイン画面の起動

「シミュレーター」-「入出力パネル(P)」メニュー選択して、

![image (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/142f0f8e-d797-4e4c-a54b-8f1c96b2f9ba.png)


## LED1デザイン

注意：Debug停止状態したデザイン編集できません。

GPIO選択→「P75/KR5/INTP9」

アクティブレベル→「HIGH」

![image (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/9c2748a6-7d55-4179-8e59-1791cb2b66f4.png)

## LED2デザイン（LED1からコピー）

![image (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/b464bf9b-4db4-44c7-ac64-57af02ce2b04.png)


![image (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/0092b2c8-e8a9-45be-b875-8642337aa176.png)


GPIO選択→「P76/KR6/INTP10/(RxD2)」

アクティブレベル→「HIGH」

![image (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/7f401b90-505e-40ac-8183-b1aa4508a932.png)

「スタイル」→　赤LEDと選定

## キーのデザイン
GPIO選択 →「P137/INTP0」
アクティブレベル →「HIGH」
種類 →「トグル」
![image (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/e899a1cd-c1f0-4a9e-904d-ecc4775b4915.png)
スタイル→　スイッチなスタイル
![image (33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/7902d16a-2fa0-406b-92f4-1a4831f266e7.png)
### ラベルの追加（LED1/LED2/KEY）
![image (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/cfc96997-da0c-4d3a-b265-a2fca145c7a4.png)

## パネルデザインをファイルとして保存する。（再利用可）
![image (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/a5e1227c-fe94-4b9d-a4b6-bca37f7d4fd4.png)
![image (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/bcd07f2d-4849-41a0-ae8f-604b0328e2d5.png)

![image (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/50a21a10-dbea-4c84-82f3-63a2d010ab3b.png)

# ■ 制御ソース実装

下記「main」関数の「User Code」ブロック範囲内制御ソースを埋めましょう！

![image (39).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/4e6a6ff8-c850-4686-9610-4c42dd2f3434.png)

## ↓↓↓ソースコード↓↓↓
```c
/***********************************************************************************************************************
 * Function Name: main
 * Description  : This function implements main function.
 * Arguments    : None
 * Return Value : None
 ***********************************************************************************************************************/
int main(void)
{
	R_MAIN_UserInit();
	/* Start user code. Do not edit comment generated here */
	while (1U)
	{
		// キーOnの場合
		if (P13_bit.no7)
		{
			// LED1点灯
			P7_bit.no5 = 1;

			// LED2消灯
			P7_bit.no6 = 0;

		}
		// キーOffの場合
		else
		{
			// LED1点灯
			P7_bit.no5 = 0;

			// LED2消灯
			P7_bit.no6 = 1;
		}

	}
	return 0U;
	/* End user code. Do not edit comment generated here */
}
```

## コンパイルしてから、実行してみよう！
![image (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/e1a3085c-79c7-4c07-a7bc-595f8f2d8460.png)

![image (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3659233/05b0747c-eb07-4a20-b25c-dfdbc8e0f283.png)

## 成功！

##### [【初心者から】組み込み開発_RL78G14篇　LC1](https://qiita.com/zhb/items/a8749effa03b8dd31b0e)　:arrow_heading_up:
##### QQQ :bow_tone1:３Q!