2008年11月21日金曜日

TOPPERS/JSP for秋月電子H8 3069 LANボード (2)

引き続き備忘録です。

  1. 特定のI/OポートのHigh/Lowを見る方法。
    • 例えばポート4に属する8つのI/Oポート(H8 3069のピン配置では#18-21, #23-26)の値は、H8P4DRマクロを使ってアクセスします。
    • ポート4の1ビット目は(*((UB *) H8P4DR) & 0x01)でRead/Writeアクセスできます。
    • 電圧Highは1、電圧Lowは0となります。
  2. 特定のI/Oポートの入出力方向の取得/設定方法
    • まず、H8ではI/Oポートの入出力方向を設定するレジスタ(DDR: Data Direction Register)が書き込み専用です。その為、現在の設定値を保持する為にTOPPERS/JSPでは特別にカーネル内部に設定値保持の為の変数を設けています。
    • 入出力方法の設定には、sil_wrb_ddrサービスコールを用います。例えば、ポート2の1ビット目から6ビット目までは出力、7ビット目と8ビット目は入力、と設定する場合は、sil_wrb_ddr(IO_PORT2, 0x3F)とコールします。出力に設定するI/Oポートのビットは1を、入力に設定するI/Oポートのビットは0を指定します。
    • 設定済みの値を読み出したい場合は、sil_reb_ddr(IO_PORT2)とコールし、その返り値をチェックします。
    • 設定済みの値に対して特定のビットだけをON/OFFしたい場合は、sil_anb_ddr (既存値とのAND演算)、sil_orb_ddr (既存値とのOR演算)を用います。
  3. タスクのウエイト
    • 通常のCプログラムにおけるsleep関数のような事をしたい場合は、dly_tskサービスコールを用います。引数は1つだけで、ミリ秒単位の時間を表す整数です。
    • 例えば、1秒間ウエイトしたい場合は、dly_tsk(1000)とコールします。

0 件のコメント: