1

Telosb の状態を切り替えるプロジェクトに取り組んでいます。モートを「スリープ」(低電力) にする方法と、モートを起動する方法を知りたいです。

4

1 に答える 1

1

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

ただし、マイクロコントローラーには、ウェイクアップ条件、動作を継続できる周辺機器、ウェイクアップ遅延、および消費電力が異なるさまざまな低電力レベルがあります。通常、スリープ レベルが低いと、モートの消費電力は少なくなりますが、わずか数回の割り込みでモートを起動することができ、ほとんどの周辺機器は動作を停止します。スリープ レベルは、モートがスリープしようとしている瞬間に動作している周辺機器に基づいて調整されます。

睡眠レベルはオーバーライドできます。これはドライバーが行うことであり、状態に基づいて許容可能な最低の睡眠レベルを提供します。たとえば、無線パケットの受信が要求された場合、無線ドライバは、パケットが失われるため、最も深いスリープ レベルに入るのを防ぐことができます (つまり、パケット受信について通知する無線割り込みは、モートを起動しません)。スリープ レベルをオーバーライドするには、モジュールが interface を実装する必要があります。これにより、呼び出さPowerOverrideれた時点で受け入れ可能な最低のスリープ レベルが返されます。lowestState

interface PowerOverride {
    async command mcu_power_t lowestState();
}

PowerOverride次に、コンポーネントに配線する必要がありますMcuSleepC:

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

mcu_power_t可能な電力レベルを表すチップ固有のタイプです。MSP430 マイクロコントローラーに基づく TelosB の場合、このタイプはtos/chips/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
};

一般的な結論としては、アプリケーションを開発するだけであれば、寝たり起きたりすることを心配する必要はまったくないということです。

参照:マイクロコントローラの電源管理

于 2016-04-27T18:41:17.373 に答える