Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
782,2 KB
Nội dung
AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com CÙNG HC AVR AVR4–TIMER/COUNTER VÀ CHUYN I ADC Tho thun: tài liu này thuc quyn s hu ca tác gi, bn có th t do tham kho tài liu nhng không đc phép s dng đ in thành sách báo, đng lên các din đàn hay website, nhng bn có th dùng đng link http://www.dieukhientudong.net đ hng ti tài liu. Liên h tác gi qua email: thanhtam.h@gmail.com. I. Bn s đi đn đâu. Trong bài 3 tôi đã gii thiu khái quát phng pháp lp trình bng ngôn ng C cho AVR vi WinAVR và cách s dng ngt trong AVR. Bài 4 này chúng ta s kho sát các ch đ hot đng ca phng pháp điu khin các b đnh thi, đm (Timer/Counter) trong AVR. Công c phc v cho bài này vn là b công c WinAVR và phn mm mô phng Proteus. Tôi vn dùng chip Atmega8 đ làm ví d. Mt đi u không may mn là không phi tt c các b Timer/Counter trên tt c các dòng chip AVR là nh nhau, vì th nhng gì tôi trình bày trong bài này có th s không đúng vi các dòng AVR khác nh AT90S…Tuy nhiên tôi cng s c gng ch ra mt s đim khác bit c bn đ các bn có th t mình điu khin các chip khác. Sau bài này, tôi hy vng bn s: - Nm bt c bn các b Timer/Counter có trên AVR. - S dng các Timer/Counter nh các b đnh thi. - S dng các Timer/Counter nh các b đm. - S dng các Timer/Counter nh các b to xung điu rng PWM. - Vit mt ví d điu khin đng c RC servo bng PWM. II. Tng quan các b Timer/Counter trên chip Atmega8. Timer/Counter là các module đc lp vi CPU. Chc nng chính ca các b Timer/Counter, nh tên gi ca chúng, là đnh thì (to ra mt khong thi gian, đm th i gian…) và đm s kin. Trên các chip AVR, các b Timer/Counter còn có thêm chc nng to ra các xung điu rng PWM (Pulse Width Modulation), mt s dòng AVR, mt s Timer/Counter còn đc dùng nh các b canh chnh thi gian (calibration) trong các ng dng thi gian thc. Các b Timer/Counter đc chia theo đ rng thanh ghi cha giá tr đnh thi hay giá tr đm ca chúng, c th trên chip Atmega8 có 2 b Timer 8 bit (Timer/Counter0 và Timer/Counter2) và 1 b 16 bit (Timer/Counter1). Ch đ hot đng và phng pháp điu khin ca tng Timer/Counter cng không hoàn toàn ging nhau, ví d chip Atmega8: Timer/Counter0: là mt b đnh thi, đm đn gin vi 8 bit. Gi là đn gin vì b này ch có 1 ch đ hot đng (mode) so vi 5 ch đ ca b Timer/Counter1. Ch đ hoat đng ca Timer/Counter0 thc cht có th coi nh 2 ch đ nh (và cng là 2 chc nng c bn) đó là t o ra mt khong thi gian và đm s kin. Chú ý là trên các chip AVR dòng mega sau này nh Atmega16,32,64…chc nng ca Timer/Counter0 đc nâng lên nh các b Timer/Counter1… Timer/Counter1: là b đnh thi, đm đa nng 16 bit. B Timer/Counter này có 5 ch đ hot đng chính. Ngoài các chc nng thông thng, Timer/Counter1 còn đc dùng đ to ra AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com xung điu rng PWM dùng cho các mc đích điu khin. Có th to 2 tín hiu PWM đc lp trên các chân OC1A (chân 15) và OC1B (chân 16) bng Timer/Counter1. Các b Timer/Counter kiu này đc tích hp thêm khá nhiu trong các chip AVR sau này, ví d Atmega128 có 2 b, Atmega2561 có 4 b… Timer/Counter2: tuy là mt module 8 bit nh Timer/Counter0 nhng Timer/Counter2 có đn 4 ch đ hot đng nh Timer/Counter1, ngoài ra nó nó còn đc s dng nh mt module canh chnh thi gian cho các ng dng thi gian thc (ch đ asynchronous). Trong phm vi bài 4 này, tôi ch y u hng dn cách s dng 4 ch đ hot đng ca các Timer/Counter. Ch đ asynchronous ca Timer/Counter2 s đc b qua vì có th ch đ này không đc s dng ph bin. Trc khi kho sát hot đng ca các Timer/Counter, chúng ta thng nht cách gi tt tên gi ca các Timer/Counter là T/C, ví d T/C0 đ ch Timer/Counter0… III. S dng Timer/Counter. Có mt s đnh ngha quan trng mà chúng ta c n nm bt trc khi s dng các T/C trong AVR: - BOTTOM: là giá tr thp nht mà mt T/C có th đt đc, giá tr này luôn là 0. - MAX: là giá tr ln nht mà mt T/C có th đt đc, giá tr này đc quy đnh bi bi giá tr ln nht mà thanh ghi đm ca T/C có th cha đc. Ví d vi mt b T/C 8 bit thì giá tr MAX luôn là 0xFF (tc 255 trong h thp phân), vi b T/C 16 bit thì MAX bng 0xFFFF (65535). Nh th MAX là giá tr không đi trong mi T/C. - TOP: là giá tr mà khi T/C đt đn nó s thay đi trng thái, giá tr này không nht thit là s ln nht 8 bit hay 16 bit nh MAX, giá tr ca MAX có th thanh đi bng cách điu khin các bit điu khin tng ng hoc có th nhp tr tip thông qua mt s thanh ghi. Chúng ta s hiu rõ v giá tr TOP trong lúc kho sát T/C1. 1. Timer/Counter0 Thanh ghi: có 4 thanh ghi đc thit k riêng cho hot đng và điu khin T/C0, đó là: - TCNT0 (Timer/Counter Register): là 1 thanh ghi 8 bit cha giá tr vn hành ca T/C0. Thanh ghi này cho phép bn đc và ghi giá tr mt cách trc tip. - TCCR0 (Timer/Counter Control Register): là thanh ghi điu khin hot đng ca T/C0. Tuy là thanh ghi 8 bit nhng thc cht ch có 3 bit có tác dng đó là CS00, CS01 và CS02. Các bit CS00, CS01 và CS02 gi là các chip chn ngun xung nhp cho T/C0 (Clock Select). Chc nng các bit này đc mô t trong bng 1. Bng 1: chc nng các bit CS0X AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com - TIMSK (Timer/Counter Interrupt Mask Register): là thanh ghi mt n cho ngt ca tt c các T/C trong Atmega8, trong đó ch có bit TOIE0 tc bit s 0 (bit đu tiên) trong thanh ghi này là liên quan đn T/C0, bit này có tên là bit cho phép ngt khi có tràn T/C0. Tràn (Overflow) là hin tng xy ra khi b giá tr trong thanh ghi TCNT0 đã đt đn MAX (255) và li đm thêm 1 ln na. Khi bit TOIE0=1, và bit I trong thanh ghi trng thái đc set (xem li bài 3 v điu khin ngt), nu mt “tràn” xy ra s dn đn ngt tràn. - TIFR (Timer/Counter Interrupt Flag Register): là thanh ghi c nh cho tt c các b T/C. Trong thanh ghi này bit s 0, TOV0 là c ch th ngt tràn ca T/C0. Khi có ngt tràn xy ra, bit này t đng đc set lên 1. Thông thng trong điu khin các T/C vai trò ca thanh ghi TIFR không quá quan trng. Hot đng: T/C0 hot đng rt đn gi n, hot đng ca T/C đc “kích” bi mt tín hiu (signal), c mi ln xut hin tín hiu “kích” giá tr ca thanh ghi TCNT0 li tng thêm 1 đn v, thanh ghi này tng cho đn khi nó đt mc MAX là 255, tín hiu kích tip theo s làm thanh ghi TCNT0 tr v 0 (tràn), lúc này bit c tràn TOV0 s t đng đc set bng 1. Vi cách thc hot đng nh th có v T/C0 “vô dng” vì c tng t 0 đn 255 ri li quay v không và quá trình lp li. Tuy nhiên, yu t to s khác bit chính là “tính hiu kích” và ngt tràn, kt hp 2 yu t này chúng ta có th to ra 1 b đnh thi gian hoc 1 b đm s kin. Trc ht bn hãy nhìn li bng 1 v các bit chn xung nhp cho T/C0. Xung nhp cho T/C0 chính là tín hiu kích cho T/C0, xung nhp này có th to bng ngun to dao đng ca chip (thch anh, dao đng ni trong chip…). Bng cách đt giá tr cho các bit CS00, CS01 và CS02 c a thanh ghi điu khin TCCR0 chúng ta s quyt đnh “bao lâu” thì s kích T/C0 mt ln. Ví d mch ng dng ca bn có ngun dao đng clk I/O = 1MHz tc chu k 1 nhp là 1us ( 1 micro giây), bn đt TCCR0=5 (SC02=1, CS01=0, CS00=1), cn c theo bng 1 tín hiu kích cho T/C0 s bng clk I/O /1024 ngha là sau 1024us thì T/C0 mi đc “kích” 1 ln, nói cách khác giá tr ca TCNT0 tng thêm 1 sau 1024us (chú ý là tn s đc chia cho 1024 thì chu k s tng 1024 ln). Quan sát 2 dòng cui cùng trong bng 1 bn s thy rng tín hiu kích cho T/C0 có th ly t bên ngoài (External clock source), AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com đây chính là ý tng cho hot đng ca chc nng đm s kin trên T/C0. Bng cách thay đi trng thái chân T0 (chân 6 trên chip Atmega8) chúng ta s làm tng giá tr thanh ghi TCNT0 hay nói cách khác T/C0 có th dùng đ đm s kin xy ra trên chân T0. Di đây chúng ta s xem xét c th cách điu khin T/C0 theo 1 ch đ đnh thi gian và đm. - B đnh thi gian : chúng ta có th to ra 1 b đnh thì đ cài đt mt khong thi gian nào đó. Ví d bn mun rng c sau chính xác 1ms thì chân PB0 thay đi trng thái 1 ln (nhp nháy), bn li không mun dùng các lnh delay nh trc nay vn dùng vì nhc đim ca delay là “CPU không làm gì c” trong lúc delay, vì th trong nhiu trng hp các lnh delay rt hn ch đc s dng. Bây gi chúng ta dùng T/C0 đ làm vic này, ý tng là chúng ta cho b đm T/C0 ho t đng, khi nó đm đ 1ms thì nó s t kích hot ngt tràn, trong trình phc v ngt tràn chúng tat hay đi trng thái chân PB0. Tôi minh ha ý tng nh trong hình 1. 1ms 1ms 1ms CPU runs CPU runs CPU runs Timer/Counter 1ms 1ms 1ms CPU nop CPU nop CPU nop PB0 on DELAY PB0 off PB0 on Overflow PB0 on Overflow PB0 on Overflow PB0 off PB0 off Overflow PB0 off Hình 1. So sánh 2 cách làm vic (CPU nop: CPU không làm gì c) Mt vn đ ny sinh lúc này, nh tôi trình bày trong phn trc, T/C0 ch đm t 0 đn 255 ri li quay v 0 (xy ra 1 ngt tràn), nh th dng nh chúng ta không th cài đt giá tr mong mun bt k cho T/C0? Câu tr li là chúng ta có th bng cách gán trc mt giá tr cho thanh ghi TCNT0, khi y T/C0 s đm t giá tr mà chúng ta gán trc và kt thúc 255. Tuy nhiên do khi tràn xy ra, TCNT0 li đc t đng tr v 0, do đó vic gán giá tr khi to cho TCNT0 phi đc thc hin liên tc sau mi ln xy ra tràn, v trí tt nht là đt trong trình phc v ngt tràn. Vic còn li và cng là vic quan trng nht là vic tính toán giá tr chia (prescaler) cho xung nhp ca T/C0 và vic xác đnh giá tr khi đu cn gán cho thanh ghi TCNT0 đ có đc 1 khong thi gian đnh thì chính xác nh mong mun. Trc h t chúng ta s chn prescaler sao cho hp lí nht (chn giá tr chia bng cách set 3 bit CS02,CS01,CS00). Gi s ngun xung clock “nuôi” chip ca chúng ta là clk I/O =1MHz tc là 1 nhp mt 1us, nu chúng ta đ prescaler=1, tc là tn s ca T/C0 (tm gi là f T/C0 ) cng bng clk I/O =1MHz, c 1us T/C0 đc kích và TCNT0 s tng 1 đn v. Khi đó giá tr ln nht mà T/C0 có th đt đc là 256 x 1us=256us, giá tr này nh hn 1ms mà ta mong mun. Nu chn prescaler=8 (xem bng 1) ngha là c sau 8 nhp (8us) thì TCNT0 mi tng 1 đn v, kh nng ln nht mà T/C0 đm đc là 256 x 8us=2048us, ln hn AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com 1ms, vy ta hoàn toàn có th s dng prescaler=8 đ to ra mt khong đnh thì 1ms. Bc tip theo là xác đnh giá tr khi đu ca TCNT0 đ T/C0 đm đúng 1ms (1000us). ng vi prescaler=8 chúng ta đã bit là c 8us thì TCNT0 tng 1 đn v, d dàng tính đc b đm cn đm 1000/8=125 ln đ ht 1ms, do đó giá tr ban đu ca TCNT0 phi là 256-125=131. Bn có th quan sát hình 2 đ hiu thu đáo h n. 131 132 254 255 0 1 2 count 125 times x 8us =1000us Overflow interrupt count more set TCNT0=131 Hình 2. Quá trình thc hin. Hãy to 1 Project bng Programmer Notepad vi tên gi TIMER0 và vit đon code cho Project này nh trong list 1. List 1. nh thì 1ms vi T/C0 #include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> int main(void){ DDRB=0xFF; //PORTB la output PORT PORTB=0x00; TCCR0=(1<<CS01); // CS02=0, CS01=1, CS00=0: chon Prescaler = 8 TCNT0=131; //gan gia tri khoi tao cho T/C0 TIMSK=(1<<TOIE0); // cho phep ngat khi co tran o T/C0 sei(); //set bit I cho phep ngat toan cuc while (1){ //vòng lp vô tn //do nothing } return 0; } //trinh phuc vu ngat tran T/C0 ISR (TIMER0_OVF_vect ){ PORTB ^=1; //doi trang thai Bit PB0 TCNT0=131; //gan gia tri khoi tao cho T/C0 } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com on code rt đn gin, bn ch cn chú ý đn 3 dòng khai báo cho T/C0 (dòng 9, 10, 11). Vi dòng 9: TCCR0=(1<<CS01) là 1 cách set bit CS01 trong thanh ghi điu khin TCCR0 lên 1, 2 bit CS02 và CS00 đc đ giá tr 0 (bn xem li bài 3 v cách set các bit đc bit trong các thanh ghi), tóm li dòng này tng đng TCCR0=2, giá tr Prescaler đc chn bng 8 (tham kho bng 1). Dòng 10 chúng ta gán giá tr khi to cho thanh ghi TCNT0. Và dòng 11 set bit TIOE0 lên 1 đ cho phép ngt xy ra khi có tràn T/C0. Trong trình phc v ngt tràn T/C0, chúng ta s thc hin đi trng thái chân PB0 bng toán t XOR (^), chú ý đn ý ngha ca toán t XOR: nu XOR mt bit vi s 1 thì bit này s chuyn trng thái (t 0 sang 1 và ngc li). Cui cùng và quan trng là chúng ta cn gán li giá tr khi to cho T/C0. Bn có th v môt mch đin mô phng đn gin dùng 1 Oscilloscope nh trong hình 3 đ kim tra hot đng ca đon code. Hình 3. Mô phng đnh thì ca T/C0. - B đm s kin : nh tôi trình bày trong phn hot đng ca T/C0, chúng ta có th dùng T/C0 nh mt b đm (counter) đ đm các s kin (s thay đi trng thái) xy ra trên chân T0. Bng cách đt giá tr cho thanh ghi TCCR0 = 6 (CS02=1, CS01=1, CS00=0) cho phép đm “cnh xung” trên chân T0, nu TCCR0 = 7 (CS02=1, CS01=1, CS00=1) thì “cnh lên” trên chân T0 s đc đm. Có s dng ngt hay không ph thuc vào mc đích s dng. Kho sát 1 ví d đn gin gn ging vi ví d đm trong bài AVR2 nhng s dng T/C0 và ch đm 1 chiu tng. Kt ni mch đin nh trong hình 4, mi ln Button 1 đc nhn, giá tr đm tng thêm 1. Button 2 dùng reset giá tr đm v 0. on code cho ví d th 2 này đc trình bày trong List 2. AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com Hình 4. m 1 chiu bng T/C0. List 2. nh thì 1ms vi T/C0 (ví d không s dng ngt) #include <avr/io.h> #include <avr/interrupt.h> int main(void){ DDRB=0xFF; //PORTB la output PORT PORTB=0x00; DDRD=0x00; //khai bao PORTD la input de ket noi Button kich vao chan T0 PORTD=0xFF; //su dung dien tro keo len cho PORTD TCCR0=(1<<CS02)|(1<<CS01); // CS02=1, CS01=1, CS00=0: xung nhip tu //chan T0, canh xuong TCNT0=0x00; while (1){ //vòng lp vô tn if (TCNT0==10) TCNT0=0; PORTB=TCNT0; //xuat gia tri dem ra led 7 doan if (bit_is_clear(PIND,7)) TCNT0=0; //Reset bo dem neu chan PD7=0 } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ni dung trong chng trình chính là khai báo các hng giao tip cho các PORT, PORTB là ouput đ xut kt qu đm ra led 7 đon, PORTD đc khái báo input vì các button đc ni vi PORT này. T/C0 đc khai báo s dng ngun kích ngoài t T0, dng cnh xung thông qua dòng TCCR0=(1<<CS02)|(1<<CS01), bn cng có th khai báo tng đng là TCCR0=6 (tham kho bng 1). Giá tr ca b đm s đc xut ra PORTB đ kim tra. im chú ý trong đon chng trình này là macro “bit_is_clear”, đây là mt macro đc đnh ngha trong file “sfr_defs.h” dùng đ kim tra 1 bit trong mt thanh ghi đc bit có đc xóa (bng 0) hay không, trong trng hp ca đon code trên: “if(bit_is_clear(PIND,7)) TCNT0=0;” ngha là kim tra xem nu chân PD7 đc kéo xung 0 (button 2 đc nhn) thì s reset b đm v 0. AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com Nh vy vic s dng T/C0 là tng đi đn gin, bn ch cn khai báo các giá tr thích hp cho thanh ghi điu khin TCCR0 bng cách tham kho bng 1, sau đó khi to giá tr cho TCNT0 (nu cn thit), khai báo có s dng ngt hay không bng cách set hay không set bit TOIE0 trong thanh ghi TIMSK là hoàn tt. 2. Timer/Counter1 (T/C1) Timer/Counter1 là b T/C 16 bits, đa chc nng. ây là b T/C rt lý tng cho lp trình đo lng và điu khin vì có đ phân gii cao (16 bits) và có kh nng to xung điu rng PWM (Pulse Width Modulation – thng dùng đ điu khin đng c). Thanh ghi: có khá nhiu thanh ghi liên quan đn T/C1. Vì là T/C 16 bits trong khi đ rng b nh d liu ca AVR là 8 bit (xem li bài 2) nên đôi khi cn dùng nhng cp thanh ghi 8 bits to thành 1 thanh ghi 16 bit, 2 thanh ghi 8 bits s có tên k t thúc bng các ký t L và H trong đó L là thanh ghi cha 8 bits thp (LOW) và H là thanh ghi cha 8 bits cao (High) ca giá tr 16 bits mà chúng to thành. - TCNT1H và TCNT1L (Timer/Counter Register): là 2 thanh ghi 8 bit to thành thanh ghi 16 bits (TCNT1) cha giá tr vn hành ca T/C1. C 2 thanh ghi này cho phép bn đc và ghi giá tr mt cách trc tip. 2 thanh ghi đc kt hp nh sau: - TCCR1A và TCCR1B (Timer/Counter Control Register): là 2 thanh ghi điu khin hot đng ca T/C1. Tt c các mode hot đng ca T/C1 đu đc xác đnh thông qua các bit trong 2 thanh ghi này. Tuy nhiên, đây không phi là 2 byte cao và thp ca mt thanh ghi mà là 2 thanh ghi hoàn toàn đc lp. Các bit trong 2 thanh ghi này bao gm các bit chn mode hay chn dng sóng (Waveform Generating Mode – WGM), các bit quy đnh dng ngõ ra (Compare Output Match – COM), các bit chn giá tr chia prescaler cho xung nhp (Clock Select – CS)…Cu trúc ca 2 thanh ghi đc trình bày nh bên di. AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com Nhìn chung đ “thuc” ht cách phi hp các bit trong 2 thanh ghi TCCR1A và TCCR1B là tng đi phc tp vì T/C1 có rt nhiu mode hot đng, chúng ta s kho sát chúng trong phn các ch đ hot đng ca T/C1 bên di. đây, trong thanh ghi TCCR1B có 3 bit khá quen thuc là CS10, CS11 và CS12. ây là các bit chn xung nhp cho T/C1 nh truong T/C0. Bng 2 s tóm tt các ch đ xung nhp trong T/C1. Bng 2: chc nng các bit CS12, CS11 và CS10 - OCR1A và OCR1B (Ouput Compare Register A và B): có mt s khái nim mi mà chúng ta cn bit khi làm vic vi T/C1, mt trong s đó là Ouput Compare (sorry, I don’t wanna translate it to Vietnamese). Trong lúc T/C hot đng, giá tr thanh ghi TCNT1 tng, giá tr này đc liên tc so sánh vi các thanh ghi OCR1A và OCR1B (so sánh đc lp vi tng thanh ghi), vic so sánh này trên AVR gi là gi là Ouput Compare. Khi giá tr so sánh bng nhau thì 1 “Match” xy ra, khi đó mt ngt hoc 1 s thay đi trên chân OC1A (hoc/và chân OC1B) xy ra (đây là cách to PWM bi T/C1). Ti sao li có A và B? ó là vì ng i thit k AVR mun m rng kh nng ng dng T/C1 cho bn. A và B đi din cho 2 kênh (channel) và B. Cng vì điu này mà chúng ta có th to 2 kênh PWM bng T/C1. Tóm li, c bn 2 thanh ghi này cha các giá tr đ so sánh, chc nng và các ch đ hot đng c th ca chúng s đc kho sát trong các phn sau. AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com - ICR1 (InputCapture Register 1): khái nim mi th 2 ca T/C1 là Input Capture. Khi có 1 s kin trên chân ICP1 (chân 14 trên Atmega8), thanh ghi ICR1s “capture” giá tr ca thanh ghi đm TCNT1. Mt ngt có th xy ra trong trng hp này, vì th Input Capture có th đc dùng đ cp nht giá tr “TOP” ca T/C1. - TIMSK (Timer/Counter Interrupt Mask Register): các b T/C trên AVR dùng chung thanh ghi mt n ngt, vì th TIMSK cng đc dùng đ quy đnh ngt cho T/C1. Có điu lúc này chúng ta ch quan tâm đn các bit t 2 đn 5 ca TIMSK. Có tt c 4 loi ngt trên T/C1 (nh li T/C0 ch có 1 loi ngt tràn) Bit 2 trong TIMSK là TOIE1, bit quy đnh ngt tràn cho thanh T/C1 (tng t trng hp ca T/C0). Bit 3, OCIE1B là bit cho phép ngt khi có 1 “Match” xy ra trong vic so sánh TCNT1 vi OCR1B. Bit 4, OCIE1A là bit cho phép ngt khi có 1 “Match” xy ra trong vic so sánh TCNT1 vi OCR1A. Bit 5, TICIE1 là bit cho phép ngt trong trng hp Input Capture đc dùng. Cùng vi vic set các bit trên, bit I trong thanh ghi trng thái phi đc set nu mun s dng ngt (xem li bài 3 v điu khin ngt). - TIFR (Timer/Counter Interrupt Flag Register): là thanh ghi c nh cho tt c các b T/C. Các bit t 2 đn 5 trong thanh ghi này là các c tr ng thái ca T/C1. [...]... chip atmega8 còn có b timer2 8 bits có PWM và asynchronous operation V m t ch c n ng timer2 gi ng nh phiên b n 8 bit c a timer1 ( phân gi i th p h n nh ng có cùng ch và ph ng th c ho t ng) i m khác bi t và c ng là i m c bi t c a Timer2 là kh n ng ho t ng không ng b v i chip, nó gi ng nh vi c b n tách timer2 ra thành 1 chip timer riêng, vì th c n cung c p 1 ngu n xung clock khác cho timer này (1 th ch... tr c Dòng 11 và 12 th c hi n set các bit i u khi n Timer1 , tr c h t là các bit COM B n th y tôi ch set 2 bit COM1A1 và COM1B1: (1 . b Timer/ Counter có trên AVR. - S dng các Timer/ Counter nh các b đnh thi. - S dng các Timer/ Counter nh các b đm. - S dng các Timer/ Counter nh các b to xung điu rng PWM. -. AUTO.NLU For more details and questions, contact me: thanhtam.h@gmail.com CÙNG HC AVR AVR4 TIMER/ COUNTER VÀ CHUYN I ADC Tho thun: tài liu này thuc quyn s hu ca tác gi, bn có th. ng C cho AVR vi WinAVR và cách s dng ngt trong AVR. Bài 4 này chúng ta s kho sát các ch đ hot đng ca phng pháp điu khin các b đnh thi, đm (Timer/ Counter) trong AVR. Công