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

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

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

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

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

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

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

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

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

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


<util/delay.h>: Удобные функции циклов задержки.

Описание

    #define F_CPU 1000000UL  // 1 MHz
    //#define F_CPU 14.7456E6
    #include <util/delay.h>

Примечание:

Можно пройти альтернативным методом, через макрос F_CPU вниз к компилятору от Makefile. Очевидно, в том случае, нет *define должно использоваться утверждение.

Функции в этом header файле – это обертки вокруг основных функций активного ожидания - <util/delay_basic.h>. Они предназначены для удобства, здесь могут быть определены значения времени, и чтобы ожидать не нужно множество циклов. Идея состоит в том, что постоянные выражения во время компиляции будут устранены, так что могут использоваться выражения с плавающей точкой для того чтобы вычислить число циклов задержки, которые необходимы на основной частоте CPU, обходя макрокоманду F_CPU.

 

Функции позволяют задавать значения задержек непосредственно в микросекундах, и миллисекундах, используя макрокоманду F_CPU как тактовую частоту центрального процессора (в Герц). Поэтому её необходимо не забыть указать перед компиляцией. Если это требование не выполнено(не найдено), результирующая задержка будет намного длиннее (и в основном непредсказуема), и приложения, которые ни где больше не используют вычисления с плавающей точкой, испытает серьезное раздувание кода библиотечными подпрограммами с плавающей точкой.

Функции

void 

_delay_us (double __us)

void 

_delay_ms (double __ms)


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

void _delay_ms

(

double 

__ms

 ) 

 

Исполняет задержку __ms миллисекунды, используя _delay_loop_2().

Макрокоманда F_CPU как предполагается, будет определена в константе, определяющей тактовую частоту CPU (в Герц).

Максимальная возможная задержка 262.14 ms / F_CPU в MHz.

Если пользователь запрашивает задержку большую, чем максимально возможная, _delay_ms() обеспечивает уменьшенные разрешающей способности. В этом режиме _delay_ms() будет работать с разрешающей способностью 1/10 ms, обеспечивая задержки до 6.5535 секунд (независимо от тактовой частоты CPU). Пользователь не будет информирован об уменьшении разрешающей способности.

void _delay_us

(

double 

__us

 ) 

 

Исполняет задержку __us микросекунды, использование _delay_loop_1().

Макрокоманда F_CPU как предполагается, будет определена к константе, определяющей тактовую частоту CPU (в Герц).

Максимальная возможная задержка 768 us / F_CPU в MHz.

Если пользователь запрашивает задержку большую, чем максимально возможная _delay_us() вместо этого будет автоматически вызываться _delay_ms(). Пользователь в этом случае информирован не будет.

Hosted by uCoz