📌 Timer

Timer — встроенный периферийный модуль в MCU или SoC, предназначенный для отсчёта времени, создания задержек, генерации периодических событий и управления PWM.

🧠 Как работает

Аппаратный таймер основан на счётчике, который:

  • Увеличивается (или уменьшается) по сигналу от системного Clock
  • При совпадении с установленным значением вызывает Interrupts
  • Может работать в различных режимах:
    • Basic: простой счёт до overflow
    • Compare Match: генерация сигнала при совпадении
    • PWM Mode: генерация PWM-сигнала
    • Capture Mode: измерение внешних сигналов

Обычно реализуется как 8-, 16- или 32-битный регистр с возможностью настройки делителя частоты (prescaler).

⚙️ Где применяется

ОбластьПримеры использования
PWMГенерация сигнала определённой скважности
DelaysТочное ожидание времени
Real-Time OSКвантование времени планировщика
Event TimestampingОтметка времени при внешних событиях
Watchdog TimerКонтроль зависаний системы

💻 Пример (STM32 HAL, PWM)

TIM_OC_InitTypeDef sConfigOC = {0};
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 128; // duty cycle
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

📐 Компоненты таймера

КомпонентНазначение
CounterОсновной счётный регистр
PrescalerДелитель входной частоты
Compare UnitСравнение счётчика с заданным значением
Auto-ReloadЗначение overflow (предел счёта)
Interrupt LineГенерация прерывания

🧩 Связанные технологии

  • PWM — выходной режим таймера

  • RTC — специализированный таймер реального времени

  • Interrupts — реакция на события таймера

  • SysTick — системный таймер в ARM Cortex-M

✅ Преимущества

  • Высокая точность по сравнению с программными задержками

  • Аппаратная автономность (не грузит CPU)

  • Гибкая конфигурация: PWM, тайминг, захват, сравнение

❌ Недостатки

  • Ограниченность битности (переполнение счётчика)

  • Требует настройки прерываний и правильного делителя

  • Не всегда хватает количества таймеров в MCU