This shows you the differences between two versions of the page.
|
patr:laboratoare:07 [2022/01/12 15:37] alexandru.ionita99 [Task-uri FreeRTOS] |
patr:laboratoare:07 [2022/02/14 15:16] (current) alexandru.ionita99 [Task-uri FreeRTOS] |
||
|---|---|---|---|
| Line 147: | Line 147: | ||
| === vTaskDelay() === | === vTaskDelay() === | ||
| - | O funcție foarte importantă din Task API este **void vTaskDelay( TickType_t xTicksToDelay );**. Aceasta înlocuiește clasica funcție **delay()** din Arduino. Funcția plasează **task-ul din care a fost apelată** în starea **BLOCAT** pentru o perioadă de X cicli de ceas, unde X este oferit ca parametru, timp în care alte task-uri, de exemplu cele cu o prioritate mai mică, pot accesa procesorul. | + | O funcție foarte importantă din Task API este **void vTaskDelay( TickType_t xTicksToDelay );**. Aceasta înlocuiește clasica funcție **delay()** din Arduino. Funcția plasează **task-ul din care a fost apelată** în starea **BLOCAT** pentru o perioadă de X ticks, unde X este oferit ca parametru, timp în care alte task-uri, de exemplu cele cu o prioritate mai mică, pot accesa procesorul. |
| - | Pentru a transforma timpul din milisecunde în cicli de ceas, utilizăm funcția **pdMS_TO_TICKS()**. | + | Pentru a transforma timpul din milisecunde în ticks, utilizăm funcția **pdMS_TO_TICKS()**. |
| <note warning>Utilizarea funcției **delay()** nu este recomandată împreună cu FreeRTOS, deoarece conduce la **suspendarea activității procesorului**, adică a tutoror task-urilor care rulează. Dacă în cazul programării clasice, acest aspect nu era o problemă (exista un singur task), în cazul FreeRTOS pot apărea efecte neașteptate.</note> | <note warning>Utilizarea funcției **delay()** nu este recomandată împreună cu FreeRTOS, deoarece conduce la **suspendarea activității procesorului**, adică a tutoror task-urilor care rulează. Dacă în cazul programării clasice, acest aspect nu era o problemă (exista un singur task), în cazul FreeRTOS pot apărea efecte neașteptate.</note> | ||
| Line 162: | Line 162: | ||
| { | { | ||
| ... | ... | ||
| - | // Intră în starea BLOCAT pentru 20 ticks (cicli de ceas) | + | // Intră în starea BLOCAT pentru 20 ticks |
| vTaskDelay( 20 ); | vTaskDelay( 20 ); | ||