Большинство микроконтроллеров (например, AVR, MSP430, PIC и т. Д.) Поддерживают несколько различных режимов ожидания. «Самый глубокий» спящий режим - это режим с наименьшим энергопотреблением (например, «Выключение питания», «Выключение»), но все системы синхронизации обычно останавливаются в этих режимах, и мне кажется, что единственный способ « Пробуждение от них происходит через внешний стимул (например, прерывания смены штырьков, сброс микросхемы). Я что-то пропустил? Существуют ли удивительно маломощные методы генерации периодического сигнала активизации для MCU?
Предполагая, что моя цель - минимизировать энергопотребление (то есть как можно дольше спать, как можно дольше бодрствовать), периодически просыпаясь для выполнения функции, каков общий способ достижения такого типа поведения? Для дальнейшего упрощения давайте предположим, что моя функция не имеет состояния (мне не нужно ничего вспоминать из прошлого, чтобы выполнить ее).
У меня был некоторый успех с использованием WDT на MSP430, чтобы получить этот эффект. Я просто сделал своей основной подпрограммой свою функцию: последняя строка позволяет истечению времени сторожевого таймера через определенный промежуток времени и переходит в LPM4.5 или как там называется режим «глубокого сна». Чистый результат - функция выполняется, MCU спит, WDT истекает, а чип сбрасывается до тошноты. Кажется, работает, просто интересно, есть ли «лучший», «более элегантный» или «более энергоэффективный» способ получения такого типа поведения?
Я еще не пробовал этот подход с AVR, но я думаю, что WDT более «энергоемкий» в AVR, чем на MSP430, поэтому он может быть менее привлекательным для работы с низким энергопотреблением. Возможно, не существует «универсального» подхода к низкому энергопотреблению, и вам приходится использовать инструменты, предоставляемые данной линейкой продуктов? Я знаю, что в новой линейке picoPower есть множество функций, таких как Event System и Sleep Walking, которые в некоторых случаях практически не требуют пробуждения процессора, если вы можете вписать свое приложение в эту структуру ...
Хорошо, достаточно моего блуждания, давай здесь, что ты должен сказать :)
Редактировать Конкретные примеры, иллюстрирующие методы, также было бы здорово!
источник
Ответы:
Большинство микросхем поддерживают кварцевый генератор с низким энергопотреблением 32,768 кГц с каким-либо прескалером и прерыванием по таймеру. Установите прескалер так, чтобы таймер отсчитывал медленно и прерывание происходило в нужный период.
Некоторые микро-камеры также имеют встроенный RC-таймер с низким энергопотреблением, если точное время не критично.
В техническом паспорте для любого маломощного микро перечислена мощность при работающем генераторе 32.768 (и ничего больше). Это довольно близко к нулю. Вы можете сделать математику, чтобы увидеть, приемлемо ли это, и сравнить ее с током, полученным сторожевым таймером.
Хорошо, например, на msp430f2013, давайте посмотрим на мощность в таблице данных.
0,5 мкА - это почти ноль, хотя это в пять раз больше истинного режима выключения.
Для более подробной информации, мы можем заглянуть внутрь таблицы.
Переход от LPM4 (все отключено) к LPM3 (работает генератор) - это разница между 0,5 мкА и 1 мкА.
Предположим, батарея CR2032 емкостью 225 мАч. Тогда время ожидания в LPM4 составляет около 50 лет, а в LPM3 - около 25 лет. 25 лет достаточно для многих применений, потому что ток потребления (во время самого измерения) доминирует в потреблении.
источник
Некоторые части имеют довольно маломощные осцилляторы (несколько мкА) для пробуждения, а некоторые PIC также имеют аппаратное обеспечение, позволяющее очень медленно увеличивать напряжение на выводе, чтобы пробуждаться - это может быть от внешнего конденсатора, установленного перед сном для зарядки над необходимый период бодрствования
источник
PIC с RTC могут иметь RTC, установленный в состояние тревоги, поэтому он будет активировать MCU в данный момент времени с внешним кристаллом 32,768 кГц. Они потребляют ~ 450 нА IIRC в режиме ожидания RTC +, но только 20 нА при выключенном RTC.
источник
Сторожевые таймеры AVR не так плохи, как вы думаете. Согласно спецификации ATTiny13A, потребление тока в режиме отключения при напряжении 3 В составляет 2 мкА без включенного WDT и 4 мкА с. Конечно, это в 2 раза больше, но сам ток достаточно мал для примерно 6,2 лет работы, то есть примерно столько же времени, сколько требуется батарее для самостоятельного разряда (источник: срок годности).
Кроме того, практически все, что вы подключите к микроконтроллеру, привлечет гораздо больше Фактически, самая сложная часть разработки такой маломощной схемы - отключение всего тока в остальной части схемы в течение периода ожидания.
Задержка включения также хорошо настраивается, от ~ 12 мс до 8 с, если память служит. Фактическая частота не имеет заметной разницы, если используются процедуры коротких прерываний: я справился с включением АЦП, выборкой 1K банка, подсчетом некоторых результатов и возвращением в спящий режим без заметного изменения общего потребления ( сглаживается большим конденсатором, чтобы компенсировать медлительность моего мультиметра).
Обратите внимание, что WDT не является точным инструментом хронометража, поэтому вы можете подключить внешний RTC. Те могут потреблять простые наноамперы, поэтому это должно быть хорошее соединение. Фактически, если рассматриваемый RTC может генерировать регулярные импульсы, вы могли бы использовать его в качестве источника активации вместо WDT за счет использования булавки.
источник