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

Уроки Arduino видимость переменных для начинающих

Переменные в Arduino IDE разделяются на глобальные и локальные. Глобальные переменные доступ..

Озвучка тира Arduino Nano и MP3-проигрыватель

Озвучка тира Arduino Nano и MP3-проигрыватель

Постановка задачіЗадачею проекту являється виготовлення пристрою озвучення пострілів 6-ти одиниць зб..

Модуль 8 — Фінальний проєкт Arduino: ідеї та збірка

Модуль 8 — Фінальний проєкт Arduino: ідеї та збірка

Модуль 8 — Фінальний проєкт (курс для початківців) Мета модуля: застосувати всі отримані знання..

ESP32 WiFi модуль на DIN-рейку без корпусу

ESP32 WiFi модуль на DIN-рейку без корпусу

Плата продається без корпусуГоловний модуль для побудови домашньої чи промислової системи автоматичн..

772.57грн.

Світлодіодна матриця 8х8 з керуючим контролером MAX7219

Світлодіодна матриця 8х8 з керуючим контролером MAX7219

Готовий блок світлодіодної матриці 8х8 з підтримкою каскадного увімкнення декількох ідентичних модул..

87.37грн.

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

Watchdog і таймери ESP32

Watchdog і таймери ESP32

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

0.00грн.

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

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

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

0.00грн.