Spis treści

FreeRTOS

System operacyjny czasu rzeczywistego (ang. real-time operating system, RTOS) – komputerowy system operacyjny, który został opracowany tak, by spełnić wymagania narzucone na czas wykonywania żądanych operacji.

Przykłady użycia na chipach ESP32. Używanie RTOS na ESP8266 jest mocno utrudnione.


Zadania

Funkcja uruchamiana jako zadanie musi być nieskończoną pętlą:

void nazwa_funkcji(void* parameters)
{
  while (true)
  {
    ...    
    vTaskDelay(pdMS_TO_TICKS(1000));  // pauza przed następną iteracją w milisekundach
  }
}


Zadanie tworzy się w

void setup()
{
  xTaskCreate(...);
}


Pojedyncze zadanie

xTaskCreate(
  nazwa_funkcji,    // Function that should be called
  "nazwa_zadania",  // Name of the task (for debugging)
  3000,             // Stack size (bytes)
  NULL,             // Parameter to pass
  tskIDLE_PRIORITY, // Task priority
  NULL              // Task handle
);


Tworzenie wielokrotnie zadania używającego tej samej funkcji

for(int i = 0; i < ilosc_powtorzen; i++)
{
  TaskParams* params = new TaskParams;
  params->param = i;
  String s = "Task_" + String(i);
  char* taskName = strdup(s.c_str());
 
  xTaskCreate(
    nazwa_funkcji,     // Function that should be called
    taskName,          // Name of the task (for debugging)
    3000,              // Stack size (bytes)
    params,            // Parameter to pass
    2,                 // Task priority
    NULL               // Task handle
  );
}


Task priority oznacza priorytet dla tego zadania. Im wyższa liczba tym większy priorytet (tskIDLE_PRIORITY - najniższy priorytet).
Task handle służy do odwoływania się do tego zadania z innych części kodu. Pozwala np. wstrzymać i wznowić wykonywanie zadania.