I/Oポート用ライブラリ


【概要】

I/Oポートに関連するライブラリ関数は下記の3つになります。

(1) 外部割り込み(INT割り込み)の制御
(2) プルアップの設定制御
(3) 状態変化割り込みの制御

【関数詳細】

用意されている関数は下表となります。

関数名 機 能 と 書 式
CloseINTX
  (X = 0 … 4 )

指定外部割込みを禁止とする
対応する割り込みフラグもクリアする
【書式】
  void CloseINT0(void);

ConfigINTX
 (X = 0 … 4 )
外部割込みの設定
いったん割り込みフラグをクリアする
【書式】void ConfigINTX(unsigned int config);

configは下記の3項の組み合わせとする
 @割り込みエッジ選択
  RISING_EDGE_INT   FALLING_EDGE_INT
 A割り込み許可、禁止
  EXT_INT_ENABLE  EXT_INT_DISABLE
 B割り込み優先レベル設定
  EXT_INT_PRI_0  EXT_INT_PRI_1  EXT_INT_PRI_2
  EXT_INT_PRI_3  EXT_INT_PRI_4  EXT_INT_PRI_5
  EXT_INT_PRI_6  EXT_INT_PRI_7
【例】
  ConfigINT0(RISING_EDGE_INT & EXT_INT_ENABLE & EXT_INT_PRI_4);
ConfigCNPullups

プルアップ抵抗のオンオフ制御
【書式】 void ConfigCNPullups(long int config);


configは32ビットの値で下記を示す
 下位:CNPU1レジスタ  上位:CNPU2レジス
【例】
  ConfigCNPullups(0x000303F0); 

ConfigIntCN 状態変化割り込みの許可・禁止と割り込みレベル設定
【書式】  void ConfigIntCN(long int config);

configは32ビットの値で下記3項の組み合わせとする
 @割り込みの許可、禁止
  CHANGE_INT_ON  CHANGE_INT_OFF
 A割り込み優先レベル
  CHANGE_INT_PRI_0  CHANGE_INT_PRI_1  CHANGE_INT_PRI_2
  CHANGE_INT_PRI_3  CHANGE_INT_PRI_4  CHANGE_INT_PRI_5
  CHANGE_INT_PRI_6  CHANGE_INT_PRI_7
 BCN0-CN21の状態変化割り込み許可、禁止
  下位22ビットがCNXの状変割込の許可、禁止を示す
  下位:CNEN1レジスタ  上位:CNEN2
【例】
  ConfigIntCN(CHANGE_INT_ON & CHANGE_INT_PRI_4 & 0x
FF007800);
   (未使用ビットは1にする)

関数とは別に下記のマクロが用意されています。

マクロ名 機 能 と 書 式
EnableCNX
DisableCNX
  (X = 0 〜 21)
状態変換割り込みXの割り込み許可、禁止
EnableINTX
DisableINTX
 (X = 0 〜 4)
外部割込みXの許可、禁止
SetPriorityIntX
 (X = 0 〜 4)
外部割込みXの優先レベルの個別設定
【書式】  SetPriorityIntX(priority);
  priorityは0〜7のいずれか


【基本的な使い方】

(1) ライブラリヘッダファイルのインクルード
 I/Oポート用ライブラリ関数を使うときには、下記のファイルのインクルードが
必要です。

   #include  <ports.h>    //ライブラリを使うために必要なインクルードファイル

(2) ライブラリのプロジェクトへの登録
 プロジェクトには下図のようにPIC24Fのライブラリの登録が必要です。



(3) パラメータの記述の注意
  ConfigIntCN()のパラメータの記述では、上位1バイトは割り込み許可と
  割り込みレベルの設定に使われるので 22ビットの状態変化割り込みの
  許可禁止をするデータは下記のように最上にはFFを記述する必要が
  あります。(3個のパラメータのANDが行われるため)
  
   ConfigIntCN(CHANGE_INT_ON & CHANGE_INT_PRI_4 &0xFFXXXXXX);
   (XXXXXXの下位22ビットがCN0〜CN21の状態変化割り込みの制御用)
     (実際にはCN0〜CN30まで存在するが、CN23まで可能になっている)

【使用例1】

 実際の使用例を下記リストに示します。
この例ではスイッチのINT0割り込みで4個のLEDの表示を反転させています。
また16進デジタルスイッチの4ビットの出力変化の割り込みで、4個のLEDを
スイッチの状態に合わせて点灯させています。
main関数の最初でライブラリ関数を使って、INT0と状態変化の設定をしています。




   (ディレイ関数は省略している)


   目次ページへ