信号割込(Arduino-Pico環境)

最終更新日:2022/4/4

RP2040のデジタル入力PINに対する割込処理について調査します。
AVRの場合信号割込は限られたPINのみ対応します。
STM32F103の場合、ほぼすべてのPINが割込入力に対応可能です。
RP2040はというと、デジタルPINとして使用出来る20pinすべて対応している様です。
https://github.com/earlephilhower/arduino-pico/discussions/357 にearlephilhower氏の書込があります。
すべてのデジタルI/Oに対応しているようです。

ちょっと脱線しますが、先人のブログに興味深い実験結果がありました。
https://www.tablix.org/~avian/blog/archives/2021/05/measuring_interrupt_response_times_part_3/

RP2040のPIOの応答はとても良いという事です。MicroPythonはインタプリタ環境だけれども割込応答が比較的良い事も判りました。
残念ながら検証コードは公開されていないようです。


ArduinoForumで確認しました。NanoRP2040での信号割込に関し External interrupts not working という書込をされている方が見えました。内容を見る限りArduino(AVR)と同様のAPIで使える様です。実際に書いてみました。

PiPicoの場合オンボードLEDはGPIO25です。ボタンに割付いている番号が判りませんでしたので、GPIO16を入力に使用する事にしました。
起動時緑LEDは点灯しています。GPIO16をGNDに落とすと緑LEDは消灯します。GPIO16を再びGNDに落とすと緑LEDは点灯します。

/*
 * 2022年4月4日 T.Wanibe
 * 信号割込動作確認
 * ボタンを押したら割込が発生してLEDの点灯反転
 * 最大2093056バイトのフラッシュメモリのうち、スケッチが60080バイト(2%)を使っています。
 * 最大262144バイトのRAMのうち、グローバル変数が11160バイト(4%)を使っていて、ローカル変数で250984バイト使うことができます。
 */
#define         led     25                      // オンボードLED
#define         button  16                      // input for IRQ in pin 16
int             led_state       = LOW;          // high / low state of led
//--------------------
void led_ISR(){
        led_state = !led_state;
}
//--------------------
void setup() {
        pinMode(led, OUTPUT);                   // Led as output on pin 14
        pinMode(button, INPUT_PULLUP);          // input on pin 16, pulled high
        attachInterrupt(digitalPinToInterrupt(button), led_ISR, LOW);
}
//--------------------
void loop(){
        digitalWrite(led, led_state);
}



戯言(nonsense)に戻る


問い合わせ頁の表示


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

商標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。