Задержка
Данная часть библиотеки представляет функции для совершения программной и аппаратной задержки. При вызове функций задержки программа совершает их в предназначенное время и выполнение остальной части программы, не считая прерывания, останавливается.
Функции задержки не компилированы заранее, так как тактовая частота микроконтроллера может различаться в различных приложениях. Они компилируются каждый раз заново.
Функции
void sw_delay_ms(unsigned short count)
Программная задержка в миллисекундах. Применение функции предполагает использование оптимизации компилятором. Параметры:
void sw_delay_us(unsigned short count)
Программная задержка в микросекундах. Применение функции предполагает использование оптимизации компилятором. Параметры:
void hw_delay_ms(unsigned short count)
Аппаратная задержка в миллисекундах, основанная на таймере. Функция использует 8-битный таймер 0 микроконтроллера ATmega128. В зависимости от частоты такта может произойти ошибка в несколько миллисекунд. Более точную задержку можно сделать 16-битным таймером, но они обычно применяются в других целях. Параметры:
Пример
Пример применения обеих функций задержки:
#include <homelab/delay.h>
int main(void)
{
// Программная задержка 100 ms
sw_delay_ms(100);
// Аппаратная задержка 100 ms
hw_delay_ms(100);
}