Tutorials - PIC peripherals

 

TIMER0

 


PIC High End Enhanced - PIC18

La famiglia dei PIC 18F è sviluppata a partire da alcuni criteri leggermente differenti, rispetto ai Base e ai Mid, come ad esempio la memoria programma non paginata, il set di istruzioni esteso e la tendenza ad una maggiore efficienza nell' impiego con compilatori C.
Tra queste modifiche della struttura di base, troviamo anche il TIMER0.

In particolare, va considerato che i progettisti hanno fatto il possibile per mantenere la più stretta compatibilità con le famiglie precedenti, per cui il Timer0, per default, appare del tutto analogo a quanto visto in precedenza:

Come default si in tende la configurazione dei registri al reset del power on (POR). In queste condizioni, TIMER0 è configurato in modo del tutto analogo a quelli visti in precedenza.

Ci sono però delle differenze che devono essere valutate. Essenzialmente si tratta del registro di controllo, che non è più OPTION_REG, ma T0CON che è interamente dedicato al timer. Quindi anche i bit 7 e 6, che in OPTION_REG avevano altra funzione, diventano due elementi della programmazione del timer.

T0CON

bit

7 6 5 4 3 2 1 0

nome

TMR0ON

T08BIT

T0CS

T0SE

PSA

T0PS2

T0PS1

T0PS0

funzione

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

default

1 1 1 1 1 1 1 1
  • bit 7     TMR0ON : controllo on/off di Timer0
                 1 = Timer 0 attivo
                 0 = Timer 0 disabilitato

  • bit 6     T08BIT : operazione a 8 o 16 bit
                 1 = Timer 0 a 8 bit
                 0 = Timer 0 a 16 bit

  • bit 5     T0CS : sorgente del clock
                 1 = Transizione sul pin T0CKI
                 0 = Clock interno

  • bit 4     T0SE : edge detect del clock da T0CKI
                 1 = high to low
                 0 = low to high

  • bit 3     PSA : assegnazione prescaler
                 1 =  Timer0 senza prescaler
                 0 =  Timer0 con prescaler

  • bit 2:0  T0PS2:0 :  impostazione prescaler
                 111 =  1:256
                 110 =  1:128
                 101 =  1 :64
                 100 =  1:32
                  011=  1:16
                  010 = 1:8
                  001 = 1:4
                  000 = 1:2

T0CON si differenzia da solamente per i bit 6 e 7

T0CON

bit Funzione valore
TMR0ON 7 TIMER0 è una periferica che non è sempre attiva, come in precedenza, ma può essere attivata e disattivata con questo bit. Questa prestazione, inesistente nelle versioni del timer controllate da OPTION, è funzionale alla riduzione dell' energia impiegata dal microcontroller (applicazioni a basso consumo); però essa non dà particolari problemi, se non viene considerata, in quanto al POR il TIMER0 è configurato come acceso. 
  • 0  disabilitato
  • 1  abilitato (default)
T08BIT 6 Il timer, tipicamente a 8 bit, può essere usato a 16 bit, ampliandone grandemente le possibilità.  
  • 16 bit
  • 8 bit (default)

Al POR, i bit 7:6 si trovano impostati a 1, ovvero con il timer attivato e in modalità a 8 bit. Quindi, se questi bit non vengono scritti dal programma, il TIMER0 nei PIC18 è, per default, compatibile con le versioni presenti su Baseline e Mid, dato che gli altri bit del T0CON sono del tutto analoghi, sia per funzione che per valore assegnabile, con quanto visto in precedenza.

Dunque, rispetto ad una scrittura fatta per un Base o Mid, non occorre alcuna variazione del sorgente, se non il fatto di considerare che i bit 7 e 6 non sono più attribuiti come in OPTION_REG. Una scrittura che tenga conto della portabilità ed utilizzi label e non assoluti rende il problema poco rilevante.

La scelta della modalità a 16 bit richiede un registro di conteggio a 16 bit, realizzato con una coppia di registri a 8 bit, TMR0L e TMR0H

 

Allo scopo di evitare glitch nel caricamento dei contatori, TMR0H non è direttamente scrivibile o leggibile; la sua scrittura è effettuata attraverso un buffer che viene caricato nel momento in cui si carica il registro TMR0L.
Per default questa modalità è disabilitata; quindi il timer lavora a 8 bit utilizzando il solo TMR0L.
Per contro, se l' impiego a 16 bit non è compatibile con PIC minori, ma consente una maggiore precisione e/o un aumento del periodo generabile.

Come nel caso dei Base e Mid Enhanced, anche per i PIC18 il prescaler di TIMER0 è dedicato e non condiviso con WDT.

Trovate una trattazione del TIMER0 per i PIC 18  qui.


 

 

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