Modificare il tempo di loop di una task

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Controllori SlimLine e Netsyst (LogicLab) Modificare il tempo di loop di una task

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #53917
    marco.foschi
    Partecipante

    Vorrei fare qualche prova per testare le prestazioni della CPU SlimLine Cortex M7. Ho creato alcuni programmi, e sto verificando i tempi di esecuzione e l’intervallo di loop nelle varie task.

    Non riesco però a modificare il period time: qualsiasi valore imposto, compilo, invio, e verifico dopo anche un riavvio, sembra sempre non variare, o meglio: il period time effettivamente cambia, ma sembra che il sistema non applichi le modifiche ed utilizzi sempre il valore di default (Screenshot).

    Sto sbagliando procedura?

    #53944
    Sergio Bertana
    Amministratore del forum

    Sui sistemi ARM e Cortex la funzione di configurazione tempi di esecuzione tasks di LogicLab non è operativa. Il tempo di esecuzione delle tasks Slow e Fast è impostabile solo attraverso la funzione SysSetTaskLpTime, set task loop time.

    #58266
    m.foschi2
    Partecipante

    Ho visto che, con il controller Cortex M7 (MPS54) posso impostare tempi di loop della task FAST fino a 100us, al di sotto di questo la funzione SysSetTaskLpTime restituisce un errore.

    La domanda è: cosa succede se il tempo di esecuzione della task (ExecutionTimeFastTask) diventa superiore al tempo di loop impostato al boot?

    Viene generato un errore? La task si interrompe con effetti non prevedibili, al fine ri rispettare il tempo di loop, oppure prosegue ugualmente? C’è modo di sapere se questo evento è successo?

    #58268
    Sergio Bertana
    Amministratore del forum

    Anche sui sistemi ARM è possibile impostare il tempo di loop della task Fast a 100uS, naturalmente devi controllare che ad eseguire il codice non venga impiegato un tempo molto vicino (Se non addirittura superiore) al tempo di loop, variabile SysTFastExTm.

    Se è molto vicino non viene lasciato al processore molto tempo per eseguire la task Slow e la Back i cui tempi di esecuzione si allungheranno di conseguenza. Se è superiore si perderanno esecuzioni della task ma comunque il programma continuerà ad essere eseguito.

    Nota, Siccome l’accesso ai moduli su bus di estensione richiede tempi dell’ordine dei 200uS nel caso siano eseguiti FB di accesso alle schede periferiche, se il tempo di loop della task Fast è inferiore ai 500uS questi FB sono automaticamente disabilitati, continuano a funzionare solo se agiscono sul modulo CPU, indirizzo di modulo 255.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.