Sleep

Сон относится к форме управления питанием, при которой процессору можно дать указание перейти в различные уровни «сна». Используйте этот тег для обсуждения спящего режима.


Современные микроконтроллеры предназначены для использования в приложениях с батарейным питанием, где экономия энергии может иметь первостепенное значение. Путем «перевода процессора в спящий режим» можно добиться значительной экономии энергии.

Кроме того, некоторые спящие режимы полезны для управления такими вещами, как обработка критичных по времени событий или выполнение преобразований АЦП без слишком большого цифрового шума.


Спящие режимы

Процессор Atmega328P, используемый в Arduino Uno, Duemilanove, Pro Mini, Nano и других, например, имеет следующие спящие режимы:

  • Режим ожидания

    В основном полезно для контролируемого пробуждения от прерывания. Полезно для приложений с очень критичным временем, например для создания видеоданных.

  • Режим шумоподавления АЦП

    Это улучшает шумовую среду для аналого-цифрового преобразователя (АЦП), позволяя выполнять измерения с более высоким разрешением. Если ADC включен, преобразование начинается автоматически при входе в этот режим.

  • Режим энергосбережения

    То же, что и в режиме отключения питания, за исключением того, что если Таймер 2 включен, он продолжает работать. Полезно для экономии энергии, но при этом синхронизировать событие с помощью Таймера 2.

  • Расширенный режим ожидания

    Этот режим идентичен режиму энергосбережения, за исключением того, что Осциллятор продолжает работать. В режиме расширенного ожидания устройство выходит из спящего режима за шесть тактов.

  • Режим ожидания

    Этот режим идентичен режиму Power-down, за исключением того, что Осциллятор продолжает работать. Из режима ожидания устройство выходит из спящего режима за шесть тактов.

    (Это то, что говорится в техническом описании — разница между режимом ожидания и расширенным режимом ожидания кажется незначительной)

  • Режим отключения питания

    В этом режиме внешний осциллятор останавливается, в то время как внешние прерывания, отслеживание адреса двухпроводного последовательного интерфейса и сторожевой таймер продолжают работать (если он включен). Только внешний сброс, сброс системы сторожевого устройства, прерывание сторожевого устройства, сброс по отключению, совпадение адреса двухпроводного последовательного интерфейса, внешнее прерывание на INT0 или INT1 или прерывание по смене контакта могут разбудить MCU. Этот спящий режим в основном останавливает все сгенерированные часы, что позволяет работать только с асинхронными модулями.


Пробуждение

Вообще говоря, включенные прерывания разбудят процессор. К ним относятся такие вещи, как:

  • Прерывания при смене вывода
  • Внешние прерывания
  • Прерывание сторожевого таймера
  • Обнаружено затухание
  • Прерывания по времени r (если запущены таймеры)

Сброс всегда выводит процессор из спящего режима.

Вопросы, связанные с [sleep]: