7/23のつづき
マイコンボード概要
○CPU:SH-2ファミリー SH7144F フラッシュメモリモデル
○動作クロック CPU:48MHz ペリフェラル:24MHz
○拡張コネクタ
- A0-21 アドレスバス
- D0-15 データバス
- ~WRH,~WRL,~RD,~CS0-3 バス制御
- ~RES リセット
- PE5-15 汎用I/O 兼 MTU ( マルチファンクション・タイマ・パルス・ユニット ) I/O
- PA2,5,8,9,15 汎用I/O 兼 MTUクロック 兼 IRQ
- PB2,3,4,5 汎用I/O 兼 MTU出力制御 兼 IRQ
- AN0-7 A/Dコンバータ入力
- ~WDTOVF ウォッチドッグタイマ・オーバーフロー
- TX0,RX0 シリアルICポート0 (TXD0,RXD0)
○シリアルコネクタ シリアルICポート1 (TXD1,RXD1)
○拡張RAM SRAM512kバイト
動作モード
※このボードでは動作モードはモード2に限定されている。
- モード1:内蔵ROM無効モード ...極めて特殊。
- モード2:内蔵ROM有効モード
- モード3:シングルチップモード ...モード2でも同じことができる。
メモリマップ(モード2)
- 0000_0000〜0003_FFFF 内蔵ROM(256kバイト)
- 0020_0000〜003F_FFFF CS0
- 0040_0000〜007F_FFFF CS1 外部RAM(512kバイト)(〜0047_FFFF)
- 0080_0000〜00BF_FFFF CS2
- 00C0_0000〜00FF_FFFF CS3
- FFFF_8000〜FFFF_BFFF 周辺I/O
- FFFF_E000〜FFFF_FFFF 内蔵RAM(8kバイト)
6月号 第6章
汎用I/Oプログラミング。
サンプルプログラムを参考に、PB2,3,4,5にLEDとスイッチを接続し、I/Oのテストをおこないました。回路は下記のようなかんじです。
ピアノスイッチがあればよかったのですが、手元になかったのでかっこ悪い実験回路になりました。
汎用出力のテストプログラム
void main(void){ // PB2-PB5を出力に設定 PFC.PBIOR.BIT.B2 = 1; PFC.PBIOR.BIT.B3 = 1; PFC.PBIOR.BIT.B4 = 1; PFC.PBIOR.BIT.B5 = 1; // PB2-PB5のLEDを順に点滅させる。 while(1){ for(k=0;k<4;k++){ switch(k){ case 0: PB.DR.BIT.B2 = 1; PB.DR.BIT.B3 = 0; PB.DR.BIT.B4 = 0; PB.DR.BIT.B5 = 0; break; case 1: PB.DR.BIT.B2 = 0; PB.DR.BIT.B3 = 1; PB.DR.BIT.B4 = 0; PB.DR.BIT.B5 = 0; break; case 2: PB.DR.BIT.B2 = 0; PB.DR.BIT.B3 = 0; PB.DR.BIT.B4 = 1; PB.DR.BIT.B5 = 0; break; case 3: PB.DR.BIT.B2 = 0; PB.DR.BIT.B3 = 0; PB.DR.BIT.B4 = 0; PB.DR.BIT.B5 = 1; break; } for(j=0;j<1000000;j++) ; } }
汎用入力のテストプログラム
void main(void){ // シリアルポートの初期化 init_SCI(); // PB2-PB5を出力に設定 PFC.PBIOR.BIT.B2 = 0; PFC.PBIOR.BIT.B3 = 0; PFC.PBIOR.BIT.B4 = 0; PFC.PBIOR.BIT.B5 = 0; // PB2-PB5のスイッチが押されたらメッセージを表示する。 while(1){ if (PB.DR.BIT.B2 == 0) prstr("PB2 Switch ON!\n\n"); if (PB.DR.BIT.B3 == 0) prstr("PB3 Switch ON!\n\n"); if (PB.DR.BIT.B4 == 0) prstr("PB4 Switch ON!\n\n"); if (PB.DR.BIT.B5 == 0) prstr("PB5 Switch ON!\n\n"); for(j=0;j<1000000;j++) ; } }
→動作確認OK!