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