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 дозволяють реалізовувати кілька паралельних завдань із високою точністю, звільняючи основний цикл програми.
Датчик дотику ємнісний
Датчик видає дискретний сигнал на виході, коли до нього доторкаються пальцем.Його можна використовув..
28.76грн.
Датчик світла
Інтелектуальний дискретний датчик світла. Робоча напруга живлення 4...6 В постійного струму. Чутливі..
34.43грн.
SMD світлодіод 0603
SMD світлодіоди видимого діапазону для поверхневого монтажу на плату Типорозмір 0603 Червоний 619 ..
2.10грн.
Символьний LCD індикатор 16х2 синій
Символьний двохрядний рідкокристалічний індикатор. 16 символів в одному рядку.Синя підсвіткаЗ'єднува..
83.25грн.
Шестерня для зубчатого ременю на 16 зубців під вісь 5 мм
Використовується для передачі та редукції обертаючого моменту від двигуна до вісі 5 ммКількість зубц..
38.58грн.







