2016-04-26 12 views
1

私は、Telosbの状態を切り替えることを含むプロジェクトに取り組んでいます。私はモートをどのように「スリープ」(低消費電力)にして、モチーフを起こすかを知りたいと思います。Telosb Low Power Mode:

答えて

1

タスクキューが空の場合、モンテは自動的にTinyOSスケジューラによってスリープ(低電力)モードになります(基本的に何もしない - 実行するコードなし)。モートは、タイマ割り込み(タイマイベント発生)、無線割り込み(無線パケット受信)、外部IOピン割り込み(ユーザがボタンを押した)などの割り込みによって起動します。

しかし、マイクロコントローラには、ウェイクアップ条件、動作を継続可能な周辺機能、ウェイクアップ遅延、消費電力など、さまざまな低電力レベルがあります。一般的に、スリープレベルが低い場合、モートの消費電力は少なくなりますが、数回の割り込みで目覚めさせることができ、ほとんどのペリフェラルは動作を停止します。スリープレベルは、モートがスリープしようとしている瞬間にどの周辺機器が動作しているかに基づいて調整されます。

スリープレベルを上書きすることができます。これは運転手が行うもので、その状態に基づいて許容できる最低の睡眠レベルを提供します。例えば、無線パケットの受信が要求されている場合、パケットが失われてしまう(すなわち、パケット受信を通知する無線割り込みが目覚ましを起こさない)ため、無線ドライバは最も深いスリープレベルに入ることを防ぐことができる。

component McuSleepC { 
    provides interface McuSleep; 
    provides interface PowerState; 
    uses interface PowerOverride; 
} 

interface PowerOverride { 
    async command mcu_power_t lowestState(); 
} 

PowerOverrideは、コンポーネントMcuSleepCに配線する必要があります。スリープレベルを上書きするには、あなたのモジュールが呼び出され、それは時間lowestState最低許容スリープレベルを返すように、インターフェイスPowerOverrideを実装する必要があります

mcu_power_tは、可能な電力レベルを説明するチップ固有のタイプです。 MSP430マイクロコントローラに基づいておりTelosBの場合、このタイプはTOS /チップ/ MSP430/msp430hardware.hで定義されています

enum { 
    MSP430_POWER_ACTIVE = 0, 
    MSP430_POWER_LPM0 = 1, 
    MSP430_POWER_LPM1 = 2, 
    MSP430_POWER_LPM2 = 3, 
    MSP430_POWER_LPM3 = 4, 
    MSP430_POWER_LPM4 = 5 
}; 

一般的な結論は、あなただけのアプリケーションを開発する場合、あなたは決して持っていないということです眠るか起きるか心配する。

も参照してください。Microcontroller Power Management