SH-2マイコン その2

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. モード1:内蔵ROM無効モード ...極めて特殊。
  2. モード2:内蔵ROM有効モード
  3. モード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!