You are on page 1of 6

T hc AVR - phn 4

AVR

Cch

dng

Timer

trong

vi

iu

khin

AVR

S dng b nh thi l nhu cu ca nhiu lp trnh vin. Thng thng mi


loi vi iu khin u c b nh thi. Hm nay VAGAM xin gii thiu ti
cc bn bi vit v cch dng Timer trong vi iu khin AVR.
c

tnh

- Bao gm cc b timer 8bit 16 bit, thng c t 3 4 b Timer


- C cc knh PWM (t 4 n 8 knh tu loi )
Bao
gm
nhiu
ch

ngt
v
PWM

C
th
l
mt
knh
m
ring
bit
- T ng xo Timer trong ch so snh(t ng np li)
C
ch

PWM
To
ra
tn
s
m
cc
d
kin
ngt
ngoi
To
ra
cc
ngt
trn
v
ngt
so
snh
....
Cc

ch

hot

ng

ca

timer

Ch

Thng
Thng:
y l ch hot ng n gin nht ca Timer .B m s lin tc m
tng ln cho n khi vt qu gi tr ln nht TOP v sau s c khi

ng li ti gi tr Bottom.Trong cc hot ng thng thng th c trn s


c thit lp khi gi tr trong Timer t gi tr khng v khng b xo
i.Tuy nhin nu m ngt trn c chp nhn th c ngt s t ng b xo
khi ngt c thc hin.Gi tr trong Timer c th c vit vo bt c lc
no
Ch

So
Snh
(CTC):
y l ch m gi tr trong Timer lun c so snh vi gi tr trong
thanh ghi ORC .Khi gi tr trong Timer bng gi tr trong thanh ghi ORC th
gi tr trong Timer s b xo i.Gi tr trong ORC ng vai tr l gi tr
TOP cho b m.Ch ny cng cho php to ra tn s so snh u
ra.Tuy nhin trong ch ny nu gi tr mi ghi vo thanh ghi ORC m
nh hn gi tr tc thi ca b m th th 1 so snh s b l, khi b m
s m n gi tr ln nht sau ri xung gi tr 0 trc khi so snh tip
theo xut hin.
S thi gian ca ch CTC
Ch

Fast
PWM:
Cho php to ra sng vi tn s cao.S khc bit c bn gia Fast PWM
vi cc loi PWM khc l n ch s dng 1 sn dc.B m s m t
Bottom n Max sau khi ng li t bottom. Trong ch khng o
u ra ca chn so snh OCx s bi xo khi c php ton so snh gia
TCNTx v thanh ghi ORC l bng nhau. V s c st ln 1 khi gi tr t
Bottom. Trong ch o ,u ra o s c set ln 1 khi s so snh gia
thanh ghi ORC v gi tr trong Timer bng nhau v s b xo khi gi tr t
Bottom.Trong c hai trng hp ny tn s ca ch Fast PWM u gp
i so vi ch phase correct PWM s dng hai sn dc
Vi tn s cao ny ch Fast PWM rt tt cho cc ng dng nh ADC
hay chnh lu.Ngoi ra vi tn s cao gip lm gim kch thc ca thit b
ngoi nh cun dy t t gip lm gim ton b chi ph cho h thng
S di y m t chu k thi gian ca ch :

Biu

thi

gian

ch

Fast

PWM

Ch

Phase
correct
PWM:
Ch ny hot ng da trn hai sn ln xung.B m s m lin tc
t gi tr BOTTOM n gi tr MAX v sau t gi tr MAX n gi tr
BOTTOM.Trong ch so snh khng o chn so snh (OCx) s b xa
khi gi tr TCNTx bng gi tr OCRx trong qu trnh m ln v s c set
bng 1 khi gi tr so snh xut hin trong qu trnh m xung.Ch so
snh o th cc gi tr l ngc li.Vi hot ng hai sn xung ny th
ch ny khng to ra c tn s nh nh ch mt sn xung .Nhng
do tnh cn i ca hai sn xung th n tt hn cho iu khin ng c
Ch phase correct PWM hot ng c nh l 8 bt.Trong ch ny b
m s tng cho n khi t gi tr MAX ,khi n s i chiu m.Biu
thi gian y m t hot ng ca ton b qu trnh:

T biu thi gian ta nhn thy vic thay i tn s trong hot ng ca


phase correct PWM c th thay th bng hai gi tr l MAX v BOTTOM.
N
linh
hot
hn
so
vi
ch

Fast
PWM.

Tn

th

tnh

theo

cng

thc

nh

sau:

f=fc/N*510
Trong N to ra bi b chia n c cc gi tr l:1,8,64,256 hoc 1024
Cc
Thanh

thanh

ghi

ghi

trong
iu

Timer/

Counter:

TCCRx:

khin

Bt 3,6 WG00-WG01: y l cc bt chn ch trong Timer.Cc gi tr


c
m
t
trong
bng
sau.
Bng

chn

ch

Timer:

Bt 5-4 : COM00-COM01: Quy nh gi tr u ra trong cc php so snh


Bt 2: 0 CS2:0 :y l cc bt quy nh xung cp cho hot ng ca
Timer.Bng
di
y
m
t
ton
b
cc
gi
tr
Chn

ch

cho

xung

Clock

Thanh

ghi

ngt-TIFR:

Bt 1-OCFx : Khi hai gi tr bng nhau bt ny c set ln bng 1


Bt 1-TVOx : Khi b m vt qu gi tr Top th bt ny c set bng 1
Thanh

ghi

mt

ngt-TIMSK:

Bt 1 OCIEx: khi bt ny c set ln bng 1 th cho php ngt so snh


Bt 0 TOIEX : Khi bt ny c set ln bng 1 th cho php ngt trn
on chng trnh trn dng timer1. Timer ny l b m 16bit nn gi tr
m c ti a l FFFF. Trong phn khi to Timer ta khi to xung clock
cho b m l 125Khz = 125000 c ngha l b m s m c 125000
gi tr trong 1 giy. Ta lm php tnh nh sau:
125000
s
----1
giy
?
s----0,02
giy
(20ms)
ta tnh c trong 20ms b timer s m c l: 125000x0.02= 2500 s.
Ta cn l lm sao cho timer1 m c 2500 s s trn c ngha l cn phi
np v n mt gi tr xc nh trc (mc nh n s m t 0000>FFFF v
b trn) gi tr ny s nh hn 65535(FFFF) l 2500 (9C4 Hexa) vy ta tnh
c gi tr cn np li sau mi ln trn l FFFF- 9C4 = F63B.
c code
1. #include
2.
3. unsigned char count=0;
4.
5. interrupt
[TIM1_OVF]
void
timer1_ovf_isr(void) //ngat xay ra sau 20ms
6. {
7. TCNT1H=0xF6; //gi tr np li TCNT1L=0x3B;

8. // goi ham can xu li sau 20mscount++;


9. if (count>10)
10. {
11. count=0;
12. //goi ham can xu li sau 2s }
13. }
14.
15. void main(void)
16. {
17. // Timer/Counter 1 initialization
18. // Clock source: System Clock
19. // Clock value: 125.000 kHz
20. // Mode: Normal top=FFFFh
21. // OC1A output: Discon.
22. // OC1B output: Discon.
23. // Noise Canceler: Off
24. // Input Capture on Falling Edge
25. // Timer 1 Overflow Interrupt: On
26. // Input Capture Interrupt: Off
27. // Compare A Match Interrupt: Off
28. // Compare B Match Interrupt: OffTCCR1A=0x00;
29. TCCR1B=0x03;
30. TCNT1H=0xF6;
31. TCNT1L=0x3B;
32. ICR1H=0x00;
33. ICR1L=0x00;
34. OCR1AH=0x00;
35. OCR1AL=0x00;
36. OCR1BH=0x00;
37. OCR1BL=0x00;
38. #asm("sei") //bat co cho phep ngat toan cuc
neu khong thi khong co ngat xay ra
39. while (1)
40. {
41. ..........................
42. };
43. }

You might also like