Lab 2.2 Sisteme de Operare - FreeRTOS
Definire Problema
Realizarea unei aplicații pentru MCU care va rula minim 3 task-uri cu FreeRTOS
Aplicația va rula minim 3 task-uri printre care
- Button Led - Schimbare stare LED la detecția unei apăsări pe buton.
- un al doilea Led Intermitent în faza în care LED-ul de la primul Task e stins
- Incrementare/decrementare valoare a unei variabile la apăsarea a doua butoane care va reprezenta numărul de recurențe/timp în care ledul de la al doilea task se va afla într-o stare
- Task-ul de Idle se va utiliza pentru afișarea stărilor din program, cum ar fi, afișare stare LED, și afișare mesaj la detecția apăsării butoanelor, o implementare fiind ca la apăsarea butonului sa se seteze o variabila, iar la afișare mesaj - resetare, implementând mecanismul provider/consumer.
Indicații pentru implementare
1. sa se implementeze comunicarea intre Taskuri ca provider consumer, adica:
- task-ul care generează date, provider, stochează rezultatele într-o variabila globala/semnal, instaleaza un semafor prin xSemaphoreGive()
- task-ul care utilizează aceste date, consumer, citește aceasta variabila/semnal. reseteaza semaforul prin xSemaphoreTake()
- vezi referinta : https://www.freertos.org/a00122.html
- vezi referinta: https://www.freertos.org/Embedded-RTOS-Binary-Semaphores.html
de ex: task de UI (LCD sau Serial) preia informația din niște variabile-semnale globale și raportează
2. A se urma principiile prezentate la curs Sisteme Secvențiale pentru recurenta si offset
- stabilirea rezonabila a recurentei pentru a diminua incarcarea procesorului - prin xTaskDelay( delay) in bucla infinita.
- stabilirea ofsetului, intru a activa în ordinea cuvenita task urile - prin xTaskDelay( delay) inainte de bucla infinita.
- pentru xTaskDelay se utiliza referinta: https://www.freertos.org/a00127.html
3: Task-ul de raportare pentru Secvențial cu utilizare STDIO printf() catre LCD va fi rulat in in FreeRtos - un task separat.
Pontaj:
- nota 5 - simpla aplicație de demonstrare sistem FreeRTOS
- +0.5 - pentru fiecare task FreeRTOS (3 x 0.5 x 2 = 3.0)
- +1.0 - Pentru improvizarea unui Task suplimentar implementând o sarcina diferita de cea de la laborator
- +1.0 - pentru demonstrarea probelor de implementare fizica
NOTA: pontaj maxim posibil doar la prezentare functionare fizica !!
penalități
- -1 - penalizare pentru fiecare săptămâna întârziere de la deadline
- -1 - penalizare pentru nerespectare format raport
- -1 - pentru NE-utilizare STDIO pentru raportare mesaje la LCD
xSemaphoreTake
- 30 September 2022, 2:01 PM