To jest stara wersja strony!
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 10, // 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 tskIDLE_PRIORITY, // 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.