LoginSignup
3
0

More than 1 year has passed since last update.

RaspberryPi pico 複数の入力割り込み

Posted at

はじめに

前回TimerによるLチカを行いました。
ただ、ボタンの入力はポーリングで判断しておりましたが、割り込みで可能になりました。

マニュアルを良く読む

gpio_set_irq_enabled_with_callback()関数をよく読むと、
Currently the GPIO parameter is ignored, and this callback will be called for any enabled GPIO IRQ on any pin.
Googleで翻訳すると、
現在、GPIOパラメーターは無視され、このコールバックは、任意のピンで有効になっているGPIOIRQに対して呼び出されます。
と記載されています。
「GPIOパラメータは無視され」と書いてあります。

以前思うように動作しなかたロジック

gpio_set_irq_enabled_with_callback(15, 0x4u, false, callback_buttonL);
gpio_set_irq_enabled_with_callback(16, 0x4u, false, callback_buttonR);
gpio_set_irq_enabled(15, 0x4u, true);
gpio_set_irq_enabled(16, 0x4u, true);

上記を実行すると、GP15のボタンを押しても、callback_buttonR関数が呼ばれてしまいました。

意図した動作となったロジック

gpio_set_irq_enabled_with_callback(15, 0x4u, false, callback_button);
gpio_set_irq_enabled(15, 0x4u, true);
gpio_set_irq_enabled(16, 0x4u, true);

callbackの関数は1つにして、GP15とGP16と指定しました。

callback_button関数は、下記のようにしました。

void callback_button(uint gpio, uint32_t events)
{
    if(gpio == 15 && events == 4u){
        ' GP15の処理を記載
    }
    if(gpio == 16 && events == 4u){
        ' GP16の処理を記載
    }
}

まとめ

マニュアルは良く読むようにします。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0