Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

аСтраницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


<avr/sleep.h>: Управление питанием и спящие режимы.

Описание

а#include <avr/sleep.h>

Использование команд sleep может позволить значительно уменьшать энергопотребление МК. МК AVR могут быть переведены в различные спящие режимы. Обратитесь к описанию используемого МК.

Чтобы поместить МК в спящий режим в этом header файле есть несколько макро. Самый простой путь состоит в том, чтобы произвольно установить использование спящего режима set_sleep_mode() (обычно значение по умолчанию спящего режима, -а все периферийные часы все еще выполняются),а затем вызывается sleep_mode(). Если не стоит цель блокировать CPU аппаратно (до аппаратного сброса), прерывания в этом пункте нужно разрешить. Эта макрокоманда автоматически заботится, чтобы допустить режиму бездействия в CPU перед движением бездействовать, и отключать его впоследствии снова.

Поскольку эта объединенная макрокоманда может вызвать условие гонки в небольшом количестве ситуаций, индивидуальные шаги управления бездействием допускают (SE) биту, и фактически издание sleep команда обеспечена в макроопределении sleep_enable(), sleep_disable(), and sleep_cpu(). Это также учитывает сценарии испытания-бездействия, которые заботятся не об отсутствии прерывания, которое пробудит устройство от бездействия.

Пример:

ааа #include <avr/interrupt.h>
ааа #include <avr/sleep.h>
 
ааа ...
ааааа cli();
ааааа if (some_condition) 
аааааа {
ааааааа sleep_enable();
ааааааа sei();
ааааааа sleep_cpu();
ааааааа sleep_disable();
ааааа  }
ааааа sei();

Эта последовательность гарантирует атомное испытание some_condition с заблокируемыми прерываниями. Если условие выполнено, режим бездействия будет готов, и SLEEP команда будет намечена немедленно после команды SEI. Как инструкция право после SEI как гарантируют, будет выполнен прежде, чем прерывание могло вызвать, это уверено, что устройство будет действительно помещаться, чтобы бездействовать.

Макроопределения Функций Сна.

void 

set_sleep_mode (uint8_t mode)

void 

sleep_mode (void)

void 

sleep_enable (void)

void 

sleep_disable (void)

void 

sleep_cpu (void)

 

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

Примечание:

Некоторые из этих способов не доступны на всех устройствах. См. datasheet для целевого устройства для доступных способов сна.

#define 

SLEEP_MODE_IDLE   0

#define 

SLEEP_MODE_ADC   _BV(SM0)

#define 

SLEEP_MODE_PWR_DOWN   _BV(SM1)

#define 

SLEEP_MODE_PWR_SAVE   (_BV(SM0) | _BV(SM1))

#define 

SLEEP_MODE_STANDBY   (_BV(SM1) | _BV(SM2))

#define 

SLEEP_MODE_EXT_STANDBY   (_BV(SM0) | _BV(SM1) | _BV(SM2))

 

Документация макроопределений

#define SLEEP_MODE_ADC   _BV(SM0)

режим пониженного шума от АЦП.

#define SLEEP_MODE_EXT_STANDBY   (_BV(SM0) | _BV(SM1) | _BV(SM2))

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

#define SLEEP_MODE_IDLE   0

ждущий режим.

#define SLEEP_MODE_PWR_DOWN   _BV(SM1)

режим пониженного энергонпотребления.

#define SLEEP_MODE_PWR_SAVE   (_BV(SM0) | _BV(SM1))

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

#define SLEEP_MODE_STANDBY   (_BV(SM1) | _BV(SM2))

режим ожидания.

Документация функций.

void set_sleep_mode

(

uint8_t 

mode

 ) 

 

Выбор спящего режима.

Устанавливает разряды регистра MCUCR для выбора "спящегоежима. Возможные значения для mode:

-а SLEEP_MODE_ADCа -а режимаа пониженногоаа шумаа от АЦП;

-а sleep_mode_EXT_standbyа -а расширенныйа режим ожидания;

-а SLEEP_MODE_IDLE - ждущий режим;

-а SLEEP_MODE_PWR_DOWN - режим пониженного энергонпотребления;

-а SLEEP_MODE_PWR_SAVE - режим энергосбережения;

-а SLEEP_MODE_STANDBY - режим ожидания.

Пример использования:ааа set__sleep_mode (SLEEP_MODE_IDLE) ;

void sleep_cpu

(

void 

 

 ) 

 

Переводит МК в спящий режим . Бит SE должен быть установлен заранее, и рекомендуется впоследствии сбросить его.

void sleep_disable

(

void 

 

 ) 

 

Сбрасывает бит SE (запрещение спящего режима).

void sleep_enable

(

void 

 

 ) 

 

Устанавливает бит SE (разрешение спящего режима).

void sleep_mode

(

void 

 

 ) 

 

Переводит МК в "спящий" режим. Выход устройства из этого режима зависит от установки, вынполненной с помощью функции set_sleep_mode ().

Пример использования: set_sleep_mode (SLEEP_MODE_IDLE) ;

sleepа mode();

 

 

Hosted by uCoz