Port B e i suoi registri
27 Gennaio 2019Esercitazioni Pratiche con PowerPoint
27 Gennaio 2019
Il TIM è un timer a due canali che fa da riferimento per le funzioni di input capture, output compare e PWM.
Caratteristiche
- Due canali di input capture/output compare;
- Generatore di PWM;
- Clock del TIM programmabile con sette diverse frequenze con un prescaler;
- Modo di funzionamento in free-running o in up-count;
- TIM counter stop e reset
- Architettura espandibile fino a 8 canali
Pin associati al TIM
Il TIM sfrutta due pin della porta D:
Descrizione del funzionamento
Il componente centrale del TIM è un contatore a 16bit che può funzionare in free-running o in up-counter
Al TIM sono associati due registri: TM0DH:TM0DL che sono rispettivamente i bit più significativi e quelli meno significativi del contatore a 16bit.
Il software potrà andare a leggere il contatore in qualsiasi momento tramite questi due registri.
Registri associati al TIM
Prescaler del TIM
La sorgente di clock del TIM può essere programmata tramite un prescaler che divide la frequenza. Per la selezione si usano i bit PS(2:0) nel registro di configurazione TSC.
Input Compare
In questa modalità di funzionamento il TIM cattura il valore del contattore e lo mette nei due registri TCHxH:TCHxL quando avviene un fronte nel pin di ingresso del canale utilizzato.
Il fronte può essere programmato per essere di salita o di discesa.
L’input compare può generare un interrupt.
Questa funzione può essere utile nel caso in cui si voglia misurare la durata di un evento esterno
Output Compare
In questa modalità il TIM può generare un fronte nel pin di output del canale quando il TIM e uguale al contenuto dei due registri di output compare.
Loutput compare può generare uninterrupt.
Questa funzione è utile per creare timer di tipo software o misurare eventi impostando delle ruotine apposite.
PWM Pulse Width Modulation
In questa modalità il TIM può generare un segnale in uscita del pin di tipo PWM cioè in modulazione della frequenza del segnale:
come si vede dalla rappresentazione del segnale la durata del pulse viene definita tramite output compare, mentre il periodo viene definito dal valore nei registri del TIM,infatti per ottenere il PWM si lavora in toggle-on-overflow, in questo modo di lavoro il timer si resetta ogni volta che il contattore supera un certo valore definito nei registri.
La frequenza del PWM viene definita dal prescaler del TIM.
Il PWM viene molto utilizzato per comandare motori in corrente continua.
Procedura di configurazione del PWM
Passo 1. Nel registro TSC:
1. fermare il contatore settando il bit di stop TSTOP
2. Resettare il contatore settando il bit TRST
Passo 2. Nei registri TM0DH:TM0DL, scrivere il valore del periodo
del PWM
Passo 3. Nei registri TCHxH:TCHxL scrivere il valore del pulse
Passo 4. Nel registro TSCx (x = canale)
1. Settare il valore nei registri MSxB:MSxL
2. Settare il bit TOVx: toggle-on-overflow
3. Settare i bit ELSxB:ELSxA a 0:1 per avere in uscita un fronti di salita alla comparazione o 1:0 per avere fronti di discesa alla comparazione
Passo 5. Nel registro TSC cancellare il bit di stop.
Registro TSC
bit 7 — TOF overflow flag bit
Questa è una flag scrivibile o leggibile che si setta
quando il contatore arriva $0000 superando il valore
contenuto nei registri modulo TIM
1: il TIM ha superato il valore del modulo TIM
0: il TIM non ha superato il valore del modulo TIM
bit 6 — TOIE TIM Overflow Interrupt Enabled Bit
1: Abilita linterrupt alloverflow
0: Disabilita linterrupt alloverflow
bit 5 — TSTOP TIM stop bit
1: Il contatore è disabilitato
0: il contatore è abilitato
bit 4 — TRST TIM Reset Bit
Questo è un bit di sola scrittura che quando viene
settato resetta sia il TIMER che il PRESCALER
1: Prescaler e TIM vengono cancellati
0: No effect
bit 2:0 — Prescaler select bit
Settando in modo opportuno questi bit si può scegliere il
valore del prescaler
seguire la seguente tabella:
Registri TCNTH:TCNTL
Questi due registri contengono il valore del timer, il TCNTH gli 8 bit più significativi, mentre il TCNTL gli 8 bit meno significativi.
TIM Counter Module Register (TMODH:TMODL)
Questi registri scrivibili e leggibili contengono il valore massimo che può raggiungere il contatore, infatti quando il TIM supera questo valore avviene uninterrupt.