Intel Edison APIリファレンス

garretlab
mraa_gpio_edge_mode

名称

mraa_gpio_edge_mode

説明

mraa_gpio_isr()で作成したGPIOピンの割り込みハンドラのトリガの(再)設定を行います。既存の割り込みハンドラのトリガを変更することができます。

モードに、MRAA_GPIO_EDGE_NONEを指定した場合は、割り込みを受け付けなくなりますが、割り込みハンドラ自身は起動したままです。このため、再度、別のモードに指定した場合は、割り込みを受け付けるようになります。mraa_gpio_isr_exit()は、割り込みハンドラ自身を終了します。

書式

mraa_result_t mraa_gpio_edge_mode(mraa_gpio_context dev, mraa_gpio_edge_t mode);

引数

dev GPIOのコンテキスト。mraa_gpio_init()で作成します。
mode 割り込みを検出するイベント。以下の4つが指定できます。
 MRAA_GPIO_EDGE_NONE:割り込みなし
 MRAA_GPIO_EDGE_BOTH:立ち上がり、立下りの両方
 MRAA_GPIO_EDGE_RISING:立ち上がり
 MRAA_GPIO_EDGE_FALLING:立下り

戻り値

呼出に成功したときは、MRAA_SUCCESSが返却されます。

呼出が失敗したときは、MRAA_SUCCESS以外が返却されます。

使用例

動作確認するだけの、何の意味もない使用例です。printf()がスレッドセーフかどうかもわかっていません…

#include <mraa.h>

void isr(void *arg) {
        printf("Interrupt detected.\n");
        fflush(stdout);
}

int main() {
        mraa_gpio_context pin1, pin2, pin3;
        int i = 0;

        pin1 = mraa_gpio_init(13);
        pin2 = mraa_gpio_init(11);

        mraa_gpio_dir(pin1, MRAA_GPIO_OUT_LOW);
        mraa_gpio_dir(pin2, MRAA_GPIO_IN );

        mraa_gpio_mode(pin1, MRAA_GPIO_STRONG);

        mraa_gpio_isr(pin2, MRAA_GPIO_EDGE_RISING, isr, NULL);

        for (;;) {
                mraa_gpio_write(pin1, 1);
                sleep(1);

                mraa_gpio_write(pin1, 0);
                sleep(1);

                if (i == 5) {
                        mraa_gpio_edge_mode(pin2, MRAA_GPIO_EDGE_BOTH);
                } else if (i == 10) {
                        mraa_gpio_isr_exit(pin2);
                }
                i++;
        }

        return EXIT_SUCCESS;
}

その他

特になし。

バージョン

MRAA 0.7.3



メニューを表示するためにJavaScriptを有効にしてください。

Intel Edisonで遊ぶページ
Copyright © 2015 garretlab all rights reserved.
inserted by FC2 system