20
Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le capacità di conteggio oltre i 16 bit del contatore Descrizione generale Il timer HC11 comprende: • 3 funzioni indipendenti Input Capture (IC) • 5 funzioni indipendenti Output Compare (OC) le funzioni IC permettono di registrare l’istante in cui si verifica un dato evento sui corrispondenti pin di input le funzioni OC permettono di generare dei segnali sui corrispondenti pin di output o di produrre dei ritardi temporali

Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Embed Size (px)

Citation preview

Page 1: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati

La funzione di overflow permette di estendere le capacità di conteggio oltre i 16 bit del contatore

Descrizione generale

Il timer HC11 comprende:• 3 funzioni indipendenti Input Capture (IC)• 5 funzioni indipendenti Output Compare (OC)

le funzioni IC permettono di registrare l’istante in cui si verifica un dato evento sui corrispondenti pin di input

le funzioni OC permettono di generare dei segnali sui corrispondenti pin di output o di produrre dei ritardi temporali

Page 2: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

L’elemento centrale del timer HC11 è il contatore free-running a 16 bit:

• il conteggio parte da $0000 al reset dell’HC11 e poi continua indefinitamente;

Contatore

• quando viene raggiunto il valore massimo $FFFF, viene settato un flag di overflow, mentre il conteggio ritorna a $0000 e riparte

• finché l’HC11 è operativo, non c’è alcun modo di resettare, cambiare o interrompere il conteggio

• il contatore può essere letto in qualsiasi momento ed è accessibile mediante il registro TCNT:

TCNT b15 b0

$100E, $100F

• il registro TCNT deve essere letto utilizzando un’ istruzione di lettura a 2 byte (es. LDD, LDX,…)

Page 3: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Un prescaler programmabile permette di selezionare una tra quattro frequenze di CLOCK per la temporizzazione del contatore: questa possibilità consente al programmatore di operare un compromesso tra la risoluzione e il range del timer

Prescaler

• il fattore di prescale può essere impostato mediante 2 bit del registro TMSK2:

TMSK2 b7 b1 b0

$1024 PR1 PR0

E=2 MHz

PR0 PR1 Prescale risoluzione range

0 0 1 500 ns 32,77 ms

0 1 4 2 s 131,1 ms

1 0 8 4 s 262,1 ms

1 1 16 8 s 524,3 ms

prescale

EfCK

CKCK f

T1

CKTOT Tt 65535

Page 4: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il range del timer è importante perché il software necessario per il funzionamento del timer è più complicato se deve tenere in considerazione eventuali overflow.

Prescaler (cont.)

Se i periodi di tempo con cui si ha a che fare sono inferiori al range del timer, allora l’overflow può essere ignorato e gli intervalli di tempo possono essere calcolati usando le semplici istruzioni aritmetiche a 16-bit, anche qualora nell’intervallo considerato si verifichi un overflow.

Esempio: conteggio del timer=$FFF0 si vuole generare un evento dopo 100 (=$64) cicli di CK $FFF0 + $0064 = $10054 si programma il timer in modo che l’evento si verifichi quando il conteggio raggiunge $0054 in 100 cicli di CK il timer va in overflow e ricomincia a contare fino a $0054, quando l’OC accade

Page 5: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Nella scelta del fattore di prescaler si devono considerare la risoluzione e la lunghezza max. degli intervalli di tempo con cui si ha a che fare.

Prescaler (cont.)

Esempio: supponiamo di dover misurare degli impulsi di durata compresa tra 10 ms e 100 ms

un fattore di prescale pari a 4 garantisce:

range=131,1ms

un errore pari 1 conteggio rappresenta un errore dello 0,02% sull’ impulso più breve

risoluzione=2s

poiché il range è > dell’impulso più lungo atteso, l’overflow può essere ignorato

Page 6: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il timer HC11 dispone di 3 funzioni IC indipendenti, accessibili tramite i pin PA0, PA1 e PA2 del port A:

Funzioni Input Capture (IC)

Ogni funzione IC comprende:• un latch a 16 bit• logica di riconoscimento dei fronti di ingresso• logica di generazione dell’ interrupt

Possibili applicazioni: misure di periodo e frequenza misure di durata di un impulso …

Le funzioni IC vengono utilizzate per registrare l’istante in cui si verifica un dato evento esterno

Page 7: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il latch a 16 bit cattura il valore del contatore nell’istante in cui sul pin corrispondente si verifica un dato fronte di segnale, la cui polarità può essere selezionata via software.

P A 0

H C 11tim er

TC N T

TIC 1

All’evento di IC il programmatore può eventualmente far corrispondere anche la generazione di una RICHIESTA DI INTERRUPT (IRQ).

Funzioni Input Capture (cont)

Page 8: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Input Capture - Registri

• Latch a 16 bit

T IC 1$1010

T IC 2$1012

T IC 3$1014

I registri TIC possono essere letti mediante un’istruzione di lettura a 16 bit, mentre non vengono influenzati dal reset e non possono essere scritti via software.

Le 3 funzioni IC sono indipendenti e possono catturare tutte lo stesso valore di conteggio, se i tre fronti di ingresso si verificano contemporaneamente.

Il valore presente nel registro TIC corrisponde sempre al fronte più recente che si è verificato sul corrispondente pin.

Page 9: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Input Capture - Registri

• logica di riconoscimento del fronte e di generazione dell’interrupt

I bit di stato ICxF (x=1,2,3), vengono automaticamente posti a 1 quando si verifica il fronte previsto sul corrispondente pin di input. Tale bit di stato può essere azzerato scrivendo un 1 nella corrispondente posizione sul registro TFLG1

TFLG 1$1023

IC1F IC2F IC3F

b 0b 1b 2

TM S K 1$1022

IC1I IC2I IC3I

b 0b 1b 2

I bit di controllo ICxI (x=1,2,3), permettono all’utente di configurare ogni funzione IC per essere gestita mediante polling o richiesta di interrupt, senza peraltro influenzare il bit ICxF.• ICxI=0 interrupt inibito;• ICxI=1 interrupt abilitato; NB - prima di lasciare la routine di servizio dell’interrupt occorre azzerare il bit ICxF

Page 10: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Input Capture - Registri

• opzioni programmabili

E’ possibile programmare via software quale fronte del segnale applicato al corrispondente pin di input attiva la funzione IC

TC TL2$1021

EDG1B

EDG1A

EDG2B

EDG2A

EDG3B

EDG3A

b 0b 1b 2b 3b 4b 5

EDGxB EDGxA configurazione

0 0 IC disabilitata

0 1 IC abilitata sul fronte di salita

1 0 IC abilitata sul fronte di discesa

1 1 IC abilitata su entrambi i fronti

Page 11: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il timer HC11 dispone di 5 funzioni OC indipendenti, accessibili tramite i pin PA3, PA4, PA5, PA6 e PA7 del port A:

Funzioni Output Compare (OC)

Ogni funzione OC comprende:• un registro di confronto a 16 bit• un comparatore a 16 bit• logica di generazione dell’ interrupt

Possibili applicazioni: produzione di impulsi produzione di onde quadre generazione di ritardi ….

Le funzioni OC vengono utilizzate per far accadere un evento esterno in un dato istante

Page 12: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Il comparatore confronta il valore del contatore free running con il valore contenuto nel registro di confronto a 16 bit; quando si verifica un uguaglianza: viene settato il flag di stato della funzione OC, il corrispondente pin viene posto nello stato scelto dal programmatore mediante opportuni bit di controllo eventualmente viene effettuata una richiesta di interrupt alla CPU

Funzioni Output Compare (cont.)

P A 5

H C 11tim er

TC N T

TO C 3

=

Page 13: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Output Compare - Registri

• Registri di confronto a 16 bit

I registri TOC possono essere scritti o letti mediante un’istruzione a 16 bit e vengono forzati a $FFFF durante il reset.

Una scrittura del byte più significativo di un registro TOC inibisce la funzione OC per un ciclo di clock (allo scopo di prevenire falsi positivi)

Fintanto che una funzione OC è stata impostata in modo da cambiare lo stato del corrispondente pin o da generare un interrupt, tali azioni si verificano ogni volta che il contatore TCNT eguaglia il registro TOC.

TOC1 (address=$1016)

TOC2 (address=$1018)

TOC3 (address=$101A )

TOC4 (address=$101C )

TOC5 (address=$101E )

Page 14: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Output Compare - Registri

• flag di stato del confronto e generazione dell’interrupt

I bit di stato OCxF (x=1,2,3,4,5), vengono automaticamente posti a 1 ogni volta che il corrispondente registro TOC eguaglia il contatore free running. Tale bit di stato può essere azzerato scrivendo un 1 nella corrispondente posizione sul registro TFLG1

I bit di controllo OCxI (x=1,2,3,4,5), permettono all’utente di configurare ogni funzione OC per essere gestita mediante tecnica polling o mediante generazione di richiesta di interrupt, senza peraltro influenzare il corrispondente bit OCxF.• OCxI=0 interrupt inibito;• OCxI=1 interrupt abilitato; NB - prima di lasciare la routine di servizio dell’interrupt occorre azzerare il bit OCxF

TFLG 1 (address=$1023)OC1F OC2F OC3F OC4F OC5F

b 0b 1b 2b 3b 4b 5b 6b 7

TM S K 1 (address=$1022)OC1I OC2I OC3I OC4I OC5I

b 0b 1b 2b 3b 4b 5b 6b 7

Page 15: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Ouput Compare - Registri

• opzioni programmabili

L’utente può programmare l’azione che deve avvenire sul pin corrispondente ad ogni funzione OC indipendentemente dalle altre. Per le funzioni OC2OC5 tale programmazione viene effettuata mediante una coppia di bit di controllo OMx, OLx (x=2,3,4,5) del registro TCTL1:

OMx OLx configurazione

0 0 OC non agisce sul pin (OC1 si)

0 1 Toggle OCx pin

1 0 Clear OCx pin

1 1 Set OCx pin

TC TL1 (address=$1020)OM2 OL2 OM3 OL3 OM4 OL4 OM5 OL5

b 0b 1b 2b 3b 4b 5b 6b 7

Page 16: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Output Compare – OC1

La funzione OC1 può controllare fino a 5 pin di uscita simultaneamente ed è in grado di controllare anche i pin già soggetti ad un’ altra funzione OC.

O C 1M (address=$100C )OC1M7

OC1M6

OC1M5

OC1M4

OC1M3

b 0b 1b 2b 3b 4b 5b 6b 7

O C 1D (address=$100D )OC1D7

OC1D6

OC1D5

OC1D4

OC1D3

b 0b 1b 2b 3b 4b 5b 6b 7

PA7 PA6 PA5 PA4 PA3

OC1Mx pin PAx OC1Dx

1 affetto da OC1 valore che deve essere assunto dal pin PAx

0 non affetto da OC1 don’t care

pin bidirezionale deve essere definito come output ponendo a 1 il bit più significativo (DDRA7) del registro PACTL (address=$1026)

Page 17: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzioni Output Compare – OC1

La possibilità di controllare delle uscite multiple con una unica funzione OC è utile specialmente quando le uscite sono associate ad un singolo dispositivo esterno (es. segnali di pilotaggio di un motore passo-passo)

Quando si utilizza OC1, le rimanenti funzioni OC2OC5, possono essere utilizzate:• come generiche funzioni di temporizzazione che non influiscono direttamente sui pin• in congiunzione con la funzione OC1 per ottenere ancora maggiore flessibilità

Se OC1 ed una altra funzione OCx controllano il medesimo pin e cercano di cambiarlo contemporaneamente, OC1 ha la priorità.

Page 18: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Output Compare Forzato

Il meccanismo di forzatura dell’OC fornisce un modo per cambiare lo stato dei pin associati alla funzione OC, senza attendere il confronto della funzione OC stessa.

FOCx (x=1,2,3,4,5) =• 0 nessun effetto sul corrispondente canale OC• 1 al conteggio di timer successivo, il canale viene forzato ad eseguire la azione sul pin programmata

C FO R C (address=$100B )FOC1 FOC2 FOC3 FOC4 FOC5

b 0b 1b 2b 3b 4b 5b 6b 7

La funzione di OC forzato provoca il cambiamento del pin ma non altera il flag di stato OCxF e non genera richieste di interrupt.

Lo stato logico alto dei bit FOCx è transitorio e la lettura del registro CFORC non restituirà mai altro che $00.

Page 19: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzione Real Time Interrupt (RTI)

La funzione RTI può essere impiegata per generare richieste di interrupt con cadenza periodica

Il segnale di CLOCK della funzione RTI non può essere mai né fermato né interrotto il tempo che intercorre tra due time-out successivi della funzione RTI è una costante, indipendente dai tempi di esecuzione del SW

la velocità del segnale di CLOCK della funzione RTI può essere impostata mediante 2 bit di controllo del registro PACTL:

PACTL b7 b1 b0

$1026 RTR1 RTR0

RTR1 RTR0 RT factor fCK (Hz) TCK (ms)

0 0 1 244,14 4,10

0 1 2 122,07 8,19

1 0 4 61,04 16,38

1 1 8 30,52 32,77

Page 20: Il timer HC11 è basato su un contatore free-running a 16 bit con un prescaler programmabile a 4 stati La funzione di overflow permette di estendere le

Funzione RTI - Registri

logica di generazione dell’interrupt

Il bit di stato RTIF viene automaticamente posto a 1 al termine di ogni periodo TCK. Tale bit di stato può essere azzerato scrivendo un 1 nella corrispondente posizione sul registro TFLG2.

TFLG 2$1025

RTIF

b 6

TM S K 2$1024

RTII

b 6

Il bit di controllo RTII permette all’utente di configurare la funzione RTI per essere gestita mediante polling o richiesta di interrupt, senza peraltro influenzare il bit RTIF.• RTII=0 interrupt inibito;• RTII=1 interrupt abilitato; NB - prima di lasciare la routine di servizio dell’interrupt occorre azzerare il bit RTIF