Tutorials - PIC peripherals

 

TIMER0

 


Caratteristiche specifiche del TIMER0 nelle diverse famiglie di PIC a 8 bit.

Le differenze di impostazione del Timer0 nei PIC a 8 bit sono minime e questo fa si che una sezione di sorgente che lo riguarda possa essere portata da un processore all' altro senza alcuna modifica, in quanto opera in modo eguale su tutti. Questo è un notevole vantaggio, dato che non è necessario imparare per ogni processore una diversa gestione del timer.

Esistono comunque piccole differenze che può essere utile conoscere per non incappare in qualche equivoco che renderebbe problematico l' uso della periferica.

Utilizzando come base quanto detto fino ad ora riguardo ai Mid-range, vediamo alcuni particolari per diversi tipi di PIC.


PIC Baseline

Fino ad ora abbiamo usato la struttura dei Mid-range come esempio.
Per i Baseline vanno considerate due condizioni:

  • non è prevista una funzione di interrupt. Pertanto non esiste un registro INTCON e anche il TIMER0 non genera chiamate interrupt all' overflow (ad esempio PIC10F2xx)
     
  • l' ingresso di conteggio può essere derivato anche dall' uscita del comparatore (ad esempio 10F204/206)

Per il resto, i bit di OPTION_REG per il controllo del timer sono identici a quelli già visti. Anche la struttura è analoga e il prescaler è attribuibile al TIMER0 o al WDT alternativamente.

Dunque, nei PIC10F204/206, che dispongono di un comparatore analogico, il diagramma del TIMER0 è leggermente modificato:


A seconda della sorgente di clock, si possono distinguere tre tipi di conteggio:

  • il primo, analogo a quello disponibili sugli altri PIC, prevede che la sorgente di conteggio sia derivata dall' oscillatore principale, FOSC/4. Questa modalità è ottenuta portando a 0 il bit T0CS(OPTION<5>). Il timer è incrementato ad ogni ciclo di istruzione, se senza prescaler. Se è selezionato il prescaler, questo dividerà per un fattore fisso gli impulsi in ingresso.
     
  • il secondo, analogo a quello disponibili sugli altri PIC, fa capo all' ingresso T0CKI. Questa funzione è scelta portando a 1 il bit T0CS(OPTION<5>)
    Occorre anche settare CMPT0CS(COMCON0<4>) e COUTEN(COMCON0<6>). In questo modo il timer incrementa ad ogni transizione sul pin T0CKI (la transizione è determinata da T0SE(OPTION<4>). Anche in questo caso il segnale di conteggio può essere fatto passare attraverso il prescaler.
    Il segnale esterno viene sincronizzato con il clock principale e questo determina un leggero ritardo. Inoltre il segnale esterno di conteggio deve essere compreso nei limiti previsti dal costruttore. Il foglio dati riporta i parametri e i diagrammi relativi. La loro consultazione è di una certa importanza solamente in applicazioni particolarmente critiche per quanto riguarda la temporizzazione.
     
  • la terza modalità, specifica di questi chip, riguarda la connessione dell' ingresso di conteggio all' uscita del comparatore. Questo si ottiene portando a 1 il bit T0CS(OPTION<5>), assieme a CMPT0CS(COMCON0<4>), mentre  COUTEN(COMCON0<6>) va posto a 0. Ad ogni cambio di stato del comparatore, con il fronte selezionato da T0SE, si avrà un avanzamento del contatore. Anche in questo caso il segnale di conteggio può essere fatto passare attraverso il prescaler.
  T0SE CMPT0CS  COUTEN Sorgente conteggio
T0CS 0 x x x FOSC/4
1 0 falling
1 rising
1   1 ingresso T0CKI
1   uscita comparatore

Come per gli altri PIC non Enhanced, il prescaler è condiviso con il WDT e può essere assegnato o a questo o al timer, ma non ad entrambi.
Se è richiesto, durante l' esecuzione del programma, commutare il presclaer dall' uno all' altro dei due moduli, il foglio dati consiglia la sequenza di istruzioni adeguata.

Come accennato prima, TIMER0 non genera interrupt all' overflow e questo richiede una gestione in polling con la rilettura del registro di conteggio TMR0.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 09/04/13.