クラス ExtInt -- 外部イベントによる割込みに対する I/O ピン設定¶
合計22本の割り込みラインがあります。このうち16本は GPIO ピンから、残りの6本は内部ソースから割り込むことができます。
ライン0から15までは、任意のポートから対応するラインにマッピングできます。つまり、0番線は Px0 (x は A, B, C, ...)に、1番線は Px1 (x は A, B, C, ...)にマッピングできます。
def callback(line):
print("line =", line)
注記: ExtInt は自動的に gpio ラインを入力として設定します。
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
これで、X1 ピンに立ち下がりエッジが見られるたびにコールバックが呼び出されます。注意: 機械的な押しボタンには「バウンス」があり、スイッチを押したり離したりすると複数のエッジが発生することがよくあります。 http://www.eng.utah.edu/~cs5780/debouncing.pdf にデバウンスの様々なテクニックとともに詳細な説明があります。
同じピンに2つのコールバックを登録しようとすると例外が発生します。
pin が整数として渡された場合、内部割り込みソースの1つにマップされると仮定されます。pin は16から22の範囲でなければなりません。
それ以外のすべての pin オブジェクトは、ピンマッパーを経由してgpioピンの1つに割り当てられます。
extint = pyb.ExtInt(pin, mode, pull, callback)
有効なモードは pyb.ExtInt.IRQ_RISING, pyb.ExtInt.IRQ_FALLING, pyb.ExtInt.IRQ_RISING_FALLING, pyb.ExtInt.EVT_RISING, pyb.ExtInt.EVT_FALLING, pyb.ExtInt.EVT_RISING_FALLING です。
IRQ_xxx モードのみがテストされています。EVT_xxx モードはスリープモードと WFE 命令に関係します。
有効なプル値は pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN, pyb.Pin.PULL_NONE です。
EXTI 割り込みラインを必要とするドライバもこのコードを使えるように、C API も用意されています。使用可能な関数については extint.h を、使用例については usrsw.h を参照してください。
コンストラクタ¶
- class pyb.ExtInt(pin, mode, pull, callback)¶
ExtInt オブジェクトを作成します:
pin
は割り込みを有効にするピンです(ピンオブジェクトまたは有効なピン名)。mode
は次のいずれかです: -ExtInt.IRQ_RISING
- 立上がりエッジでトリガー。 -ExtInt.IRQ_FALLING
- 立下がりエッジでトリガー。 -ExtInt.IRQ_RISING_FALLING
- 立上がりまたは立下がりエッジでトリガー。pull
は次のいずれかです: - pyb.Pin.PULL_NONE - プルアップまたはプルダウン抵抗を使わない。 - pyb.Pin.PULL_UP - プルアップ抵抗を有効にする。callback
は、割込みがトリガーされたときに呼び出す関数です。コールバック関数は、割り込みがトリガーされたラインをただ1つの引数として受け取らなければなりません。
クラスメソッド¶
- classmethod ExtInt.regs()¶
EXTI レジスタの値をダンプします。
メソッド¶
- ExtInt.disable()¶
ExtInt オブジェクトに関連付けられている割込みを無効にします。これはデバウンスに便利です。
- ExtInt.enable()¶
無効にした割り込みを有効にします。
- ExtInt.line()¶
ピンがマップされているライン番号を返します。
- ExtInt.swint()¶
ソフトウェアからコールバックをトリガーします。
定数¶
- ExtInt.IRQ_FALLING¶
立下がりエッジで割込
- ExtInt.IRQ_RISING¶
立上がりエッジでの割込み
- ExtInt.IRQ_RISING_FALLING¶
立上がりエッジまたは立下がりエッジでの割込み