オートフォーカスIC < 2/3 >

ソフトウェア

上記 の動作をさせるためには,アセンブラ言語のスタートアップルーチンとC言語ソースを使用する.この模式図を図5に示す.

 

Fig.5図5 スタートアップルーチンとC言語関数

スタートアップルーチンは,アセンブラソースであり,以下の記述を行う.

  • 割込みに利用するベクタアドレス
  • CCRレジスタの設定と main 関数へのジャンプ
  • pragma指定関数の定義とレジスタ操作

C言語ソースでは,以下の記述を行う.

  • main 関数
  • 割り込みハンドラ
  • 初期設定関数
  • pragma指定
  • extern関数指定

 

 

フローチャート

全体の動作は,図1の通りだが,これをフローチャートにすると図6の通りとなる. 割込みハンドラは,C言語ソースの中に記述した.この部分は,基本的に割込み要因のクリアをすれば良いが,判りにくいところでもあるので具体的なレジスタ名を示した.
ここでは各デバイスの初期化ルーチンは省略した.

 

Fig.6図6 フローチャート

 

 

クロックの切換えについて

END 信号入力後,クロック同期でデータをシリアル受信するため,AFIC の READ-CLK とシリアル同期クロックを同期させなければならない.H8でのクロック作成は,ITU3 と ITU4 を最初から同期モードで初期化,動作させておき, ITU4 の出力を停止させておく.END 信号入力後に ITU4 の出力を許可することで ITU3 と同期したクロックを作成することができる.この機能は,ITU3 と ITU4 のみが可能である.また,同期モードでの初期化は,途中でクロックの周期を変更しても有効であるので 50 kHz ←→ 1MHz の切換えができる.

 

H8LIB-s.C からの抜粋

 

ITU.TOER.BIT.EA4 = 0; /* TIOCA4端子出力禁止 = ITU3 だけ出力 */
・・・・・・・・・
ITU.TOER.BIT.EA4 = 1; /* TIOCA4端子出力許可 = ITU3,ITU4 を出力 */

 

 

各ソースファイル

  • reseti.mar … スタートアップルーチン
  • afic5.c … main(),グローバル変数,各初期化,データ取得,シリアル通信.
  • afic5.sub … リンク指定ファイル
  • H8LIB-s.C … SCI, ITU, DMA 各初期化関数.
  • LCD-a.C … 液晶表示サブルーチン(デバッグ用)
  • userIO.h … 液晶,LED, AFIC, テストポートの設定.

※Interface2001年2月号に掲載されたプログラムを書き換えて作成しました.特に LCD-a.C は,ほとんどそのまま利用させていただきました.引用については参考文献の項をご覧ください.

< 次へ >

コメントは停止中です。