コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

LEDを点灯させてみる(2)

割り込みマスク・ビットをクリアして割り込みが掛かる状態にするマクロの「EnableInterrupts;」が走った後に続く、初期化関数 mcu_init();について説明していきたいと思います。

mcu_init()

mcu_init()では、LEDを点灯させるためなど、このプログラムで行いたい処理のレジスタの初期内容を書いています。

void mcu_init(void){

  SOPT1_COPT = 0;   //WatchDogTimerの停止
  
  //LED接続ポートのOUTPUT設定
  PTEDD_PTEDD2 = 1;
  PTEDD_PTEDD3 = 1;
  PTFDD_PTFDD0 = 1;
  PTFDD_PTFDD1 = 1;
  PTCDD_PTCDD2 = 1;
  PTCDD_PTCDD4 = 1;
  PTFDD_PTFDD5 = 1;
  PTDDD_PTDDD2 = 1;

  //キーボード割り込みの設定
  KBI1PE_KBIPE0 = 1;  //キーボード割り込みポート0をセット
  PTGPE_PTGPE0 = 1;   //ポートG0をプルアップする
  
  KBI1PE_KBIPE1 = 1;  //キーボード割り込みポート1をセット
  PTGPE_PTGPE1 = 1;   //ポートG0をプルアップする
  
  KBI1PE_KBIPE6 = 1;  //キーボード割り込みポート2をセット(KBIPE6に注意)
  PTGPE_PTGPE2 = 1;   //ポートG0をプルアップする
  
  KBI1SC_KBIE = 1;    //KBI1のキーボード割り込みを許可する
  
  RTCSC_RTCLKS = 0;   //RTCLKSとRTCPSで割り込み時間を決める。
  RTCSC_RTCPS = 14;   //1=1ms , RTCLKS=0とRTCPS=14で500msとなる  

  RTCSC_RTIE = 1;     //リアタイムカウンタの割り込みを許可する
  
  return ;
}

ウォッチドックタイマの停止

とりあえずウォッチドックタイマを未使用にします。参考サイトの「S08ではじめるマイコン制御プログラミング(2)」の内容と同じです。

  SOPT1_COPT = 0;   //WatchDogTimerの停止

SOPT1レジスタのCOPTを0にすると、ウォッチドックタイマがDisebleになります。

LED接続ポートのOUTPUT設定

LEDに接続されているポートをOUTPUTポートに設定します。下記にDEMOJMの回路図を示します。

この回路図より、LEDに接続されているポートが確認できますので、これらのポートを出力設定にします。

  //LED接続ポートのOUTPUT設定
  PTEDD_PTEDD2 = 1;
  PTEDD_PTEDD3 = 1;
  PTFDD_PTFDD0 = 1;
  PTFDD_PTFDD1 = 1;
  PTCDD_PTCDD2 = 1;
  PTCDD_PTCDD4 = 1;
  PTFDD_PTFDD5 = 1;
  PTDDD_PTDDD2 = 1;

下記にポートEの入出力設定の説明表を示します。PTEDDレジスタでビット単位に設定できます。1がOUTPUT出力です。

次回はキーボード割り込み設定のところを説明したいと思います。

本当にやりたいことリスト

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム