Таймери та FreeRTOS на ESP32

ESP32 працює під керуванням FreeRTOS, і окрім апаратних таймерів (hw_timer_t) у ньому доступні програмні таймери FreeRTOS. Вони дозволяють запускати функції за розкладом, керувати періодичними подіями та при цьому економити апаратні ресурси.

Що таке програмні таймери FreeRTOS

Програмні таймери FreeRTOS створюються та керуються за допомогою спеціальних функцій ядра. На відміну від апаратних таймерів, вони не залежать від «заліза», а працюють у контексті задач ОС. Основні особливості:

  • Не використовують апаратні таймерні блоки ESP32 — звільняють ресурси.
  • Можуть бути одноразовими (one-shot) або періодичними (auto-reload).
  • Виконують обробник (callback) в окремій службовій задачі FreeRTOS.

Основні функції API

  • xTimerCreate() — створення таймера.
  • xTimerStart() — запуск таймера.
  • xTimerStop() — зупинка таймера.
  • xTimerDelete() — видалення таймера.

Приклад: миготіння світлодіода через FreeRTOS таймер


#include 

#define LED_PIN 2

// Дескриптор таймера
TimerHandle_t blinkTimer;

// Обробник таймера
void blinkCallback(TimerHandle_t xTimer) {
  static bool ledState = false;
  digitalWrite(LED_PIN, ledState);
  ledState = !ledState;
}

void setup() {
  pinMode(LED_PIN, OUTPUT);

  // Створюємо таймер: ім’я, період 500 мс, auto-reload = true, ID = 0, callback
  blinkTimer = xTimerCreate("BlinkTimer", pdMS_TO_TICKS(500), pdTRUE, 0, blinkCallback);

  if (blinkTimer != NULL) {
    xTimerStart(blinkTimer, 0); // Запускаємо таймер
  }
}

void loop() {
  // Основний цикл порожній — усе робить таймер
}

Що відбувається: кожні 500 мс виконується callback, і світлодіод на GPIO 2 змінює свій стан.

Порівняння з апаратними таймерами

Характеристика Апаратні таймери (hw_timer_t) Програмні таймери FreeRTOS
Залежність від заліза Працюють напряму з блоками таймерів ESP32 Виконуються в задачах ОС
Точність Висока, до мікросекунд Мілісекундний діапазон, залежить від системного тика
Швидкість виконання ISR — працює дуже швидко Є затримка на планування задач
Навантаження на CPU Мінімальне Трохи вище, ніж у hw_timer
Зручність Потрібно писати обробник ISR Callback у звичайному коді, легше відлагоджувати

Коли використовувати програмні таймери

  • Коли точність у мікросекундах не критична.
  • Для керування подіями в мілісекундному діапазоні (миготіння, оновлення інтерфейсу, періодичні завдання).
  • Коли апаратні таймери вже зайняті.

Висновок

Таймери FreeRTOS на ESP32 — зручний інструмент для періодичних завдань. Якщо потрібна висока точність, використовуйте апаратні hw_timer_t. Якщо ж важлива простота і гнучкість — підійдуть програмні таймери FreeRTOS.

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

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

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

Ніжки для лазерного гравера CNC 4 шт. с кріпленням

Ніжки з МДФ для побудови CNC лазерного гравера. Виконують роль власне ніжок, а також повноцінного кр..

179.78грн.

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino?

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino?

Що таке широтно-імпульсна модуляція (ШІМ) і як вона використовується в Arduino? Широт..

ESP32: незалежне керування двома кроковими двигунами NEMA17

ESP32: незалежне керування двома кроковими двигунами NEMA17

ESP32: незалежне керування двома кроковими двигунами NEMA17 Коротко: нижче — два готових варіанти: (..

Ремінь зубчастий 6 мм для 3D-принтера

Ремінь зубчастий 6 мм для 3D-принтера

Відрізок зубчастого ременя шириною 6 мм.Застосовується для переміщення каретки 3D-принтера або CNC п..

49.26грн.

Модуль на DIN-рейку для Arduino Nano — 8 дискретних входів, I2C, SPI, UART

Модуль на DIN-рейку для Arduino Nano — 8 дискретних входів, I2C, SPI, UART

Головний модуль автоматизації для створення домашніх і промислових систем управління на базі Arduino..

557.49грн.

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

ESP32 таймери: Багатозадачність з апаратними таймерами

ESP32 таймери: Багатозадачність з апаратними таймерами

ESP32 таймери: Багатозадачність з апаратними таймерами ESP32 — це потужний мікроконтролер з двояд..

0.00грн.

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32

Вимірювання часу та точні затримки на ESP32 ESP32 має потужну систему апаратних таймерів, які доз..

0.00грн.