ESP32 Timer Groups: архітектура та використання
Мікроконтролер ESP32 має потужну систему апаратних таймерів, організованих у дві групи — Timer Group0 та Timer Group1. Кожна група містить по два незалежні таймери, що в сумі дає чотири 64-бітні таймери, які працюють з високою точністю.
Архітектура Timer Groups
- Timer Group0 — включає два таймери:
TG0T0таTG0T1. - Timer Group1 — включає два таймери:
TG1T0таTG1T1. - Кожен таймер — 64-бітний лічильник із можливістю ділення частоти та генерації переривань.
- Усі таймери можуть працювати незалежно, паралельно виконуючи різні завдання.
Особливості Timer Groups
- Таймери можуть працювати як у режимі одноразового запуску, так і в режимі періодичного повторення.
- Переривання таймерів можна використовувати для виконання функцій без блокування
loop(). - Timer Group0 тісно пов’язаний із Watchdog — системним сторожовим таймером ESP32.
Приклад: використання таймера з Timer Group0
hw_timer_t* timer = NULL;
void IRAM_ATTR onTimer() {
digitalWrite(2, !digitalRead(2)); // мигати світлодіодом
}
void setup() {
pinMode(2, OUTPUT);
// Ініціалізація таймера з Group0, канал 0
timer = timerBegin(0, 80, true); // дільник 80 → 1 МГц (1 тик = 1 мкс)
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 500000, true); // 500000 мкс = 0.5 с
timerAlarmEnable(timer);
}
void loop() {
// основний код не блокується
}
Що відбувається: створюється таймер із Timer Group0, який викликає обробник кожні 0,5 секунди. В обробнику блимає світлодіод на GPIO2, при цьому основний цикл loop() залишається вільним для інших завдань.
Приклад: використання таймера з Timer Group1
hw_timer_t* timer1 = NULL;
void IRAM_ATTR onSecondTimer() {
Serial.println("Спрацював таймер з Group1");
}
void setup() {
Serial.begin(115200);
// Ініціалізація таймера з Group1, канал 0
timer1 = timerBegin(2, 80, true); // Group1 Timer0 → ID 2
timerAttachInterrupt(timer1, &onSecondTimer, true);
timerAlarmWrite(timer1, 1000000, true); // кожна 1 секунда
timerAlarmEnable(timer1);
}
void loop() {
// можна виконувати будь-які інші завдання
}
Що відбувається: використовується таймер із Timer Group1. Щосекунди викликається обробник, у якому виводиться повідомлення в Serial.
Висновки
- ESP32 має 2 групи таймерів: Group0 та Group1.
- У кожній групі по 2 таймери, усього доступно 4 апаратних таймери.
- Таймери можуть працювати незалежно, що зручно для багатозадачності.
- Timer Group0 часто використовується для системного Watchdog.
Таким чином, Timer Groups дозволяють реалізовувати кілька паралельних завдань із високою точністю, звільняючи основний цикл програми.
Модуль зарядки та захисту акумулятора 3,7В або 4,2В 1А
Плата для зарядки літіумних акумуляторів 3,6 - 4,2В та живлення його навантаження.Зарядка відбуваєть..
26.20грн.
DC-DC підвищуючий модуль 10А 12-50В
Імпульсний перетворювач стабілізованої постійної напруги, що підвищує на основі мікросхеми TL494. Пл..
247.71грн.
Спортивне табло таймер своїми руками
Постановка задачі Задачею проекту є виготовлення спортивного таймеру для міні-футбольного турні..
Символьний LCD індикатор 16х2 синій
Символьний двохрядний рідкокристалічний індикатор. 16 символів в одному рядку.Синя підсвіткаЗ'єднува..
83.25грн.
Режим сну SIM800L з Arduino Nano: енергозбереження та пробудження по SMS
Режим сну SIM800L та пробудження Arduino Привіт, друзі! Тему цієї статті запропонували підписники..






