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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
HX711 — модуль контролера ваги для Arduino

HX711 — модуль контролера ваги для Arduino

HX711 — це спеціалізований модуль для підключення тензометричних датчиків (датчиків ваги) до мікроко..

38.08грн.

Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR

Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR

Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR ESP32 має ап..

Arduino SIM800 GPRS HTTP GET запит

Arduino SIM800 GPRS HTTP GET запит

Привіт друзі! Ми з кожним разом знаємо все більш цікаві застосування GSM-модуля SIM800. На цей раз н..

Джойстик шилд для Arduino UNO MEGA

Джойстик шилд для Arduino UNO MEGA

Шилд джойстика для контролерів Arduino UNO та MEGAМожна використовувати для саморобних ігор, а також..

176.49грн.

Шилд акумулятора для WeMos D1

Шилд акумулятора для WeMos D1

Шилд для живлення мікроконтролера WeMos D1 від літієвого акумулятора. Дозволяє заряджати а..

74.42грн.

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

Watchdog і таймери ESP32

Watchdog і таймери ESP32

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

0.00грн.

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

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

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

0.00грн.