ToCoNet_vSleep()
解説
WakeTimer によるスリープを行います。
起床割り込みについて
WakeTimer 以外の割り込み源を設定することもできます。本関数呼び出し前にあらかじめ設定しておきます。
E_EVENT_TOCONET_ON_SLEEP イベント
スリープ直前に、各ユーザ定義イベント処理関数に E_EVENT_TOCONET_ON_SLEEP
が伝達されます。
ToCoNet_vSleep()
が再帰的に呼び出されないように、以下のコード例では E_EVENT_NEW_STATE
の処理としています。
スリープ時間について
WakeTimer は 32kHz のオシレータの精度により動作する都合、起床精度についてはオシレータの精度が大きく関わります。内蔵のオシレータは必ずキャリブレーションを実施してから利用するようにしてください(特にsToCoNet_AppContext
での指定がなければコールドスタート時に TWENET ライブラリ内で実行されます)。
極端に短いスリープ間隔は設定できません。概ね30ms程度を下限とします。
起床時間については WakeTimer の精度次第ですが、もっとも良い場合でも±1ms程度の誤差は発生します。
引数
uint8
u8Device
使用するウェイクアップタイマー。
uint32
u32Periodms
スリープ期間を ms で指定する。
bool_t
bPeriodic
周期スリープを行うかどうかを指定します。 周期スリープを指定した場合、前回の起床時間からの経過時間を差し引いて次の起床を行います。すでに次の周期をすぎていた場合は本関数呼び出し時点から指定期間のスリープとし、周期スリープを指定しない場合、本関数呼び出し時点から指定期間のスリープを行います。
bool_t
bRamOff
FALSE
なら RAM を保持した状態でスリープを行います。TRUE
なら、RAMを保持しないスリープを行います。
戻り値
なし。
サンプル
最終更新