gaje ニュース

2009年4月29日

小ネタ:フラグを8秒間保持

あるイベントが起きたら、フラグを最後のイベントから一定時間だけ(たとえば8秒)立てておきたいとき、下のようなコードだとちょっとだめです

----------
volatile uint8_t flag;

ISR(TIMER0_OVF_vect) // 割り込みは8秒おき
{
    flag = 0;
}

int main()
{
    while (1) {
        if (check_event()) {
            flag = 1;
        }
    }
}
----------

これだと、割り込みハンドラでクリアするフラグが、8秒前に立ったものか1秒前に立ったものか区別つかないからです。

Read more…

Posted by Gan at 4:57 pm | comments(6) | マイコン