mbedのsleep方法は?(続き)

mbed.orgでsleepを検索すると出てきました。

__wfi();

でsleepするようです。(__wfi();はWait For Interruptという意味らしい。)

ただし、その前にタイマーとかで割り込みをかけるようにしないと、そのままsleepしっぱなしになるようです。

フォーラムの記事の中で書かれていたものをタイマーの時間を秒単位にして使っています。

void sleep_end() {}
void sleep_sec(float s=0.0) {
    Timeout t;
    if (s > 0.0) {
        t.attach(sleep_end, s);
    }
    __wfi();
}

そこで、 wait(10.0 * 60.0); // wait 10 min 部分をsleep_sec(15.0 * 60.0); // sleep 15 min に書き換えて、昨日から稼働していますが、チップはけっこう熱くなってます。
本当にsleepしているのかなぁ?

カテゴリー: ARM, mbed タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA