Режим энергосбережения Telosb:
Я работаю над проектом, который включает в себя переключение состояния Telosb, я хотел бы знать, как поставить пылинки в "сон" (малое энергопотребление) и как их разбудить.
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
тип микросхемы, описывающий возможные уровни мощности В случае TelosB, который основан на микроконтроллере MSP430, этот тип определен в 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
};
Общий вывод таков: если вы только разрабатываете приложения, вам никогда не придется беспокоиться о том, чтобы заснуть или проснуться.
Смотрите также: Управление питанием микроконтроллера