Примечание:
Можно пройти альтернативным методом, через макрос F_CPU вниз к компилятору от Makefile. Очевидно, в том случае, нет *define должно использоваться утверждение.
Функции в этом header файле – это обертки вокруг основных функций активного ожидания - <util/delay_basic.h>. Они предназначены для удобства, здесь могут быть определены значения времени, и чтобы ожидать не нужно множество циклов. Идея состоит в том, что постоянные выражения во время компиляции будут устранены, так что могут использоваться выражения с плавающей точкой для того чтобы вычислить число циклов задержки, которые необходимы на основной частоте CPU, обходя макрокоманду F_CPU.
Функции позволяют задавать значения задержек непосредственно в микросекундах, и миллисекундах, используя макрокоманду F_CPU как тактовую частоту центрального процессора (в Герц). Поэтому её необходимо не забыть указать перед компиляцией. Если это требование не выполнено(не найдено), результирующая задержка будет намного длиннее (и в основном непредсказуема), и приложения, которые ни где больше не используют вычисления с плавающей точкой, испытает серьезное раздувание кода библиотечными подпрограммами с плавающей точкой.
Функции |
|
void |
_delay_us (double __us) |
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).
Пользователь
не будет
информирован
об уменьшении
разрешающей
способности.
Исполняет
задержку __
us
микросекунды,
использование
_delay_loop_1().
Макрокоманда F_CPU как предполагается, будет определена к константе, определяющей тактовую частоту CPU (в Герц).
Максимальная возможная задержка 768 us / F_CPU в MHz.
Если пользователь запрашивает задержку большую, чем максимально возможная _delay_us() вместо этого будет автоматически вызываться _delay_ms(). Пользователь в этом случае информирован не будет.