Page 1 of 1

Funzione sleep in Erika Enterprise

Posted: Thu Jul 02, 2015 10:48 am
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

Re: Funzione sleep in Erika Enterprise

Posted: Thu Jul 02, 2015 10:54 am
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

Re: Funzione sleep in Erika Enterprise

Posted: Thu Jul 02, 2015 1:30 pm
by paolo_s
Grazie mille! Funziona perfettamente!

Paolo