【概要】
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 & 0xFF007800);
(未使用ビットは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と状態変化の設定をしています。
(ディレイ関数は省略している)