Copyright (C)SUWA TSUSHIN NETWORK.
All Rights Reserved. TOPへ戻る
スポンサードリンク

No.0017 2021.3.14




ルネサス RX621 (7) デジタル入力、出力をしてみる





今回のソースファイル: rx62_test2.zip (178 KB)


□ 1.デジタル入出力の周辺回路を作る

押しボタンを使った入力回路、LEDを使った出力回路を2回路準備してデジタル入出力をします。
入力は、マイコンのPD2、P46端子を使用し、出力は、マイコンのPA0、PA2端子を使用します。
回路は、以下の通りです。定数はテキトーです。


AKI-RX621 ビンアサイン デジタル IO反映 .xlsx
RX621 デジタルIO 回路図.xlsx





LEDの出力は、ハードウェアマニュアル(R01UH0033JJ0140)の 「 41.2 DC特性 」の表41.5 出力許容電流 より1端子あたり最大 4.0mA、平均で 2.0mA と規定されているため、トランジスタ(NPN)を使ってスイッチングします。




部品を実装した状態です。入出力回路は他のマイコンで再利用する予定ですので、子基板でモジュール化しました。








□ 2.入出力をしてみる

前回作成したウォッチドッグのプロジェクトに、デジタル入出力の処理を追加します。

・ボタン1が押されている間は、LED1が点灯
・ボタン2が押されている間は、LED2の点滅が止まる

という処理にします。




@ 入力の設定

マイコンのPD2、P46端子を入力として使用するために以下の設定をします。 ハードウェアマニュアル(R01UH0033JJ0140)の 「17. I/O ポート」、「17.3 [100 ピンLQFP] I/O ポート」が今回使用するマイコンの該当部分です。

「17.3.2.1 データディレクションレジスタ(DDR)」で端子を「入力として使用するのか、出力として使用するのか」を指定します。マイコンの初期設定では「0:入力ポート」となっているため、この設定は省略します。

端子を入力として使用する場合、「17.3.2.4 入力バッファコントロールレジスタ(ICR)」の設定が必要です。




説明に、

ICR レジスタは、ポートの入力バッファを制御するレジスタです。 PORTn.ICR レジスタ(n=0 〜 5、A 〜 E)の各ビットは、それぞれポートn の端子1 本ずつに対応してお り、1 ビット単位で指定できます。 周辺モジュールの入力端子および入力ポート端子として使用する場合は、予め、対応する端子の入力バッ ファを有効にするためにPORTn.ICR を1 に設定する必要があります。PORTn.ICR を“0” にした状態のまま周 辺モジュールの入力端子として使用した場合は、周辺モジュールへの入力信号はHigh に固定されます。

と書かれているため、必須の設定項目となります。

ソースコードでは以下のように記載します。

  PORT4.ICR.BIT.B6 = 1;   // P46 を入力ポートに設定
  PORTD.ICR.BIT.B2 = 1;   // PD2 を入力ポートに設定

PORT4は、P4xを指します。ICRは、今回のレジスタを指します。BIT.B6は、レジスタのビット位置を指します。
RXマイコンでは日常的に使う表現ですので、覚えておくと便利です。

以下のようにバイト単位で設定することもできます。

  PORT4.ICR.BYTE |= 0x40;   // P46 を入力ポートに設定



A 出力の設定

出力は、マイコンのPA0、PA2端子を使用します。
「17.3.2.1 データディレクションレジスタ(DDR)」の設定をします。




端子の該当するビットを1にすると出力、0にすると入力です。
ソースコードでは以下のように記載します。

  PORTA.DDR.BIT.B0 = 1;   // PA0 を出力ポートに設定
  PORTA.DDR.BIT.B2 = 1;   // PA2 を出力ポートに設定

以下のようにバイト単位で設定することもできます。

  PORTA.DDR.BYTE |= 0x05;   // PA0、PA2 を出力ポートに設定



B 入力の読み込み

34行目、47行目で、端子入力状態の判定を行っています。
入力端子の Hi:1、Lo:0 を確認するために使うのが「17.3.2.3 ポートレジスタ(PORT)」です。




今回の回路では、ボタンが押されたときに0V:Lo、ボタンが離されているときに3.3V:Hiとなるため、 Lo:0 でボタンが押されていると判断できます。
ソースコードでは以下のように記載します。設定と同じように、バイト単位で一度に読み込むことも可能です。

  if( PORTD.PORT.BIT.B2 == 0 ){   // ボタンが押されたとき



C 出力のON/OFF

36行目、38行目、49行目で、端子出力の ON/OFF を行っています。
出力端子の Hi:1、Lo:0 を設定するために使うのが「17.3.2.2 データレジスタ(DR)」です。




今回の回路では、0V:Lo でLED消灯、3.3V:HiでLED点灯となります。
ソースコードでは以下のように記載します。設定と同じように、バイト単位で一度に書き込むことも可能です。

  PORTA.DR.BIT.B0 = 1;   // LED点灯


回路が正しく配線されていて、ソースコードに間違いがなければ、ビルド&ダウンロードして各ボタンとLEDが正常に反応します。配線ミスで動かないことは、よくあります。





次のレポート
>> ルネサス RX621 (8) 割り込み入力を使ってみる


前のレポート
<< ルネサス RX621 (6) ウォッチドッグタイマーを使って簡単なデバッグをしてみる


スポンサードリンク

TOPへ戻る


ご利用条件
 Copyright (C)SUWA TSUSHIN NETWORK. All Rights Reserved.