Telosb低功耗模式:

时间:2016-04-26 14:45:04

标签: tinyos nesc

我正在开展一项涉及切换Telosb状态的项目,我想知道如何将这些内容放入" sleep" (低功率)以及如何唤醒它们。

1 个答案:

答案 0 :(得分:1)

当任务队列为空时,微尘将由TinyOS调度程序自动进入睡眠(低功耗)模式(所以基本上什么也没做 - 没有代码可以执行)。中断被中断唤醒,例如,定时器中断(发生定时器事件),无线电中断(接收到无线电数据包)或外部IO引脚中断(用户按下按钮)。

然而,微控制器具有各种低功耗水平,这些功能在唤醒条件,外设可以继续工作,唤醒延迟和功耗方面有所不同。通常,在较低的睡眠水平下,微尘消耗较少的功率,但它们只能通过少量中断唤醒,大多数外围设备将停止运行。睡眠水平根据微尘即将睡眠时的外围设备进行调整。

可以覆盖睡眠等级。这就是司机所做的事情,根据他们的状态提供最低的可接受睡眠水平。例如,如果请求无线电分组接收,则无线电驱动器可以防止进入最深的睡眠水平,因为在那种情况下分组将丢失(即,通知关于分组接收的无线电中断不会唤醒该微尘)。要覆盖睡眠级别,您的模块必须实现接口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
};

一般的结论是,如果你只开发应用程序,你永远不必担心睡觉或醒来。

另请参阅:Microcontroller Power Management