# RL78\G13マイコン入門 [マイコントレーニングボード MODEL MT-RL78 取扱説明書](https://www.sunhayato.co.jp/dcms_media/other/MT-RL78_Manual_SG11014.pdf) [RL78/G14ユーザーズマニュアル ハードウェア編](https://www.marutsu.co.jp/contents/shop/marutsu/datasheet/r01uh0186jj0200_rl78g14.pdf) # Chapter3 [統合開発環境CS+ for CC](https://www.renesas.com/jp/ja/software/D4001151.html) ## オプションバイト ## デバッグ・ツールの設定 # Chapter4 ## LEDシフト ### p.187 ![](https://i.imgur.com/Zt8JyzF.png) ## スイッチ ### p.200 ![](https://i.imgur.com/NCHshaK.png) 下記仕様で実装する。 | SW(in) | LED(out) | | -------- | -------- | | SW1 押下 | LED1 ON | | SW1 解放 | LED1 OFF | | SW2 押下 | LED4 ON | | SW2 解放 | LED4 OFF | | SW3 押下 | LED7 ON | | SW3 解放 | LED7 OFF | ### 練習問題 p.202 #### 練習問題1 SW2が押された回数を2進数でLED0-LED7に出力するコードを作成する。 LED0:LSB LED7:MSB ## 外部割り込み ### p.204 SW1押下時に1,2を切り替え 1. LED0-LED3を100ms毎に右シフト 1. LED0-LED3を100ms毎に左シフト ### 練習問題 p.209 #### 練習問題1 SW2押下時に1,2を切り替え 1. LED0-LED7を100ms毎に右シフト 1. LED0-LED7を100ms毎に左シフト #### 練習問題2 SW1押上時に1,2を切り替え 1. LED4-LED7を500ms毎に右シフト 1. LED4-LED7を500ms毎に左シフト ## タイマ割り込み ### p.210 タイマ・アレイ・ユニット0 チャネル0を用いて、500ms周期毎にタイマ割り込みを発生させる。 タイマ割込み内でカウンタをインクリメントし、カウンタの値をLED0-LED7に2進数で表示する。 ### 練習問題 #### 練習問題1 タイマ・アレイ・ユニット0 チャネル0を用いて、250ms周期毎にタイマ割り込みを発生させる。 タイマ割込み内でカウンタをインクリメントし、カウンタの値をLED0-LED7に2進数で表示する。 #### 練習問題2 タイマ・アレイ・ユニット0 チャネル0を用いて、100ms周期毎にタイマ割り込みを発生させる。 タイマ割込み内でカウンタをインクリメントし、カウンタの値をLED0-LED7に2進数で表示する。 #### 練習問題3 タイマ・アレイ・ユニット0 チャネル3を用いて、500ms周期毎にタイマ割り込みを発生させる。 タイマ割込み内でカウンタをインクリメントし、カウンタの値をLED0-LED7に2進数で表示する。 ## 7セグメントLED表示 ### p.222 AM-FND4 ![](https://i.imgur.com/cmP84NB.png) ![](https://i.imgur.com/KEJNGUF.png) * 100msおきにカウンタインクリメント * 7セグメントLEDへ表示するためにカウンタ値の一の位、十の位を求める * カウンタ値の一の位、十の位をそれぞれdig0(1桁目) dig1(2桁目)に ダイナミック点灯で表示する。 ### 練習問題 #### 練習問題1 SW1を使ってスイッチ入力回数を数え、 2桁の7セグメントLEDに入力回数を表示する。 ## スピーカ出力 ### p.233 ![](https://i.imgur.com/Oi9sErb.png) ![](https://i.imgur.com/H26GbKn.png) ### 練習問題 #### 練習問題1 3音だけのキーボードを作る | SW | 音階 | | --- | --------------- | | SW1 | 5オクターブのド | | SW2 | 5オクターブのレ | | SW3 | 5オクターブのミ | ## DCモータ制御 モータドライバL9110Sを使用する。 [L9110S購入リンク](https://www.amazon.co.jp/dp/B011DT3OAY) [DCモータ購入リンク](https://www.amazon.co.jp/dp/B01ARL1Y6A) [L9110Sデータシート](http://me.web2.ncut.edu.tw/ezfiles/39/1039/img/617/L9110_2_CHANNEL_MOTOR_DRIVER.pdf) [L9110データシート](https://www.elecrow.com/download/datasheet-l9110.pdf) [ブレッドボード用電源モジュール(MB102)](https://stupiddog.jp/note/archives/1189) L9110S回路図 ![](https://i.imgur.com/5ucXV7R.png) L9110真理値表 ![](https://i.imgur.com/483K41O.png) ### p.239 結線 | L9100S | L9100 | MT-RL78 | DCモータ | MB102 | | ------- | --------- | --------- | ------------- | ----- | | P3 1pin | U1 IB | P10(LED0) | - | - | | P3 2pin | U1 IA | P11(LED1) | - | - | | P3 3pin | U1,U2 VCC | - | - | 5V | | P3 4pin | U1,U2 GND | GND | - | GND | | P3 5pin | U2 IB | P12(LED2) | - | - | | P3 6pin | U2 IA | P13(LED3) | - | - | | P1 1pin | U1 OB | - | モータ1+端子 | - | | P1 2pin | U1 OA | - | モータ1ー端子 | - | | P2 1pin | U2 OB | - | モータ2+端子 | - | | P2 2pin | U2 OA | - | モータ2ー端子 | - | ### 練習問題 #### 練習問題1 下記仕様のコードを実装する。 * SW1を押すごとに、モータ1の回転方向が反対に変わる * SW2を押すごとに、モータ2の回転方向が反対に変わる #### 練習問題2 下記仕様のコードを実装する。 * SW1を押すごとに、モータ1,モータ2の回転方向が反対に変わる * モータ1とモータ2は、互いに逆方向に回転するようにする。 | モータ1 | モータ2 | | ------- | ------- | | 正回転 | 逆回転 | | 逆回転 | 正回転 | ## DCモータ制御2 ## DCモータPWM制御 ## ステッピングモータ制御1 [ステッピングモータ購入リンク](https://www.amazon.co.jp/dp/B06XCSCD8T) [ステッピングモーター(28BYJ-48)を分解して仕組みを調べてみた](https://stupiddog.jp/note/archives/1209) [ステッピングモーター(28BYJ-48)の動かし方 (ULN2003A使用)](https://stupiddog.jp/note/archives/1235) 結線 | ステッピングモータドライバ | ステッピングモータ | MT-RL78 | MB102 | | -------------------------- | ------------------ | --------- | ----- | | 5--12V(-) | - | GND | GND | | 5--12V(+) | - | - | 5V | | IN1 | - | P10(LED0) | - | | IN2 | - | P11(LED1) | - | | IN3 | - | P12(LED2) | - | | IN4 | - | P13(LED3) | - | | A | A | - | - | | B | B | - | - | | C | C | - | - | | D | D | - | - | | 5--12V(+) | 5--12V(+) | - | - | ### p.259 4相モータ1-2相励磁動作を行う。 ### 練習問題 #### 練習問題1 ステッピングモータの回転速度が時間により変わるようにする。 #### 練習問題2 4相モータ1相励磁動作を行う。 #### 練習問題3 4相モータ2相励磁動作を行う。 #### 練習問題4 タイマを使って励磁を行うようにする。 ## RCサーボモータ [SG90購入リンク](https://www.amazon.co.jp/dp/B00VUJYNWG) ![](https://i.imgur.com/XxTMPzw.png) RCサーボ仕様 | サーボ位置 | パルス幅 | パルス周期 | | ---------- | -------- | ---------- | | 0度 | 0.5ms | 20ms | | 90度 | 1.45ms | 20ms | | 180度 | 2.4ms | 20ms | 結線(タイマ割込み) | RCサーボ | MT-RL78 | MB102 | | -------- | ------- | ----- | | PWM | P141 | - | | Vcc | - | 5V | | Ground | GND | GND | 結線(PWM制御) | RCサーボ | MT-RL78 | MB102 | | -------- | ------- | ----- | | PWM | P17(TO02) | - | | Vcc | - | 5V | | Ground | GND | GND | ### p.275 タイマ割込みでRCサーボモータを動作させる 下記パターンを繰り替えす。 | 経過時間 | 角度 | | -------- | ----- | | 0s | 0度 | | 1s | 30度 | | 2s | 60度 | | 3s | 90度 | | 4s | 120度 | | 5s | 150度 | | 6s | 180度 | | 7s | 150度 | | 8s | 120度 | | 9s | 90度 | | 10s | 60度 | | 11s | 30度 | ### 練習問題 #### 練習問題1 タイマ割込みでRCサーボモータを動作させる ボリューム抵抗の抵抗値を%換算する | 抵抗値 | 角度 | | ------ | ---- | | 最小 | 0% | | 中立 | 50% | | 最大 | 100% | 下記式が成立するようにRCサーボモータを制御する。 `RCサーボの角度[度]=ボリューム抵抗の抵抗値[%]*180度` #### 練習問題2 PWM制御によりRCサーボモータを制御する #### 練習問題3 下記仕様で実装する。 * タイマ割込みでRCサーボモータを動作させる * SW1を押下している間のみRCサーボモータの回転を停止する。 * SW1を解放すると、RCサーボモータが回転を再開する。 #### 練習問題4 下記仕様で実装する。 * PWM制御によりRCサーボモータを制御する * SW1を押下している間のみRCサーボモータの回転を停止する。 * SW1を解放すると、RCサーボモータが回転を再開する。 ## リレー電源供給モジュール # p.281 | リレーボード | MT-RL78 | | ------------ | ------- | | VCC | VDD | | IN1 | P01 | | IN2 | P02 | | GND | GND | ## UART出力 | UART | Pin | 備考 | | ---- | --- | ---- | | RxD0 | P50 | - | | TxD0 | P51 | - | | RxD1 | P03 | - | | TxD1 | P02 | - | | RxD2 | P14 | LED4 | | TxD2 | P13 | LED3 | * 改行コード マイコンからPCへの受信:LF PCからマイコンへの送信:CR+LF 結線 | TTL232-RG | MT-RL78 | 備考 | | --------- | --------- | ---- | | VCC(赤) | VDD | - | | GND(黒) | GND | - | | TXD(橙) | P03(RxD1) | - | | RXD(黄) | P02(TxD1) | - | ### p.286 下記仕様で実装する。 * RxD1, TxD1を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * "Hello, NEWTC" "Hello, RL78" という文字列をTeraTerm上に表示する。 ### 練習問題 #### 練習問題1-1 * RxD1, TxD1を使用する * ボーレート:19200bps * データ:8bit * パリティ:even * ストップビット:1 bit * "Hello, NEWTC" "Hello, RL78" という文字列をTeraTerm上に表示する。 #### 練習問題1-2 * RxD1, TxD1を使用する * ボーレート:38400bps * データ:8bit * パリティ:even * ストップビット:2 bit * "Hello, NEWTC" "Hello, RL78" という文字列をTeraTerm上に表示する。 #### 練習問題1-3 * RxD1, TxD1を使用する * ボーレート:115200bps * データ:8bit * パリティ:odd * ストップビット:1 bit * "Hello, NEWTC" "Hello, RL78" という文字列をTeraTerm上に表示する。 #### 練習問題2 * RxD1, TxD1を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * SW1を押下するたびに "Hello, NEWTC" という文字列をTeraTerm上に表示する。 * SW2を押下するたびに "Hello, RL78" という文字列をTeraTerm上に表示する。 #### 練習問題3 * RxD0, TxD0を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * "Hello, NEWTC" "Hello, RL78" という文字列をTeraTerm上に表示する。 ## UART入出力 | UART | Pin | 備考 | | ---- | --- | ---- | | RxD0 | P50 | - | | TxD0 | P51 | - | | RxD1 | P03 | - | | TxD1 | P02 | - | | RxD2 | P14 | LED4 | | TxD2 | P13 | LED3 | * 改行コード マイコンからPCへの受信:LF PCからマイコンへの送信:CR+LF 結線 | TTL232-RG | MT-RL78 | 備考 | | --------- | --------- | ---- | | VCC(赤) | VDD | - | | GND(黒) | GND | - | | TXD(橙) | P03(RxD1) | - | | RXD(黄) | P02(TxD1) | - | ### p.304 下記仕様で実装する。 * RxD1, TxD1を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * TeraTerm上に整数を入力してEnterを押すと "Index = 入力した整数"のように表示する。 ### 練習問題 #### 練習問題1 * RxD1, TxD1を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * SW1を押す回数を記憶し、1秒ごとにPCに出力する ## 3線シリアルI/O ## 簡易I2C_1 [MCP23017購入リンク](https://www.amazon.co.jp/dp/B07PV6FH4M) [MCP23017データシート](http://ww1.microchip.com/downloads/jp/DeviceDoc/20001952C_JP.pdf) | MCP23017 | MT-RL78 | 備考 | | -------- | ------- | ----------------------------------------- | | VCC | VDD | - | | GND | GND | - | | SCL | P04 | 10kΩでプルアップ | | SDA | P03 | 10kΩでプルアップ | | NC | - | - | | NC | - | - | | RESET | - | - | | A0 | - | - | | A1 | - | - | | A2 | - | - | | ITB | - | - | | B0 | SW | 10kΩでプルアップ, Active Low | | B1 | - | - | | B2 | - | - | | B3 | - | - | | B4 | - | - | | B5 | - | - | | B6 | - | - | | B7 | - | - | | ITA | - | - | | A0 | LED | 電流制限抵抗を入れること, Active Low | | A1 | - | - | | A2 | - | - | | A3 | - | - | | A4 | - | - | | A5 | - | - | | A6 | - | - | | A7 | - | - | ### p.319 ## 簡易I2C_2 [BMP280購入リンク](https://www.amazon.co.jp/dp/B07VPT93YN) [BMP280データシート](https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf) [BMP280使い方](https://www.denshi.club/cookbook/arduino/spresense/spresensel-24-wire.html) ## テキストLCD ## A/D変換 ### p.382 ボリューム抵抗のADC[ANI18]の値を UART通信でPCのTeraTerm上に表示する。 ![](https://i.imgur.com/J5TdfLA.png) ![](https://i.imgur.com/LaNuXix.png) ![](https://i.imgur.com/N4Re8k5.png) ### 練習問題 #### 練習問題1 ボリューム抵抗の端子間の電圧[V]を表示する。 #### 練習問題2 ボリューム抵抗の抵抗値[Ω]を表示する。 ## キーマトリクス [キーマトリクス購入リンク](https://www.amazon.co.jp/dp/B010Q17I8E) 下記キーマトリクスを使用する。 ![](https://i.imgur.com/geUrwJz.png) ![](https://i.imgur.com/s2A7BoG.png) ![](https://i.imgur.com/EsYFS0f.png) | ピン番号(Rx, Cx) | ピン番号(1-8) | MT-RL78 | 入出力 | 備考 | | ---------------- | ------------- | ------- | ---------------- | ----------- | | R1 | 8 | P60 | 入力(プルアップ) | SW押下でLOW | | R2 | 7 | P61 | 入力(プルアップ) | SW押下でLOW | | R3 | 6 | P62 | 入力(プルアップ) | SW押下でLOW | | R4 | 5 | P63 | 入力(プルアップ) | SW押下でLOW | | C1 | 4 | P10 | 出力 | LOWで選択 | | C2 | 3 | P11 | 出力 | LOWで選択 | | C3 | 2 | P12 | 出力 | LOWで選択 | | C4 | 1 | P13 | 出力 | LOWで選択 | | y座標/x座標 | 0 | 1 | 2 | 3 | | ----------- | --- | --- | --- | --- | | 0 | '1' | '2' | '3' | 'A' | | 1 | '4' | '5' | '6' | 'B' | | 2 | '7' | '8' | '9' | 'C' | | 3 | '*' | '0' | '#' | 'D' | ### p.399 結線 | TTL232-RG | MT-RL78 | 備考 | | --------- | --------- | ---- | | VCC(赤) | VDD | - | | GND(黒) | GND | - | | TXD(橙) | P03(RxD1) | - | | RXD(黄) | P02(TxD1) | - | 下記仕様で実装する。 * RxD1, TxD1を使用する * ボーレート:9600bps * データ:8bit * パリティ:none * ストップビット:1 bit * 改行コード マイコンからPCへの受信:LF PCからマイコンへの送信:CR+LF ### 練習問題 #### 練習問題1 キーが一つでも押されていたら、LED0を点滅する #### 練習問題2 押されたキーの文字を、UARTで出力する。 同じキーを押し続けても1階しか表示しない。 キーは同時に1つしか押されないものとする。