Rotuine di ritardo

Per implementare dei ritardi nei nostri programmi occorre innanzitutto partire dal clock di sistema, cioe' sapere quanto dura il periodo di clock dell'onda quadra con cui stiamo alimentando il pin apposito del pic. Se ad esempio si sta utilizzando un quarzo da 4 Mhz allora il periodo di clock (l'inverso della frequenza) sara' pari a 250 nS.
Ogni istruzione, ad eccezione di quelle di salto, per essere eseguita impiega un CICLO MACCHINA : un ciclo macchina e' pari a 4 periodi di clock.
Con un quarzo da 4 Mhz il ciclo macchina sara' pari a 4 * 250 nS (tclock) = 1 uS.
Le istruzioni di salto, per esempio i goto del linguaggio macchina, invece impiegano 2 cicli macchina, cioe' 8 periodi di clock, per essere eseguite.
Detto questo possiamo agevolmente inserire dei ritardi nel nostro programma :

for (Tempo = 0; Tempo < 9; Tempo++);

Tempo potrebbe essere una variabile di tipo in : questo ciclo non fa altro che aspettare 10 cicli macchina cioe' 10 uS. Infatti non ci sono parentesi graffe che specifichino istruzioni da eseguire all'interno fel ciclo, l'unica cosa che fa il uC e' contare da 0 a 9 e quindi, siccome ogni istruzione di conteggio dura 1 uS, il ritardo finale sara' di 10 uS.

Quanto detto non e' del tutto vero perche' il compilatore C in fase di compilazione effettua delle ottimizzazioni del codice automaticamente. Queste ottimizzazioni, se da un lato non intaccano assolutamente il funzionamento del programma, dall'altro vanno a modificare leggermente i ritardi che si vorrebbero realizzare.
Per questo motivo occorre verificare i ritardi calcolati teoricamente con un oscilloscopio direttamente sulla scheda oppure con il simulatore presente all'interno del software Mplab.


Stampa la pagina