見出し画像

マイコンプログラミング その3

前回クロック設定まで行いました。今回はポート設定をしてLEDを点灯させてみたいと思います。


IOポート設定

ポート選定

まずは、マイコンボードの回路図を確認して、何も回路が接続されていないポートを探します。今回はP34(ポート3の4ビット目という意味)が空いているのでここにLEDを接続して使いたいと思います。

マイコンの回路図より

汎用入出力設定

RX210マイコンは周辺機能(タイマーやAD変換モジュールなど)とIOを共有しています。このため、周辺機能の入出力として使いたいのか、汎用入出力として使いたいのか設定の必要があります。LEDの点灯は周辺機能は使わないので、汎用入出力としてIOポートを使用します。

早速P34を汎用入出力設定にしてみましょう。以下のレジスタで設定できます。

ルネサスのハードウェアマニュアルより。

各ポートを1ビット単位で割り当てできます。0なら汎用入出力、1なら周辺機能となりますね。初期値が0なので改めて設定の必要もないですが、一応行います。
P34ならばポート3の4ビット目なので「PORT3.PMR.BIT.B4 = 0」とします。

入力か出力かの設定

汎用入出力としての設定でだけではなく、汎用入出力を入力で使うのか出力で使うのかの設定も行う必要があります。以下のレジスタで設定できます。

ルネサスのハードウェアマニュアルより。

こちらも、各ポートを1ビット単位で割り当てできます。0なら入力、1なら出力となりますね。
今回は出力ポートとしてP34を使いたいので、「PORT3.PDR.BIT.B4 = 1」とします。

HardwareSetup関数に処理追加

上記IOポート設定処理をHardwareSetupに追加しました。

void HardwareSetup(void)
{
	// クロックソース選択の保護解除
	SYSTEM.PRCR.WORD = 0xA501;
		
	// クロックソースをメインクロックに設定 
	SYSTEM.SCKCR3.BIT.CKSEL = 2;

	// 設定完了待ち
	while(SYSTEM.SCKCR3.BIT.CKSEL != 2)
		;
					
	// システムクロック(ICK)を64分周に設定
	SYSTEM.SCKCR.BIT.ICK = 5;

    // メインクロックの発振動作
	SYSTEM.MOSCCR.BIT.MOSTP = 0;

	// 設定完了待ち
	while(SYSTEM.MOSCCR.BIT.MOSTP != 0)
		;
								
	// クロックソース選択の保護
	SYSTEM.PRCR.WORD = 0xA500;

	// P34を汎用入出力に設定
	PORT3.PMR.BIT.B4 = 0x00;
	
	// P34を出力に設定
	PORT3.PDR.BIT.B4 = 1;
}

最後に

以下のようにLEDと電流制限用に抵抗を接続しました。
(手持ちの余っていた抵抗なのでLEDがだいぶ暗くなります…)

LEDの接続図

こんな感じになりました。
写真じゃわかりにくいですが、LEDが光っています。

この記事が気に入ったらサポートをしてみませんか?