📌 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