Vai al contenuto

Rilevazione tempi esecuzione statements di programma

Home Forum Controllori SlimLine e Netsyst (LogicLab) Rilevazione tempi esecuzione statements di programma

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #34980
    Anonimo
    Inattivo

    Al fine di determinare se un programma composto da diversi statements può essere eseguito in un certo tempo, ad esempio per determinare, inserendolo in un interrupt fast, quale può essere il tempo minimo del tempo di esecuzione dell’interrupt, è possibile rilevare con precisione il tempo di esecuzione di un programma ?

    #36676
    Sergio Bertana
    Amministratore del forum

    Il modo più semplice è attivare un segnale hardware prima degli statements di cui si vuole testare il tempo di esecuzione e disattivarlo al termine. Se il segnale è disponibile in uscita è possibile rilevarne con l’oscilloscopio il tempo di durata.

    Solitamente scelgo il segnale DTR (Presente sul Pin 4 del connettore RJ45 delle porte seriali COM0 e COM1), con la funzione SysSetSerialDTR è possibile attivare (+6 volt) e disattivare (-6 volt) il segnale. Collegando un oscilloscopio al pin del connettore è possibile rilevare il tempo di esecuzione degli statements.

    E’ anche possibile utilizzando la funzione SysGetSysTime, memorizzare il tempo di sistema (Espresso in uS) prima degli statements di cui si vuole testare il tempo di esecuzione. Al termine della esecuzione sarà possibile calcolare il tempo necessario alla esecuzione con risoluzione in uS.

    Allego la stampa di un programma di esempio di cui è possibile il download, che calcola il tempo di esecuzione della funzione SysGetRandom, la funzione viene eseguita in ca 9 uS.

    #36678
    Sergio Bertana
    Amministratore del forum

    L’esecuzione dei calcoli e/o l’esecuzione di funzioni e blocchi funzioni che eseguono operazioni su parametri interni alla CPU richiedono tempi ridotti di esecuzione.

    I tempi maggiori sono da considerarsi per l’esecuzione di funzioni e blocchi funzioni che accedono ai moduli di estensione. Essendo i moduli connessi alla CPU tramite un bus I2C l’accesso a questi moduli richiede un certo tempo. Per dare una idea riporto i tempi di esecuzione di alcuni blocchi funzione che accedono ai moduli periferici.

    SysGetPhrDI, get peripheral digital input: ~300 uS
    SysSetPhrDO, set peripheral digital output: ~300 uS
    SysGetAnInp, get analog input: ~500 uS
    SysSetAnOut, set analog output: ~450 uS
    SysGetEncoder, get encoder input: ~320 uS

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