Sei sulla pagina 1di 5

Appunti timers 15/11/17

Slide 21

time can be:


-continuous: ho un grafico seghettato (normale in blu)
-2° modo: scelgo un different maximum level, ma il valore massimo è scelto da me (in
rosso)
-up and down counting ho un trigger quando il timer inizia a contare da zero (in verde)

La formula per calcolare il massimo intervallo che posso raggiungere in queste modalità è simile. Il total
interval è il periodo del clock Tck x Prescale x (max+1) :

𝑇𝑖𝑛𝑡𝑒𝑟𝑣𝑎𝑙 = 𝑇𝑐𝑘 ∗ 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒 ∗ (𝑀𝑎𝑥 + 1)

Nel primo modo FFFF e TACCRO+1 (2° modo) ho: FFFF+1 or TACCR0+1; nel terzo modo ho 2XTACCRO0.

Il timer in questo modo è necessario per l’interrupt o per? Ma possiamo avere altre due funzionalità:
-capture mode
-compare
ma debo aggiungere un additional hardware in modo da implementare la feature.

L’additional harware è un altro registro, un set di analog circuits usati come comparator (slide 21) che
comparano se entrambi le posizioni de i registri sono uguali, e altri sub blocks dei sistemi.

Per la capture mode ho un set di input signals che possono provenire da alte parti del chip o da fuori,
quindi pin esetrni, e quando ho questi segnali il capture mode fa uno snapshot del current value del
register, quindi è quando il time conta alla frequenza che ho scelto ho una foto, posso freeze il value
quando ho il segnale in ingresso. Siccome ho anche finoa 5 blocchi di questo tipo, replication del block,
posso memorizzare fino a 5 valori diveri dentro la stessa applicazione usando lo stesso timer.

Posso quindi implementare time keeping per raise o altre applicazioni.

Per comparing mode usa anche un set di comparator (comparator 4): scrivo nell’accumulator timer
TACCR4 il tempo e quando questo è uguale a quello del comparator ho effettivamente il segnale.
Il timer inizia a cantare, quando raggiungo TACCR1 che è lo stesso valore del registro ho un segnale, poi il
timer continua e avrò un reset, poi riprende sempre a sega, quindi ogni volta che supero il threshold ho un
segnale. Questo è usato per generare un interrupt (quando ad esempio vado a zero) oppure, se uso un
compare modo, anche quando raggiungo il TACCR1 valore, l’interrupt è usato dalla figura 0,1 CCIFG sotto
comparator.
Posso anche generare una square waveform in PWM signald direttamente in output.
Questi due threshold (TACCR1 e il max FFFF) sono usati dal componente Output Unit4 per generare un
segnale ad onda quadra, detto PWM pulse width modulated signal, perché ha un periodo mala differenza
dal normal square signal è che l’interval time quando il segnale è alto è diverso da quando è basso, quindi
posso definire il duty cycle pari al ratio tra il tempo tra cui ho l’high signal e il periodo totale del segnale.

𝑡ℎ𝑖𝑔ℎ
𝑑𝑢𝑡𝑦 𝑐𝑦𝑐𝑙𝑒 =
𝑇𝑡𝑜𝑡

Posso solo modificare il capture e compare register in modo da fare variare il segnale PWM.
Se diminuisco il valore del threshold TACCR1, ottengo un valore con un t_high maggiore e aumento il duty
cycle, se aumento invece il valore TACCR1 vicino al massimo, decremento il duty cycle del segnale.

Ci sono diversi modi, slide 38, mostrano la forma del segnale PWM che può cambiare fase e stato (1,0) a
seconda del comportamento che voglio selezionare: il risultato è sempre un pwm con fase cambiata o un
valore differente.

Perché period duty cycle e la fase del pwm sono importanti?


È un segnale periodico ma posso cambiare il duty cycle da 0 a 1, quindi se ho due segnali con duty cycle
diversi, l’average value o l’energia associata al segnale cambia molto. Nel primo caso, il valore medio
considerato il periodo è l’area, minore, pari a (vcc*t_on + ground*t_off / T) quindi l’average è molto bassa,
nel secondo molto alto.

Se duty cycle è 0, il valore medio è 0.

È importante perché se ho un chip che genera un segnale pwm, una possibile applicazione è di aggiungere
un low pass filter che esrtae il valore medio del segnale. Dopo un filtro low pass ho più o meno il valore
medio dunque ho un segnale anaologico, tra 0 e vcc. Posso dunque modulare l’average signal modulando il
threshold del mio timer.

Può essere visto come un DA converter, digital to analogue ma che non è veloce, perché devo aspettare il
periodo che completi il segnale.
Dopo il segnale, se ho il segnale 2, ha poco tempo per scaricarsi (ho un ripple, una fluttazione attorno il
valore medio) e siccome l’interval time in cui è alto, ho un super capacitor che è sempre caricato, anche se
faccio quelle fluttuazioni. Il valore medio è attorno il valore analogico.
Maggiore è il condensatore, minore è la fluttuazione. Se non è grande posso aumentare la frequenza,
dunque il periodo è minore ma ho da mantenere lo stesso duty cycle.

Ad esempio posso modificare la potenza di un led modificando il segnale pwm, a seconda della durata del
duty cycle.

Es. motore (chiedi nico)

Es BUZZER

La frequenza ..

Fino a slide 40!

Comparator
Un comparatore è un sistema da aggiungere al circuito che permette di verificare il valore di input con uno
di riferimento .

La cosa interessante è che l’input/output di questo basic component può provenire da segnali interni. Ad
esempio l’output del filtro può essere internamente dall’ADC converter, quindi non devo spendere per
componenti aggiuntivi. Operational amplifire e comparator hanno entrambi lo stessso simbolo, ma il primo
può funzionare da comparatore, il contrario no.

Il comparatore fa un check tra due analog voltage e darà un digital output, quindi è 1 V se Vin>Vreference.

Posso comparare due valori analogici, è real time, on serve alcun clock, è integrato nella CPU.
L’input o output può essere un pin verso l’esterno del chip oppure interno.

L’MSP430 ha alcuni comparatori, il cui output signal può essere campionato oppure in grado di generare
un interrupt, a cui c’è un vector associato, per cui è facile triggerare un evento facendo un check con un
comparatore. Quando il voltaggio è maggiore del thresold, c’è un interrupt.
Communication
La maggiorparte delle comunicazioni verso peripherals (periferiche) sono ?
In passato serviva un circuito esterno, perché il livello di integrazione non era avanzato, composto da MCU
microcontroller e un DCE digital communication equipment, serviva una modulazione over the wire per
raggiungere un altro target.

Non ci occupiamo di comunicazioni distanti, componenti nella stessa scheda, si chiamano communication
pheriperals e non DCE.

In passato i fattori erano la complessità del numero di cavi ela velocità di comunicazione. Il tradeoff era la
parallel communication (numero di cavi ) e la serial (due cavi), che mandavano i byte bit by bit over the
same wire.

… Manca

slide 8

Serial communication: si usa il RS232 che è molto simile allo UART [0 -5V=1], va da [–15 =1 a +15v=0], ha
una logica complementare (se voglio mettere 1 devo mettere 1, altrimenti positivo e trasmetto 0.

Timing and value of the bits


Slide 9

Di solito la comunicazione seriale che è un protocollo vecchio, arriva fino a 50metri, è stata usata perchè
era economica ma lenta perché non abbiamo sincronizzazione.
Il maggior problema di comunicazione tra due nodi è di farli andare d’accordo sul timing: se trasmetto una
informazione lungo il cav, ad esempio un’onda quadra.

Possiamo anche decidere di avere due MSP430 e usiamo lo stesso clock su entrambi. Attualmente,
possiamo avere un drift nel clock perhcè l’oscillatore interno ha drift e prima o poi abbiamo dei
cambiamenti di fasi, dunque errori.

La necessità di sincronizzazione è il primo requirement.

In serial RS232 non c’è modo di avere una forte sincronizzazione tra due nodi, dunque la velocità è
abbastanza bassa rispetto gli altri protocolli che vedremo. Quando trasmetto informazioni, la linea è
normalmente in high value (5v in uart,- 15v)

Tipi di interfacce

UART
Slow speed perché ho capacità asincrone ta due nodi.
Per sopperire questo problema hanno brevettato altri standard, detti synchronous, perché nel segnale che
ho da connettere tra due nodi , c’è un clock.
Il clock deve essere generato da un nodo e letto dall’altro: il clock è un segale avente una sola direzione
dunque deve essere creato solo da uno. Inoltre, nella UART, la comunicazione era simmetrica, perché
abbiamo due cavi, full duplex; in questo caso il clock, generato solo da uno, è detto master, mentre l’altro
che riceve è slave. La comunicazione è asimmetrica, perché se il master non genera il clock si ferma la
comunicazione.
I2C
Standard della Philips che sta per Inter integrated circuit bus, I square c.
HHo solo 1 wire per la comunicazione, una sola linea per data, detta serial data, il segnale del clock detto
serial clock. Posso raggiungere 10 megabit per second.