DIO
DIO (汎用IO) は、ファームウェアの制御で任意に入力または出力することができます。
汎用IOを用いて以下のことが可能です。
デジタル入力 (H または L レベルの読み出し)
プルアップ (50kΩ, typ) を設定可能です。
デジタル出力 (H または L レベルの出力)
供給または吸い込み電流の最大値(3mA at 3V typ)です。
割り込み(立ち上がり、または、立ち下がり)
立ち上がり、立ち下がりを同時には検出できません。
スリープ時にも利用可能です。
ポート番号について
DIO は 0 番から 19 番まで 20 本が割り振られています。これらを順に DIO0 ... DIO19 と呼びます。以下に紹介する API では DIO の番号を直接指定します。
vPortAsInput(10); // set DIO10 as input
bool_t bPort = bPortRead(10);
// TRUE: DIO10 is LO(GND) level
// FALSE: DIO10 is HIGH(VCC) level
負論理について
TWELITE 無線マイコンにおいては、電源投入のリセット時のポート状態は High (Vcc) レベルになるため、TWELITE NET では原則として High(Vcc) レベルを 0, Lo(GND) レベルを 1 としています。
起動時の状態
電源投入時には全てのポートは以下の状態で初期化されます。
入力
プルアップ有り
入力
ポートを入力に変更するには vPortAsInput() を呼びます。
#define PORT_DI1 11 // DIO11
vPortAsInput(PORT_DI1);
ポートの状態を読み出すには、bPortRead() を呼びます。
bool_t bPortStat;
bPortStat = bPortRead(PORT_DI1);
出力
ポートを出力に変更するには vPortAsOutput(c) を呼びます。またポートの値を設定するには、vPortSetLo(), vPortSetHi(), vPortSet_TrueAsLo() を呼びます。
#define PORT_DO1 18 // DIO18
vPortSet_TrueAsLo(PORT_DO1, TRUE); // TRUE: set Lo
vPortAsOutput(PORT_DO1);
プルアップ
vPortDisablePullup() を呼び出すことで、プルアップを停止することができます。
#define PORT_DI1 11 // DIO11
vPortDisablePullup(PORT_DI1);
vPortAsInput(PORT_DI1);
ただし、プルアップを停止したポートでは、以下のような利用に注意が必要です。
入力ポートに何も接続されていない(または相当の状態)
余分な電流消費が発生する場合があります
設定が不要なポートのプルアップ停止
余分な電流消費が発生する場合があります
入力ポートを割り込み起床ピンとた場合
ボタン等を接続する場合は、外部のプルアップが必須です。
最終更新