====== 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.