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 дозволяють реалізовувати кілька паралельних завдань із високою точністю, звільняючи основний цикл програми.
Уроки Arduino видимость переменных для начинающих
Переменные в Arduino IDE разделяются на глобальные и локальные. Глобальные переменные доступ..
Озвучка тира Arduino Nano и MP3-проигрыватель
Постановка задачіЗадачею проекту являється виготовлення пристрою озвучення пострілів 6-ти одиниць зб..
Модуль 8 — Фінальний проєкт Arduino: ідеї та збірка
Модуль 8 — Фінальний проєкт (курс для початківців) Мета модуля: застосувати всі отримані знання..
ESP32 WiFi модуль на DIN-рейку без корпусу
Плата продається без корпусуГоловний модуль для побудови домашньої чи промислової системи автоматичн..
772.57грн.
Світлодіодна матриця 8х8 з керуючим контролером MAX7219
Готовий блок світлодіодної матриці 8х8 з підтримкою каскадного увімкнення декількох ідентичних модул..
87.37грн.






