Funzione sleep in Erika Enterprise

Forum relativo alle schede FLEX, ERIKA Enterprise, RT-Druid, ScicosLab, ...

Moderator: paolo.gai

Locked
paolo_s

Funzione sleep in Erika Enterprise

Post by paolo_s »

Salve,

Sto lavorando con EE sulla board STM32F4-Discovery. Dato che la parte di cui mi sto occupando è indipendente dalle operazioni svolte dai task, questi di fatto non svolgono alcuna operazione, quindi mi servirebbe un qualche meccanismo per inserire delle attese programmate all'interno di essi. Al momento per far perdere tempo ai task utilizzo dei cicli, però mi piacerebbe introdurre un meccanismo in grado di far attendere ai task una quantità di tempo arbitraria, mantenendo però il task sempre attivo durante l'attesa. Ho visto che esistono librerie specifiche per la board che sto utilizzando che introducono la possibilità di inserire attese programmate, quello che mi interesserebbe però è sapere se in qualche modo questo fosse ottenibile anche usando i meccanismi già presenti in EE.

Ho provato ad utilizzare gli allarmi e gli eventi, però così facendo al task che metto in attesa viene revocata la CPU, mentre io vorrei che per tutto il tempo di esecuzione del task (quindi anche nel periodo di attesa) il task rimanga sempre nello stato RUNNING, esiste il modo di ottenere questo comportamento?

Grazie anticipatamente,

Paolo
paolo.gai
Administrator
Posts: 877
Joined: Thu Dec 07, 2006 12:11 pm

Re: Funzione sleep in Erika Enterprise

Post by paolo.gai »

puoi programmare un allarme sul task, che setta un evento. il task usa solo la getevent in un ciclo (non la waitevent) per attendere il settaggio dell'evento per uscire. In questo modo puoi fare una attesa attiva "fino all'istante T", il cui tempo speso realmente sarà T-tempo di partenza - preemption subite.

Se invece ti serve che il task faccia attesa attiva per esattamente X millisecondi indipendentemente dalle preemption, l'unica soluzione è una attesa attiva che devi tarare in precedenza.

PJ
paolo_s

Re: Funzione sleep in Erika Enterprise

Post by paolo_s »

Grazie mille! Funziona perfettamente!

Paolo
Locked