【问题标题】:Telosb Low Power Mode:Telosb 低功耗模式:
【发布时间】:2016-04-26 14:45:04
【问题描述】:

我正在做一个涉及切换 Telosb 状态的项目,我想知道如何让微尘“休眠”(低功耗)以及如何唤醒微尘。

【问题讨论】:

    标签: tinyos nesc


    【解决方案1】:

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

    但是,微控制器具有不同的低功耗级别,它们在唤醒条件、可以继续工作的外围设备、唤醒延迟和功耗方面有所不同。通常,在较低的睡眠级别下,mote 消耗的功率较少,但它们只需几个中断即可唤醒,并且大多数外围设备将停止运行。睡眠级别会根据在 mote 即将睡眠时正在运行的外围设备进行调整。

    睡眠级别可以被覆盖。这就是驱动程序所做的,根据他们的状态提供可接受的最低睡眠水平。例如,如果请求接收无线电数据包,无线电驱动程序可能会阻止进入最深睡眠级别,因为在这种情况下数据包会丢失(即,通知数据包接收的无线电中断不会唤醒 mote)。要覆盖睡眠级别,您的模块必须实现接口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

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2013-06-12
      相关资源
      最近更新 更多