Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAlbertina Paoletti Modificato 11 anni fa
1
Descrizione generale 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 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
2
Contatore 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; 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,…)
3
Prescaler 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 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 1 500 ns 32,77 ms 4 2 s 131,1 ms 8 4 s 262,1 ms 16 8 s 524,3 ms
4
Prescaler (cont.) Il range del timer è importante perché il software necessario per il funzionamento del timer è più complicato se deve tenere in considerazione eventuali overflow. 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
5
Prescaler (cont.) 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. 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 poiché il range è > dell’impulso più lungo atteso, l’overflow può essere ignorato risoluzione=2s un errore pari 1 conteggio rappresenta un errore dello 0,02% sull’ impulso più breve
6
Funzioni Input Capture (IC)
Il timer HC11 dispone di 3 funzioni IC indipendenti, accessibili tramite i pin PA0, PA1 e PA2 del port A: Le funzioni IC vengono utilizzate per registrare l’istante in cui si verifica un dato evento esterno Possibili applicazioni: misure di periodo e frequenza misure di durata di un impulso … Ogni funzione IC comprende: un latch a 16 bit logica di riconoscimento dei fronti di ingresso logica di generazione dell’ interrupt
7
Funzioni Input Capture (cont)
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. All’evento di IC il programmatore può eventualmente far corrispondere anche la generazione di una RICHIESTA DI INTERRUPT (IRQ).
8
Funzioni Input Capture - Registri
Latch a 16 bit 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.
9
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 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
10
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 EDGxB EDGxA configurazione IC disabilitata 1 IC abilitata sul fronte di salita IC abilitata sul fronte di discesa IC abilitata su entrambi i fronti
11
Funzioni Output Compare (OC)
Il timer HC11 dispone di 5 funzioni OC indipendenti, accessibili tramite i pin PA3, PA4, PA5, PA6 e PA7 del port A: 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 Ogni funzione OC comprende: un registro di confronto a 16 bit un comparatore a 16 bit logica di generazione dell’ interrupt
12
Funzioni Output Compare (cont.)
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
13
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.
14
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
15
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 OC non agisce sul pin (OC1 si) 1 Toggle OCx pin Clear OCx pin Set OCx pin
16
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. pin bidirezionale deve essere definito come output ponendo a 1 il bit più significativo (DDRA7) del registro PACTL (address=$1026) OC1Mx pin PAx OC1Dx 1 affetto da OC1 valore che deve essere assunto dal pin PAx non affetto da OC1 don’t care
17
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à.
18
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 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.
19
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) 1 244,14 4,10 2 122,07 8,19 4 61,04 16,38 8 30,52 32,77
20
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. 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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.