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 дозволяють реалізовувати кілька паралельних завдань із високою точністю, звільняючи основний цикл програми.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Датчик дотику ємнісний

Датчик дотику ємнісний

Датчик видає дискретний сигнал на виході, коли до нього доторкаються пальцем.Його можна використовув..

28.76грн.

Датчик світла

Датчик світла

Інтелектуальний дискретний датчик світла. Робоча напруга живлення 4...6 В постійного струму. Чутливі..

34.43грн.

SMD світлодіод 0603

SMD світлодіод 0603

SMD світлодіоди видимого діапазону для поверхневого монтажу на плату Типорозмір 0603 Червоний 619 ..

2.10грн.

Символьний LCD індикатор 16х2 синій

Символьний LCD індикатор 16х2 синій

Символьний двохрядний рідкокристалічний індикатор. 16 символів в одному рядку.Синя підсвіткаЗ'єднува..

83.25грн.

Шестерня для зубчатого ременю на 16 зубців під вісь 5 мм

Шестерня для зубчатого ременю на 16 зубців під вісь 5 мм

Використовується для передачі та редукції обертаючого моменту від двигуна до вісі 5 ммКількість зубц..

38.58грн.

Рекомендовані товари

Watchdog і таймери ESP32

Watchdog і таймери ESP32

Watchdog і таймери ESP32 ESP32 має вбудований Watchdog Timer (WDT), який використовується для зах..

0.00грн.

ESP32: Високоточні вимірювання сигналів за допомогою таймерів

ESP32: Високоточні вимірювання сигналів за допомогою таймерів

ESP32: Високоточні вимірювання сигналів за допомогою таймерів ESP32 оснащений потужними апаратним..

0.00грн.