Florian's most newest Diary

ふろりあんの再最新日記

割り込みを2つ同時に動かす

こんなかんじ。

#include "mbed.h"

DigitalOut myled(LED1);
bool gLEDOn=true;
Ticker gTicker;
DigitalOut myled2(LED2);
bool gLEDOn2=true;
Ticker gTicker2;

static void tick();
static void tick2();

int main() {
    gTicker.attach(tick,1);
    gTicker2.attach(tick2,2);
    while(1) {
        wait(0.2);
    }
}

void tick()
{
    if (gLEDOn)
    {
        myled = 1;
    }
    else
    {
        myled = 0;
    }
    gLEDOn=!gLEDOn;
}

void tick2()
{
    if (gLEDOn2)
    {
        myled2 = 1;
    }
    else
    {
        myled2 = 0;
    }
    gLEDOn2=!gLEDOn2;
}

EI,DIはなんかよしなにやってくれてるのかな?いや、このプログラムにはクリティカルセクション無いけど。実行時間を順当に考えると割り込み中にもう一つの割り込みが来てるはずなんだけど。

 とりあえず無視されないことがわかっただけでも収穫。