Ạ Ọ
Đ I H C THÁI NGUYÊN KHOA CÔNG NGH THÔNG TIN
Ệ
BÁO CÁO BÀI T P L N
Ậ Ớ
MÔN:K Thu t Vi Đi u Khi n ậ
ề
ể
ỹ
Đ tài:ề
NGHIÊN C U H ĐI U HÀNH
Ệ Ề
Ứ
NHÚNG TH IỜ
GIAN TH C FREERTOS
Ự
Thành viên tham gia : Ph m Ng c Th ch ọ ạ ạ
Ngô H u H ng ữ ư
Giáo viên h : Ph m Qu c Th nh ướ ng d n ẫ ố ạ ị
Thái nguyên, tháng 11 năm 2009
M C L C
Ụ
Ụ
Ế
Ắ
Ả ớ ự
ệ c ti n dài trong quá
ướ ế
ả
ề
ơ
ả
ư
ả ế
ớ
ệ ề
ờ
ự
ả ể ế
ồ
ở ư
ấ
ệ
ệ
ữ
ệ ề
ặ
ệ t trong lĩnh v c đi n
ư ữ
ệ ề
ờ
ự
ư
ế
ả
ả ể ể
ề ề
ầ
Ở Ầ
ƯỚ
Ụ
Ầ Ầ Ề Ề Ủ
Ề
Ờ
Ầ
Ệ
Ề
Ể
5 TÓM T T K T QU B ............................................................... Ngày nay, cùng v i s phát tri n chung c a công ngh , lĩnh ủ ể v c h đi u hành đã có nh ng b ữ ự ệ ề trình hình thành và phát tri n c a mình. T s kh i đ u ừ ự ở ầ ể ủ ư ệ ề đ n gi n có b n quy n trên máy tính cá nhân nh H đi u hành DOS, ti n lên các phiên b n Windows nh win3.1 r i ồ win95, win 98 ... m i đây nh t là h đi u hành đa nhi m ệ ấ ệ ề th i gian th c Win7, bên c nh đó ph i k đ n các h đi u ạ hành mã ngu n m nh Max OS, Linux, Ubuntu... hi n nay ệ đã xu t hi n nh ng h đi u hành dành cho đi n tho i đi ạ đ ng nh Windown Mobile, và đ c bi ệ ự ộ có nh ng h đi u hành chuyên bi t ử t cho các chip x lý ệ ử nh VxWork, uCLinux,FreeRTOS, OpenRTOS và ư SAFERTOS...Trong đó c n ph i nói đ n FreeRTOS, v i ớ ế ầ i quy t nhi u yêu tính th i gian th c và các u đi m đã gi c u trong công ngh vi x lý. Đ làm rõ đi u này, đ tài ề ử ệ ầ c a em trình bày 3 ph n: 5 ............................................................. ủ PH N I : M Đ U 5 ....................................................................... Ứ PH N NÀY TRÌNH BÀY V TÌNH HÌNH NGHIÊN C U Ề V Đ TÀI NÀY TRONG VÀ NGOÀI N C, M C TIÊU C A Đ TÀI 5 .................................................................................. Ự I THI U HĐH NHÚNG TH I GIAN TH C PH N II: GI Ớ FREERTOS VÀ VI ĐI U KHI N ATMEGA 128 5 ................... 6 ......... SUMMARY OF RESULTS OF RESEARCH THEMES Today, with the development of technology, field operating system has made strides in the process of formation and From the beginning simple copyright on development of his. personal computer operating system like DOS, progress on the Windows version as win3.1 then Win95, Win 98 ... latest operating system multitasking real-time Win7, in addition to mentioning that the open source operating systems like Mac
2
now appeared that the operating system
.. In which need FreeRTOS
OS, Linux, Ubuntu ... for mobile phones as Windown Mobile, and especially in the field of electronics is the operating system dedicated to processing chip as VxWork, uCLinux, FreeRTOS, and OpenRTOS SAFERTOS. mention, with real-time and solved many advantages required To illustrate this, she presented in microprocessor technology. 6 ................................................................. the topic of three parts:
PART I: TO TOP PRESENTATION OF THIS SITUATION RESEARCH ON THIS TOPIC AT HOME AND ABROAD, OBJECTIVES OF 6 ......................................................................................... THEMES
PART II: ABOUT TIME AVAILABILITY OF OS FREERTOS VI AND CONTROL ATMEGA 128 THIS PRESENTATION AS MANAGER DEVICES AND EXPLANATION Ò GERENAL CONCEPTS, FREERTOS AND PRESENTATION OF VDK ATMEGA 128
6 .......................................
PART III: THE STEP DESIGN APPLICATIONS Minh Hoa THIS STEP PRESENTATION OF DESIGN APPLICATIONS ON OS FREERTOS PART IV: THE RESULTS OF ASSESSMENT AND DAT
Ầ
ƯỚ ƯỚ
Ứ Ứ
Ệ
Ề
Ể
I THI U VI ĐI U KHI N ATmega 128 I THI U H ĐI U HÀNH NHÚNG TH I GIAN TH C FreeRTOS
Ự
Ệ
Ề Ề ỏ ứ
ụ
Ấ
Ằ
Ụ Ụ
Ị
THIS YET ACHIEVED RESULTS AND GENERAL 6 ............................................................................... ASSESSMENT 7 PH N I : M Đ U ....................................................................... Ở Ầ .............................. C 7 I.1 T NG QUAN TÌNH HÌNH NGHIÊN C U NGOÀI N Ổ 7 ............................ C I.2 T NG QUAN TÌNH HÌNH NGHIÊN C U TRONG N Ổ I.3 M C TIÊU Đ TÀI 7 ................................................................................................ Ề Ụ 8 .......................................................................... II.1 T NG QUAN H ĐI U HÀNH Ổ II.2 GI 12 ..................................................... Ớ Ệ II.3 GI 33 ...... Ờ Ớ Ệ 44 t k mô ph ng ng d ng .................................................................... Hình 3.1: Thi ế ế III.2 L A CH N C U HÌNH CHO HĐH QUA FreeRTConfig.h 45 ............................ Ọ Ự III.3 VI T PH N NG D NG B NG AVR Studio 47 ................................................. Ầ Ứ Ế 47 III.4 D CH PH N NG D NG THÀNH FILE .hex ................................................. Ầ Ứ 48 ..................................................... III.5 DÙNG M CH N P VÀO VI ĐI U KHI N Ạ
Ạ
Ề
Ể
3
4
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
TÓM T T K T QU
Ả B
Ắ
Ế
ể ệ ủ ớ ự ướ ế ơ ả ề ữ ừ ự ở ầ ể ủ c ti n dài trong quá trình hình thành và phát tri n c a ư ả ệ ề ư ồ ế ấ ự ờ ở ư ệ ồ ớ ả ể ế ệ ệ ề ệ ề ệ ệ ề ữ ệ ạ ấ t trong lĩnh v c đi n t có nh ng h ữ ự ệ ế ầ ớ ể ế ề ả ờ ự ệ ề Ngày nay, cùng v i s phát tri n chung c a công ngh , lĩnh v c h đi u hành đã có nh ng b mình. T s kh i đ u đ n gi n có b n quy n trên máy tính cá nhân nh ả H đi u hành DOS, ti n lên các phiên b n Windows nh win3.1 r i win95, win 98 ... m i đây nh t là h đi u hành đa nhi m th i gian th c Win7, bên c nh đó ph i k đ n các h đi u hành mã ngu n m nh Max OS, Linux, ạ Ubuntu... hi n nay đã xu t hi n nh ng h đi u hành dành cho đi n tho i đi ệ đ ng nh Windown Mobile, và đ c bi ệ ư ộ ệ ử ặ ư VxWork, uCLinux,FreeRTOS, t cho các chip x lý nh đi u hành chuyên bi ử ề OpenRTOS và SAFERTOS...Trong đó c n ph i nói đ n FreeRTOS, v i tính ả ệ i quy t nhi u yêu c u trong công ngh th i gian th c và các u đi m đã gi vi x lý. Đ làm rõ đi u này, đ tài c a em trình bày 3 ph n: ủ ề ầ ầ ự ể ư ề ử
PH N I : Ầ M Đ U Ở Ầ
Ầ Ứ Ề Ề PH N NÀY TRÌNH BÀY V TÌNH HÌNH NGHIÊN C U V Đ TÀI NÀY TRONG VÀ NGOÀI N Ề C, M C TIÊU C A Đ TÀI ƯỚ Ụ Ủ Ề
NGUYÊN LÝ H ĐI U HÀNH NÓI CHUNG VÀ
Ệ
Ầ I THÍCH CÁC KHÁI NI M, TRÌNH BÀY V FREERTOS VÀ VĐK Ả
Ề Ề
Ệ
PH N NÀY TRÌNH BÀY GI ATMEGA 128
Ầ Ớ I THI U HĐH NHÚNG TH I GIAN TH C FREERTOS Ờ Ự Ệ PH N II: GI VÀ VI ĐI U KHI N ATMEGA 128 Ể Ề
PH N III: CÁC B C THI T K NG D NG MINH H A Ầ ƯỚ Ế Ứ Ọ Ụ Ế
C THI T K NG D NG TRÊN Ầ ƯỚ Ế Ứ Ụ Ế PH N NÀY TRÌNH BÀY CÁC B HĐH FREERTOS
PH N IV: CÁC K T QU Đ T Đ C VÀ ĐÁNH GIÁ Ả Ạ ƯỢ Ầ Ế
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
5
ệ
ạ
ọ
C VÀ ĐÁNH GIÁ Ả Ế Ạ ƯỢ PH N NÀY NÊU RA NH NG K T QU ĐA Đ T Đ Ữ Ầ CHUNG
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
SUMMARY OF RESULTS OF RESEARCH THEMES
Today, with the development of technology, field operating system has made strides in the process of formation and development of his. From the beginning simple copyright on personal computer operating system like DOS, progress on the Windows version as win3.1 then Win95, Win 98 ... latest operating system multitasking real-time Win7, in addition to mentioning that the open source operating systems like Mac OS, Linux, Ubuntu ... now appeared that the operating system for mobile phones as Windown Mobile, and especially in the field of electronics is the operating system dedicated to processing chip as VxWork, uCLinux, FreeRTOS, and OpenRTOS SAFERTOS. .. In which need FreeRTOS mention, with real-time and solved many advantages required in microprocessor technology. To illustrate this, she presented the topic of three parts:
PART I: TO TOP PRESENTATION OF THIS SITUATION RESEARCH ON THIS TOPIC AT HOME AND ABROAD, OBJECTIVES OF THEMES
PART II: ABOUT TIME AVAILABILITY OF OS FREERTOS VI AND CONTROL ATMEGA 128 THIS PRESENTATION AS MANAGER DEVICES AND EXPLANATION Ò GERENAL CONCEPTS, FREERTOS AND PRESENTATION OF VDK ATMEGA 128
PART III: THE STEP DESIGN APPLICATIONS Minh Hoa THIS STEP PRESENTATION OF DESIGN APPLICATIONS ON OS FREERTOS
PART IV: THE RESULTS OF ASSESSMENT AND DAT
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
6
ệ
ạ
ọ
THIS YET ACHIEVED RESULTS AND GENERAL ASSESSMENT
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
PH N I : M Đ U
Ở Ầ
Ầ
Ứ
Ổ Ngoài n
ạ ề
I.1 T NG QUAN TÌNH HÌNH NGHIÊN C U NGOÀI N ượ
ẽ ặ c : đ tài đang đ ấ ừ ứ ấ ự ấ ế c nghiên c u r t m nh m có th nói h th ng ệ ố ế ị t b ề ề t b tiêu dùng nh lò vi ba, ế ị các thi ư ụ ng h th ng nhúng có ti m năng phát tri n vô cùng l n. ấ ấ ị ườ ớ Theo các nhà ề ể ế ớ ử ố i thì s chip x lý trong các máy PC và các server, các m ng ạ ế ế ầ ử ổ i n m trong các h th ng nhúng. ơ ộ i. H n 99% s vi x lý còn l ố ạ ằ ẫ ậ ả ầ ầ ề ị ườ ầ ề ố ệ ố ng nhúng và là m t trong ị c coi là th ượ ư ng đ y h a h n v i các đ i tác chuyên s n xu t ph n m m nhúng nh ề ả ố i. Đây đ ầ t Nam.
ƯỚ C ướ ể c s d ng trong r t nhi u lĩnh v c, r t nhi u m t hàng t nhúng đ ượ ử ụ cao c p nh v tinh, tên l a, tàu con thoi đ n các thi ử ư ệ máy s y, máy hút b i… Th tr ệ ố thông kê trên th gi LAN, WAN, Internet ch chi m không đ y 1% t ng s chip vi x lý có trên th ỉ gi ử ớ T i Châu Á, Nh t B n đang d n đ u v th tr ạ ng ph n m m nhúng hàng đ u th gi nh ng th tr ế ớ ữ tr ấ ườ Trung Qu c, Indonesia, Nga, Ireland, Israel, và c Vi ả ệ
ị ườ ầ ứ ẹ ớ ố
I.2 T NG QUAN TÌNH HÌNH NGHIÊN C U TRONG N
Ứ
Ổ Trong n
ướ ệ ố
ƯỚ C ầ ộ ố
ề ề ư ờ ớ ố ơ ọ ng Đ i h c Qu c gia, Đ i h c Bách khoa, các đ n v nh ạ ọ ứ ệ ị ư ự ộ - Tin h c và T đ ng , Công ty VTC
ố ẫ ử ụ ề ẻ ứ ế ệ ể ơ c cài đ t h ệ ể c: H th ng nhúng m i đ c quan tâm trong th i gian g n đây. ớ ượ Các doanh nghi p làm ph n m m nhúng cũng ch a nhi u, m i có m t s trung ầ ệ tâm thu c các tr ạ ọ ườ ộ H c vi n K thu t quân s , Vi n nghiên c u Đi n t ọ ệ ử ự ậ ỹ ệ - Tin h c, Công ty thi hóa, T ng công ty Đi n t y t t b Đi n t ế ị ọ ổ ệ ử ế ệ ử – Truy n hình s m t đ t và m t s công ty ph n m m khác…. ề ầ ộ ố ố ặ ấ ề ứ ậ ng th c l p Đây là đ tài nghiên c u khá m i m , đa s v n s d ng ph ươ ớ trình đ n nhi m/ đ n ti n trình trong đi u khi n. Cũng đã có m t vài h th ng ệ ố ộ ề đi u khi n mà lõi c a các h th ng này chính là các h nhúng đ ặ ệ ượ đi u hành nhúng nh m ph c v các ng d ng đi u khi n đa nhi m. ệ ệ ố ụ ụ ơ ủ ằ ề ề ứ ụ ề ể
I.3 M C TIÊU Đ TÀI
Ụ
Ề
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
7
ệ
ạ
ọ
ả ể ể i pháp cung c p các d ch v n n cho các ng d ng đi u khi n. ụ ề ứ ụ ề ấ ệ ố ệ ể ề ệ Tìm hi u gi ị Gi iquy t các nhu c u x lý đa nhi m trong các h th ng đi u khi n và h ầ ử ế ả ụ . th ng thông tin trong công nghi p và dân d ng ố ệ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
PH N II: GI
Ầ
Ớ
Ờ
Ệ
FREERTOS VÀ VI ĐI U KHI N ATMEGA 128 Ề
I THI U HĐH NHÚNG TH I GIAN TH C Ự Ể
II.1 T NG QUAN H ĐI U HÀNH
Ệ Ề
Ổ
II.1.1KHÁI NI M V H ĐI U HÀNH Ề Ệ Ề
ng trình là m tộ ch hay m tộ h ch ng trình ệ ươ ụ ủ
ữ ho tạ đ ng gi a ộ ủ ệ đi u hành là ề ng trình. ươ i h n và hi u qu h n. ả ơ ệ ệ ố c chia làm b n ph n chính : ph n c ng, h ầ ứ ng cung c p m t môi tr Nó làm cho máy tính d s d ng h n, thu n l ộ Hệ đi u hành là m t ph n quan tr ng c a h u h t các h th ng máy tính. M t ộ ề h th ng máy tính th ệ đi uề ệ ố hành, các ch ng trình ng d ng và ng Ệ Hệ đi u hành ươ ề i s d ng (user) và ph n c ng c a máy tính. M c tiêu c a h ầ ứ ườ ử ụ i s d ng có th thi hành các ch ng ườ đ ng ể ể ườ ử ụ ộ ấ ậ ợ ơ ơ ể ử ụ ủ ầ ế ọ ố ầ ườ ử ụ i s d ng. ầ ng ườ đ ứ ượ ụ ữ ị t b nh p xu t, ươ ươ ạ ố ơ ủ ấ đây là nh ng tài ệ ng trình d ch, h ươ ng ng m i. Các ch ườ i đi u khi n và ph i h p vi c s d ng ph n c ng cho ầ ủ ầ ứ ề ể ề ầ ứ bao g m CPU, b nh , các thi ộ ớ ng trình ng d ng ứ ươ ươ đ gi ể ả ố ợ ườ ử ụ ng trình có th làm vi c h u hi u trên ươ Ph n c ng ồ nguyên c a máy tính. Ch ủ th ng c s d li u, các trò ch i, và các ch ơ ở ữ ệ trình này s d ng tài nguyên c a máy tính ử ụ s d ng. ử ụ Hệ đi u hành nh ng ng d ng khác nhau c a nhi u ng ữ ứ cung c p m t môi tr ấ ế ị ậ ụ nh các ch ư ng trình th i quy t các yêu c u c a ng ế ệ ử ụ i s d ng khác nhau. H ệ ữ ề ủ ng mà các ch ươ ệ đi u hành ề đó. ệ ụ ộ ườ ể
Hình 1.1 Mô hình tr u t ng c a h th ng máy tính ừ ượ ủ ệ ố
ề ượ ể đ ộ Hệ đi u hành có th ề ủ ộ ớ ng trình yêu c u đ ư ủ ư ờ t b nh p xu t v.v… ế ị ậ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
8
ệ
ạ
ọ
ộ ng trình và ng i s d ng khi c n thi c coi nh là b phân ph i tài nguyên c a máy tính. ố Nhi u tài nguyên c a máy tính nh th i gian s d ng CPU, vùng b nh , vùng l u tr t p tin, thi ể ả i ầ đ gi ấ ươ ư ạ đ ng nh m t b qu n lý các tài nguyên và quy t v n đ . H đi u hành ho t ề ệ ề ấ t. Do có r t phân ph i chúng cho các ch ử ụ c các ch ượ ư ộ ộ ả ườ ử ụ ữ ậ ế ấ ố ươ ế ầ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
ề ệ đi u hành ph i gi ả ề ả ế ấ đ tranh ch p và ph i ề ầ c p phát tài nguyên ấ i quy t v n ầ ữ ả ấ ề ấ nào ứ ự ể đ ượ t là các thi ng trình ki m soát vi c s d ng máy tính, ươ ể ả cho nh ng yêu c u theo th t ộ ệ đi u hành cũng có th ệ đ ho t đ ng ể ạ ộ ư c coi nh là ế ị ậ t b nh p đ c bi ặ ệ ử ụ nhi u yêu c u, h quy tế đ nhị c a máy tính là hi u qu nh t. M t h ủ ệ m t ch ộ xu t.ấ ị Tuy nhiên, nhìn chung ch a cóư ề i quy t các v n đ s d ng h th ng máy tính. ấ ề ể ả ồ ạ đ gi i đ nh nghĩa nào là hoàn h o v h ề ử ụ ế ươ ệ
ụ ụ ụ ỗ ợ t quan tr ng trong nh ng h th ng nhi u ng ữ ệ ề đ c bi ặ ệ ố ữ ớ ng ph n vì v y lý thuy t v h ọ ầ ứ ả ầ ươ ề ậ i u hóa vi c s d ng tài nguyên c a máy tính. ệ ử ụ ệ ố ư ủ ả ề ệ đi u hành. Hệ đi u hành t n t ệ ố ơ ng trình d dàng h n. M c tiêu c b n c a nó là giúp cho vi c thi hành các ch ễ ơ ả ủ ả ơ M c tiêu th hai là h tr cho các thao tác trên h th ng máy tính hi u qu h n. ệ ố ệ ứ i dùng và M c tiêu này ệ ố ườ ụ trong nh ng h th ng l n(ph n c ng + quy mô s d ng). Tuy nhiên hai m c ử ụ tiêu này cũng có ph n t ế ề ệ đi u hành t p trung ậ vào vi c t
Ạ Ệ Ề
ệ ố
ự : II.1.2 PHÂN LO I H ĐI U HÀNH II.1.2.1 H th ng x lý theo lô B giám sát th ườ ệ ộ ộ ệ ệ ế ế ẽ ự i l p trình, do ử ng tr c ấ ệ ủ ươ đó th i gian th c hi n s mau ệ ẽ ự ờ ế ế để t k ự đ ng tr c ượ ng trình này ự đ ng, ch ộ c thi ươ ệ ộ
th c hi n các công vi c l n l t theo nh ng ch ng trình, còn g i là b giám sát th ự ệ ng trú trong b nh chính. ộ ự ệ ầ ượ ớ ệ ữ ỉ
Khi m t công vi c ch m d t, h th ng s th c hi n công vi c k ti p mà ứ ệ ố không c n s can thi p c a ng ườ ậ ầ ự h n. M t ch ườ ộ ọ ộ ơ giám sát vi c th c hi n dãy các công vi c m t cách t ệ luôn luôn th ườ Hệ đi u hành theo lô ề thị đ nh tr c. ị ướ CPU và thao tác nh p xu t ậ ấ : ng hay nhàn r i do t c ỗ ệ ủ ườ ng là thi t b c ) ch m h n r t nhi u l n so v i các thi ế ị ậ t b ố đ làm vi c c a các thi ộ ề ầ ơ ấ ớ
ậ ế ị ơ ấ ậ đó ph i có các ph ng pháp . Cho t b nh p ế ị ậ đ đ ng b hóa vi c ho t đ ng c a CPU ủ ấ t b nh p xu t ế ị đi n t ệ ử ớ ạ ộ ơ ấ ộ ề ầ ệ ể ồ ươ ấ ả ậ ấ CPU th (th ườ dù là m t CPU ch m nh t, nó cũng nhanh h n r t nhi u l n so v i thi ộ xu t. Do và thao tác nh p xu t. X lý off_line : ử thi t b nh p và xu t ra thi ự ế ừ ế t . CPU ch thao thác v i b ế ị ậ ỉ ấ ớ ộ ả đ c tr c ti p t ọ ộ b l u tr trung gian ữ ừ ộ ư ế ệ đ c hay xu t đ u đ n và t ọ b l u tr trung gian. ữ X lý off_line là thay vì CPU ph i ử b xu t, h th ng dùng m t ộ ư ệ ố ị ấ ph n này. Vi c ấ ề ậ Spooling :
ồ ộ ử ụ đĩa để ử ủ Spool (simultaneous peripheral operation on-line) là đ ng b hóa các thao tác bên ngoài on-line. C ch này cho phép x lý c a CPU là on-line, s d ng ơ ế l u các d li u nh p cũng nh xu t. ậ ư ư ấ ữ ệ
t b , v n
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
9
ệ
ạ
ọ
ngươ II.1.2.2 H th ng x lý theo lô ử ế ị ấ đ l p l ch cho các Khi có nhi u công vi c cùng truy xu t lên thi ề ậ ị ệ t. Khía c nh quan tr ng nh t trong vi c l p l ch là kh ệ ậ ị ấ đa ch ấ ọ ả ệ ạ ệ ố ề ầ ng. ngươ (multiprogram) gia tăng khai thác CPU b ng cách t ươ ổ công vi c là c n thi năng đa ch ch c các công vi c sao cho CPU luôn luôn ph i trong tình tr ng làm vi c . ế Đa ch ệ ằ ệ ứ ả ạ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
ưở ng nh sau : h ư ộ ầ ủ ầ ệ ệ ở ơ ư n i l u đang ệ t b thì CPU không ngh mà th c hi n ệ ỉ ự
ườ ử ụ ề ị m t ph n c a các công vi c ệ đi u hành l u gi Ý t ữ ộ ư ề t th c hi n các ph n công vi c này. Khi tr trong b nh . CPU s l n l ệ ẽ ầ ượ ữ ự ớ th c hi n, n u có yêu c u truy xu t thi ế ự ế ị ấ ầ ti p công vi c th hai… ệ ế ng h đa ch i s d ng vì ấ đ l p l ch cho ề ậ ị ấ ứ V i hớ ệ đa ch ươ v y,ậ hệ đi u hành ề công vi c, l p l ch cho b nh và cho c CPU n a. ệ ậ ị ệ đi u hành ra quy t ngươ r t tinh vi. H ph i x lý các v n ộ ớ ế đ nh cho ng ệ ả ử ữ ả
ệ ố ng. H ệ ở ộ
ư ệ đa ch ủ ệ đa ch ươ ề ể đ i c a CPU nh h ệ ệ ố đa nhi mệ (multitasking). Nhi u công vi c ngươ ễ ơ ế ổ ổ ủ ể đ i di n ra r t nhanh. c phát tri n ể ệ ử ụ ủ ậ ị ỗ ng trình khi thi hành ờ ộ ầ ộ ế ộ ủ ả ấ ề ả ờ ề ờ ộ ẻ ệ đi u hành chia x đ ng b do th i gian ộ ồ c thi hành cùng đang đ ượ ể ế ả ọ
ơ ệ đi u hành ề ẻ ứ ạ ề đa ch ộ ươ ớ ả ả ả ệ ộ ớ ử ụ ấ ậ II.1.2.3 H th ng chia x th i gian ẻ ờ H th ng chia x th i gian là m t m r ng logic c a h ộ ẻ ờ ệ ố h th ng c g i là đ th ng này còn ượ ọ ố c th c hi n thông qua c ch chuy n cùng đ ệ ự ượ nh ng th i gian m i l n chuy n ỗ ầ ư ấ ờ H th ng chia x ẻ đ ộ ể đ cung c p vi c s d ng bên trong c a m t ượ ệ ố ấ máy tính có giá tr h n. đa ẻ th i gian dùng l p l ch CPU và ị ơ Hệ đi u hành chia x ề ch ngươ đ cung c p cho m i ng i s d ng m t ph n nh trong máy tính chia ể ỏ ườ ử ụ ấ x . M t ch c g i là m t ti n trình. Trong quá trình thi đ ẻ ươ ượ ọ hành c a m t ti n trình, nó ph i th c hi n các thao tác nh p xu t và trong ậ ộ ế ệ ự đó CPU s thi hành m t ti n trình khác. H kho ng th i gian ộ ế ẽ cho phép nhi u ng i s d ng chia x máy tính m t cách ẻ ườ ử ụ chuy n đ i nhanh nên h có c m giác là các ti n trình ổ lúc. Hệ đi u hành chia x ph c t p h n h ng. Nó ph i có các ả ấ ch c năng : qu n tr và b o v b nh , s d ng b nh o. Nó cũng cung c p ị ứ h th ng t p tin truy xu t on-line… ệ ố Hệ đi u hành chia x là ki u c a các h ề ệ đi u hành hi n ệ đ i ngày nay. ể ủ ẻ ề ạ
II.1.2.4 H th ng song song ệ ố Ngoài các h th ng ch có m t b x lý còn có các h th ng có nhi u b x ệ ố ộ ộ ử ỉ ẻ ệ ố đ ệ ố ồ ộ ề ộ ử ế ị t b ớ ồ ề ữ ệ đ ng h , b nh và các thi ạ ạ ộ ử ng truy n d li u, ớ ề ệ ố ố ượ ng ơ ượ ự ự ệ đ ạ ệ ớ ự ư ộ ử ẽ ự
ớ ẽ ố ư ơ ệ ố ề ộ ử ẻ ề ư ữ ạ i u h n h th ng có nhi u máy có m t ộ t b ngo i vi, h th ng l u tr , ngu n ồ ệ ố ế ị ộ ậ ng trình cùng làm vi c trên cùng m t t p ệ ươ ề ậ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
10
ệ
ạ
ọ
c x lý trên nhi u b x lý và đ tin c y. Các ch c năng đ ứ ậ lý cùng chia x h th ng ườ ngo i vi. Các b x lý này liên l c bên trong v i nhau . Có nhi u nguyên nhân xây d ng d ng h th ng này. V i s gia tăng s l b x lý, công vi c ả c th c hi n nhanh chóng h n, Nh ng không ph i ộ ử ệ th i gian, nghĩa là có n b x lý không có nghĩa là s th c hi n theođúng t l ỉ ệ ờ nhanh h n n l n. ầ ơ H th ng v i máy nhi u b x lý s t ệ ố b x lý vì các b x lý chia x các thi ộ ử ộ ử … và r t thu n ti n cho nhi u ch ệ ấ h p d li u. ợ ữ ệ M t lý do n a là ộ ữ ộ s h ng hóc c a m t b x lý s không nh h ộ ộ ử ủ ự ỏ ưở đ n toàn b h th ng. ề ộ ử ộ ệ ố H th ng ả ng s d ng cách ử ụ ế ử ạ ớ ệ ố đa x lýử thông th ỗ ộ ử ạ ớ ế c giao m t công vi c riêng bi t.. M t b x lý chính này m i b x lý ch y v i m t b n sao c a h liên l c v i nhau khi c n thi ộ ố ệ ố ầ trong đó m i b x lý đ ệ ượ ỗ ộ ử ẽ ườ ộ ả t. M t s h th ng s d ng ệ ượ ử ng ố ứ , trong cách đa x lý đ i x ng ủ ệ đi u hành, nh ng b n sao này ả ữ ề ấ ố ứ ử ụ đa x lý b t đ i x ng, ử ộ ộ ử ộ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
ệ ể ỉ ặ ị đã đ ộ ệ ố ữ ự ộ ử cượ đ nh nghĩa tr
ộ ố ứ ủ ề ử đ i x ng là version Encore c a UNIX cho máy tính ủ ộ ử Ư đi m c a nó là nhi u ti n trình ể ể ự ế ệ ộ ệ ố đa x lý cho phép nhi u công vi c và ộ ề ẻ ự đ ng trong nh ng b x lý khác nhau. ữ ệ ố ữ ấ ồ ủ ộ ử ki m soát toàn b h th ng, các b x lý khác th c hi n theo l nh c a b x lý ệ chính ho c theo nh ng ch th ạ c. Mô hình này theo d ng ướ ị quan h ch t . B x lý chính s l p l ch cho các b x lý khác. ệ ủ ớ ộ ử ộ ử ẽ ậ ị M t ví d v h th ng x lý ụ ề ệ ố Multimax. H th ng này có hàng tá b x lý. u ệ ố có th th c hi n cùng lúc . M t h th ng ử ệ c chia x t tài nguyên đ ộ ử ượ ệ ố đa x lý không đ ng b th H th ng ệ ử trong đó h u h t th i gian ho t đ ng đ u dành cho x lý nh p xu t. ờ ầ ế ớ ng xu t hi n trong nh ng h th ng l n, ộ ườ ậ ề ạ ộ ử ấ
ệ ố ư ươ ệ ố ẻ ờ ự ư ệ ố
ồ ớ ng dây ệ ườ ư ữ ố đ cao hay đ ướ đi n tho i. ạ ng khác nhau v kích th ề nh h th ng chia x th i gian nh ng các b ộ ộ ớ đó m i b x lý có b nh ẻ ộ ớ đ ng h , thay vào ỗ ộ ử ồ ng truy n thông đ ề ườ ộ ử ộ ệ ộ ử ể ớ ườ đ ng c tham kh o v i nhi u tên khác nhau nh ề ệ ả ớ ệ ủ ạ ự ẻ II.1.2.5 H th ng phân tán ng t H th ng này cũng t x lý không chia x b nh và ử c c b riêng. Các b x lý thông tin v i nhau thông qua các ụ ộ nh nh ng bus t c c và ch c năng. Các b x lý trong h phân tán th ườ ứ Nó có th bao g m máy vi tính, tr m làm vi c, máy mini, và nh ng h th ng ệ ố ạ ồ ữ ư máy l n. Các b x lý th ượ ộ ử site, node, computer v.v.... tùy thu c vào tr ng thái làm vi c c a chúng. ộ Các nguyên nhân ph i xây d ng h th ng phân tán là: ệ ố ủ i s d ng A có th s d ng máy in laser c a : M t ng ể ử ụ ườ ử ụ ộ i s d ng B có th truy xu t nh ng t p tin c a A. ữ ấ ườ ử ụ ủ ể ậ ệ ố ấ ộ ơ ở ữ ệ i m t v trí xa, s d ng nh ng thi t b xa ả Chia x tài nguyên ng i s d ng B và ng ườ ử ụ T ng quát, chia x tài nguyên trong h th ng phân tán cung c p m t c ch ổ chia x t p tin ẻ ậ t ộ ị ạ ệ ộ ơ ế để ẻ ấ v trí xa, x lý thông tin trong m t c s d li u phân tán, in n ở ị ể ử ụ : M t thao tác tính toán đ ế ị ở đ õ th c hi n các thao tác. ự ượ ỏ ề ầ c chia làm nhi u ph n nh ệ ộ ự ề ử ữ Tăng t c đ tính toán ộ ố ộ cùng th c hi n m t lúc. H th ng phân tán cho phép phân chia vi c tính toán ệ ố ệ đ tính toán song song. trên nhi u v trí khác nhau ể ị ệ ố ẫ An toàn : N u m t v trí trong h th ng phân tán b h ng, các v trí khác v n ộ ị ị ỏ ị ti p t c làm vi c. ế ụ ế ệ Thông tin liên l c v i nhau ng trình c n chuy n ầ ạ ớ ị ươ ệ ố ườ ượ ố ế ớ ể ữ ệ ị đ ấ ễ ữ ệ cùng v trí hay nh ng v trí ộ ệ ố ể ậ ể đ i dổ ữ ự ng có s c n i k t v i nhau ườ ử ụ i s d ng ị ữ ừ ị :Có nhi u lúc , ch ề v trí này sang v trí khác. Ví d trong h th ng Windows, th li u t ụ ệ ừ ị chia x và chuy n d li u gi a các c a s . Khi các v trí ử ổ ẻ đ i d li u di n ra r t d . Ng trong m t h th ng m ng, vi c trao ễ ổ ữ ệ ạ có th chuy n t p tin hay các E_mail cho nhau t ể khác.
c s d ng khi có nh ng ờ ệ ố ệ ố ử
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
11
ệ
ạ
ọ
ữ ệ ế ế ị ề ế ậ ố ữ ệ ử t, th i gian x lý ờ II.1.2.6 H th ng x lý th i gian th c ự ờ ử ự đ H th ng x lý th i gian th c ượ ử ụ v th i gian trên các thao tác c a b x lý ho c dòng d li u, nó th ặ ủ ộ ử ề ờ dùng đi u khi n các thi ụ ứ phân tích d li u và có th ch nh các ề M t hộ ệ đi u hành x lý th i gian th c ph i ử nhanh. H th ng ph i cho k t qu chính xác trong kho ng th i gian b thúc ép ả ữ đòi h i kh t khe ỏ ắ cượ ườ đ ng t b trong các ng d ng t n hi n (dedicated). Máy tính i quy t cho d li u nh p. ể ỉ ả ờ ị ế ậ đi u khi n gi ể cượ đ nh nghĩa t ả đ ự ờ ả ể ữ ệ ề ệ ố ả ị
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
ự ệ ố ờ ề ử ự c hoàn t t ự ứ ượ ấ đúng lúc. Lúc đó dữ c l u trong b nh ng n h n hay trong ROM. Vi c x lý theo ượ ư ộ ớ ệ ử ắ t c h th ng li đ t v i t t kê ự ẽ ở ệ ỗ ự ứ ộ độ u tiên ư ờ c thi hành theo trên. ệ ữ đó. Có m t s lĩnh v c áp d ng h u ộ ố ượ ự ụ ng pháp này là multimedia hay th c t i o. ự nhanh nh t. Có hai h th ng x lý th i gian th c là h th ng th i gian th c ấ ệ ố ờ c ng và h th ng th i gian th c m m.. ệ ố ứ ờ ệ đ H th ng th i gian th c c ng là công vi c ệ ố ờ ườ đ ng li u th ạ ệ th i gian th c s xung ộ ớ ấ ả ệ ố ờ D ng th hai là h th ng th i gian th c m m, m i công vi c có m t ề ệ ố ạ riêng và sẽ đ độ u tiên ư hi u ph ệ ự ạ ả ươ
I THI U VI ĐI U KHI N ATmega 128
Ớ
Ể
Ệ
Ề
II.2 GI
II.2.1 T NG QUAN Ổ
Nh ng Tính Năng Chính C a ATmega128: ủ ữ
ở ộ ụ
ộ ị ộ ị
ộ ị ộ i 12 bit ) i 10 bit ( dòng Xmega lên t Ở ộ ớ ộ
i 16 bit 2 t i t ổ ộ ả ừ ớ ộ ọ ố ể ậ ng t ự ậ ố ế ề
ượ t ki m năng l ệ ọ ầ ố ạ ộ ng ằ ự ề ầ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
12
ệ
ạ
ọ
ấ ượ ớ ề ả ề ấ ồ ướ ộ ớ ỏ ớ ư ơ ướ ạ ớ ộ c vài Kbyte đ n vài trăm Kb cùng v i các b ngo i vi đa c tích h p trên chip, cũng có dòng tích h p c b LCD trên chip ( dòng - ROM : 128 Kbytes -SRAM: 4Kbytes -EEPROM : 4Kbytes - 64 thanh ghi I/O -160 thanh ghi vào ra m r ng -32 thanh ghi đa m c đích. - 2 b đ nh th i 8 bit (0,2). ờ -2 b đ nh th i 16 bit (1,3). ờ -B đ nh th i watchdog ờ -B dao đ ng n i RC t n s 1 MHz, 2 MHz, 4 MHz, 8 MHz ầ ố ộ -ADC 8 kênh v i đ phân gi ớ ả -2 kênh PWM 8 bit -6 kênh PWM có th l p trình thay đ i đ phân gi có th l a ch n ngõ vào -B so sánh t ể ự ươ -Hai kh i USART l p trình đ c ượ -Kh i truy n nh n n i ti p SPI ố ậ -Kh i giao ti p n i ti p 2 dây TWI ố ế ố ế -H tr boot loader ỗ ợ -6 ch đ ti ế ộ ế -L a ch n t n s ho t đ ng b ng ph n m m -Đóng gói 64 chân ki u TQFP. ể -T n s t i đa 16MHz ầ ố ố -Đi n th : 4.5v - 5.5v. ế ệ Vi đi u khi n AVR do hãng Atmel ( Hoa Kì ) s n xu t đ ầ c g i thi u l n đ u ệ ầ ể năm 1996. AVR có r t nhi u dòng khác nhau bao g m dòng Tiny AVR ( nh AT ư ồ ế c b nh nh , ít b ph n ngo i vi, r i đ n tiny 13, ATtiny 22…) có kích th ạ ộ ậ c b nh vào dòng AVR ( ch n h n AT90S8535, AT90S8515,…) có kích th ạ ướ ộ ẳ lo i trung bình và m nh h n là dòng Mega ( nh ATmega32, ATmega128,…) ạ ạ v i b nh có kích th ế ớ ộ ớ d ng đ ượ ạ ợ ả ộ ợ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
ớ ố ộ ủ ữ ơ ả ự ư ơ ạ ẫ LCD AVR ). T c đ c a dòng Mega cũng cao h n so v i các dòng khác. S khác nhau c b n gi a các dòng chình là c u trúc ngo i vi, còn nhân thì v n nh ấ nhau. Hình 1.2. Đ t bi ạ ế ụ i ti p t c cho ra đ i dòng AVR ẽ ư ừ t, năm 2008, Atmel l ệ ữ ặ ớ ạ m i làXmegaAVR, v i nh ng tính năng m nh m ch a t ng có tr c đó. Có th nói XmegaAVR là dòng MCU 8 bit m nh m nh t hi n nay. ờ các dòng AVR ở ẽ ấ ớ ướ ể ệ ạ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
13
ệ
ạ
ọ
C u trúc c b n c a vi đi u khi n AVR đ c th hi n Hình1.2 Các dòng AVR khác nhau: Tiny, AVR và Mega ể ệ ở hình 1.2. ơ ả ủ ượ ể ề ấ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
Hình 1.3 C u trúc c a Vi đi u khi n AVR ủ ề ể ấ
II.2.2 C U TRÚC B NH VÀ C NG VÀO – RA Ộ Ớ Ổ Ấ
Ấ i Thi u: ệ 1. C U TRÚC B NH . Ộ Ớ Gi ớ ộ ấ ườ ể ng trình và b nh d li u. B nh AVR đ ớ ượ ấ ộ ớ ữ ệ ng Bus c chia làm 2 ộ ng trình ( program memory ) và b nh d li u ( Data ộ ầ ớ ươ ộ ớ ữ ệ
ng Trình : B Nh Ch ng trình c a AVR là b nh Flash có ớ ươ ộ ớ ớ ươ ng 128 K bytes. B nh ch ủ ộ ộ B nh ch ộ ớ ươ ng trình đ c dùng cho b ng véc t ộ ớ ươ ủ ộ ể
ầ ứ ươ ộ ạ ể ề B nh vi đi u khi n AVR có c u trúc Harvard là c u trúc có đ ớ ề riêng cho b nh ch ộ ớ ươ ph n chính: B nh ch memory ). ộ ữ ng trình có đ r ng bus là 16 bit. Nh ng dung l ượ ng t. C n đ a ch đ u tiên c a b nh ch ầ ơ ỉ ầ ắ ả ị ượ vi đi u khi n ATmega128 b nh ch đ ý là c chia ng trình còn có th đ ể ượ ộ ớ ươ ề ở ể ụ làm 2 ph n : ph n boot loader ( Boot loader program section ) và ph n ng d ng ầ ứ ầ ầ ( Application program section ). Ph n boot loader ch a ch ầ ầ ươ ượ ươ ủ ề ự i th c thi ch ươ ề ỗ ướ ẽ c, ch ể ạ ầ ươ ạ ng trình boot loader tr ng trình nào c n n p vào vi đi u khi n hay không, n u có ề ươ ươ ẽ ạ ự ồ ụ ng trình vào vùng nh ng d ng i, boot ng trình này. Ng ụ ng trình ng d ng có s n trong vùng nh ng d ng ẵ ươ ứ ụ ng trình Boot ng trình boot loader . Ch ở c ch y lúc kh i loader là m t ph n m m nh n p trong vi đi u khi n và đ ề ỏ ạ ườ i ng trình c a ng đ ng. Ph n m m này có th t i vào trong vi đi u khi n ch ể ả ể ề ộ ng trình này. M i khi reset vi đi u khi n CPU s d ng và sau đó th c thi ch ể ươ ử ụ ng trình boot loader s s nh y t ự ươ ẽ ả ớ dò xem có ch ế ươ ch ng trình c n n p, boot loader s n p ch ớ ứ ầ (Application program section ), r i th c thi ch c l ượ ạ loader s chuy n t i ch ớ ứ ẽ đ th c thi ch ể ự ể ớ ươ ớ ứ ng trình này. ụ (Application program section ) là vùng nh ch a ch ướ ủ ủ ườ ầ ng trình có s d ng và i dùng. Kích th ể ệ ấ ử ụ ọ ng ươ ầ ứ c c a ph n boot loader và ph n ng ộ ớ ươ ầ ấ ầ ng trình ng d ng c a ng i dung (là ườ ị ươ ủ ụ ứ i ph n ch ng trình có nhãn start ) thì ch th CPU nh y t ươ ầ ả ớ i th c hi n ch ươ ệ ự ử ụ i ch ươ ể ớ ị ỉ c, r i m i quay tr l ớ ng trình boot ứ ng trình ng ở ạ ướ ệ ồ
B nh d li u c a AVR chia làm 2 ph n chính là b Ph n ng d ng ầ ứ trình ng d ng c a ng ụ ứ d ng có th tùy ch n. Th hi n c u trúc b nh ch ể ụ không s d ng boot loader, khi s d ng ph n boot loader ta th y 4 word đ u tiên ử ụ thay vì ch th cho CPU chuy n t ỉ ch loader đ th c hi n tr ể ự d ng.ụ ộ ớ ữ ệ ủ ớ ữ ệ ộ ớ ữ ệ ầ ư i tách bi ệ ỉ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
14
ệ
ạ
ọ
B Nh D Li u : ộ nh SRAM và b nh EEPROM. Tuy cùng là b nh d li u nh ng hai b nh ộ ớ ộ ớ c đánh đ a ch riêng. này l ị ộ ượ ạ ng 4 K bytes, B nh SRAM có hai ch đ ho t ạ ộ ớ ớ ng và ch đ t ộ ớ t nhau và đ ượ có d ng l ụ ườ B nh SRAM đ ng là ch đ thông th ế ộ ộ ế ộ ố ng thích v i ATmega103, mu n ớ ế ộ ươ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
t l p b nh SRAM ho t đ ng theo ch đ nào ta s d ng bit c u chì ử ụ ế ộ ầ ế ậ ạ ộ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
15
ệ
ạ
ọ
ch đ bình th B nh SRAM ớ ườ Ở ế ộ thi ộ ớ M103C (M103C fuse bit (9) ). ch đ bình th ở ế ộ ầ ầ ộ ớ ượ ị ế ứ ỉ ừ ứ $0000 t ớ ớ ớ ớ ầ ứ ớ ứ ị ộ ớ ị ỉ ừ ầ đ a ch $1100, vùng SRAM m ớ ng b nh ườ : ng ộ c chia thành 5 ph n: Ph n đ u là 32 thanh ghi ch c năng chung ầ i $001F. Ph n th ầ ỉ ừ ị i $005F. Ph n th 3 dùng cho vùng nh dành cho các thanh ghi vào ra i $00FF. Ph n th 4 là ầ i $10FF. Ph n th 5 là vùng ứ ở ớ $0060 t ỉ ừ $0100 t ớ ắ ầ ừ ị ế ể ở ộ ng 4 K byte là nói t ả ộ ỉ ộ ớ ế ng s là 4.25 K byte = 4352 byte. ẽ ườ ng thích ATmega103 : ớ ộ ớ ộ ớ ch đ bình th SRAM đ (General Purpose Register ) R0 đ n R31 có đ a ch t 2 là không gian nh vào ra v i 64 thanh ghi vào ra ( I/O Register ) có đ a ch t $0020 t m r ng ( Extended I/O Registers ) có đ a ch t ở ộ vùng SRAM n i v i 4096 byte có đ a ch t nh SRAM ngoài ( External SRAM ) b t đ u t r ng này có th m r ng lên đ n 64 K byte. Khi nói b nh SRAM có dung ộ i ph n th 4 ( SRAM n i ). N u tính c các thanh ghi thì l ầ ớ ượ ứ b nh SRAM trong ch đ bình th ế ộ ộ ch đ t ở ế ộ ươ ở ế ộ ố B nh SRAM ơ ả ch này b nh ứ ườ ồ ạ ở ộ ớ Ở ế ng, ngo i tr ph n th 3 là vùng ạ ừ ầ ướ c ở ế ch ầ ộ ỉ ớ c hai ch đ : Bình ể ệ ơ ồ ộ ờ ữ ệ ở ả ế ộ ườ ng và t ừ hình 2.2 ta th y n u c u hình đ b ể ộ ươ ng thích ATmega103. T ạ ộ ch đ t ở ế ộ ươ ẽ ị ấ ấ ế ấ ng thích ATmega103 thì ta s b m t đi 160 ữ SRAM c b n cũng gi ng nh dành cho các thanh ghi vào ra m r ng không t n t i, ngoài ra kích th c a ph n SRAM n i ( internal RAM ) ch có 4000 byte so v i 4096 byte ủ ng. Hình 2.2 th hi n s đ b nh d li u đ bình th ộ th ườ nh SRAM ho t đ ng ớ thanh ghi vào ra m r ng ( extended I/O Register ), là nh ng thanh ghi đóng vai ở ộ trò quan tr ng trong các ch đ ho t đ ng c a vi đi u khi n. ạ ộ ế ộ ủ ể ề ọ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
Hình 1.4: B n đ b nh d li u ng ườ ng thích ATmega103 B: Ch đ t ả ồ ộ ớ ữ ệ A : Ch đ bình th ế ộ ế ộ ươ
ỉ ớ ệ ể ở ộ c s d ng, là : ST / STS / STD và LD / LDS / LDD.
ể $20 t ị ớ ứ ơ ỉ ấ ị ị ỉ ớ ể ế ị ớ ỉ ẽ ệ ị ỉ ế ầ ủ ộ ớ ư ả ử ụ ẽ ọ ử ụ ộ ệ ư ỉ ị Trong vùng nh vào ra m r ng ( $0060 - $00FF ) ch có 6 l nh sau là có th đ ượ ử ụ ớ L nh CBI và SBI ch có th làm vi c v i 32 thanh ghi th p h n trong vùng nh ệ ớ ỉ ệ i $3F ( đ a ch SRAM ). 64 thanh vào ra , t c các thanh ghi I/O có đ a ch t ỉ ừ ghi vào ra trong vùng nh vào ra ( ph n s 2 ) có 2 ki u ch n đ a ch : N u xem ầ ố chúng là vùng nh vào ra thì đ a ch s là $00 - $3F, khi s d ng các l nh in, out … ta ph i s d ng đ a ch này. N u xem chúng nh là m t ph n c a b nh SRAM thì s có đ a ch là $0020 - $005F, khi ta dùng các l nh nh LD, ST… ta ph i s d ng ki u đ a ch này. ể ỉ ứ ệ ứ ộ ạ ượ ừ c dùng làm con tr tr t ộ ớ ữ ệ Hình ớ ươ ng trình và b nh d li u ( ỏ ỏ ớ ộ ể ng trình. Các trình biên Data stack c a ch i b nh d li u, còn ớ ữ ệ ươ ng i b nh ch ể ả ườ ủ ả ử ụ ị Ti p 32 thanh ghi đa ch c năng ( $0000 - Ti p ghanh ghi ( register file ) : ệ trên, ngoài ch c năng là các thanh ghi đa ch c năng, thì c nói $001F ) đã đ ứ ở các thanh ghi t i R31 t ng đôi m t t o thành các thanh ghi 16 bit X, Y, Z R26 t ớ ừ đ i b nh ch ỏ ỏ ớ ộ ượ 1.4 ). Thanh ghi con trò X, Y có th dung làm con tr tr t ể thanh ghi Z có th dùng làm con tr tr t ỏ ỏ ớ ộ ớ ươ d ch C th ng dùng các thanh ghi con tr này đ qu n lí ỏ ị trình C.
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
16
ệ
ạ
ọ
ể ị ấ ữ ệ ộ ớ ể ồ ể ư ổ ứ ố ộ ớ ớ ượ ư ị ề ệ ữ ệ ớ ể ề ấ ớ B nh EEPROM : Đây là b nh d li u có th ghi xóa ngay trong lúc vi ộ ớ ữ ệ đi u khi n đang ho t đ ng và không b m t d li u khi ngu n đi n cung c p b ị ạ ộ ấ ệ ề ủ c t. Có th ví b nh d li u EEPROM gi ng nh là c ng ( Hard disk ) c a ộ ớ ữ ệ ắ c là 4 máy vi tính. V i vi đi u khi n ATmega128, b nh EEPROM có kích th ể ề ướ ỉ ộ ậ Kbyte. EEPROM đ c đánh đ a ch đ c l p c xem nh là m t b nh vào ra đ ộ ộ ớ ượ ố v i SRAM, đi u này có nghĩa là ta c n s d ng các l nh in, out … khi mu n ầ ử ụ ớ truy xu t t ử ụ i EEPROM. Đ đi u khi n vào ra d li u v i EEPROM ta s d ng ể 3 thanh ghi sau :
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
2. Thanh Ghi EEAR ( EEARH và EEARL )
EEAR là thanh ghi 16 bit l u gi đ a ch c a các ô nh c a EEPROM, ữ ị ớ ủ ỉ ủ ư 2 thanh ghi 8 bit là EEARH và thanh ghi
ượ ộ 15 -12 đ ỉ ầ ủ ng 4 Kbyte = 4096 ượ c ừ c k t h p t thanh ghi EEAR đ ượ ế ợ ừ EEARL. Vì b nh EEPROM c a ATmega128 có dung l ủ ớ byte = 212 byte nên ta ch c n 12 bit c a thanh ghi EEAR , 4 bit t d tr , ta nên ghi 0 vào các bit d tr này. ự ữ ự ữ
3. Thanh Ghi EEDR
ữ ệ ủ ứ ữ ệ ơ ị Đây là thanh ghi d li u c a EEPROM, là n i ch a d li u ta đ nh ghi vào hay l y ra t ấ ừ EEPROM. 4. Thanh Ghi EECR
ỉ ử ụ ầ ủ ể ề ự ữ ự ữ ứ Đây là thanh ghi đi u khi n EEPROM, ta ch s d ng 4 bit đ u c a thanh ghi này, 4 bit cu i là d tr , ta nên ghi 0 vào các bit d tr . Sau đây ta xét ch c năng ố c a t ng bit. ủ ừ Bit 3 – EERIE: EEPROM Ready Interrupt Enable : Đây là bit cho phép c set thành 1 và ng t toàn c c đ ắ ắ ượ ụ ượ ẽ ạ ằ ắ ớ ượ ề
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
17
ệ
ạ
ọ
ẽ ạ ừ i véc t ẽ ả ớ ơ ắ ươ ị ỉ ộ ể ự ng trình ph c v ng t ( ISR ). Khi bit EERIE là 0 thì ng t không đ ng t có đ a ch là $002C đ th c thi ượ ng trình s nh y t ụ ụ ắ ắ EEPROM ng t CPU, khi bit này đ c cho phép ( b ng cách set bit I trong thanh ghi SREG lên 1 ) thì EEPROM s t o ra ắ c xóa, đi u này có nghĩa là khi các ng t m t ng t v i CPU khi bit EEWE đ ộ c cho phép ( bit I trong thanh ghi SREG và bit EERIE trong thanh ghi EECR đ ượ ắ ớ đ c set thành 1 ) và quá trình ghi vào ROM v a xong thì s t o ra m t ng t v i ượ CPU, ch c cho ch ươ phép.
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
ẽ ớ ầ ượ ư ỉ ủ Bit 2 – EEMWE: EEPROM Master Write Enable : Khi bit EEMWE và thanh ghi EEDR vào EEPROM, ữ ệ ừ c l u trong thanh ghi EEAR . Khi ở c xóa b i ẽ ượ bit EEWE là 1 s ra l nh cho CPU ghi d li u t ệ đ a ch c a ô nh c n ghi trong EEPROM đ ị bit này là 0 thì không cho phép ghi vào EEPROM. Bit EEMWE s đ ph n c ng sau 4 chu kì máy. ầ ứ Bit 1 – EEWE: EEPROM Write Enable : Bit này v a đóng vai trò nh ừ ể ệ ề Ở ư ủ vai trò c a ữ ệ c set lên 1 thì khi ta set bit EEWE lên ể ượ ữ ệ ộ ờ ừ ề ộ ẽ ắ ầ ữ ờ ệ ữ ệ c khi ghi d li u vào EEPROM ta c n ph i bi ế ướ ả c đi u này ta c n ki m tra bit ầ ể ế ứ ả ờ t thì m i ghi ti p. m t bit c , v a là bit đi u khi n vi c ghi d li u vào EEPROM. m t bit đi u khi n n u bit EEMWE đã đ ế 1 s b t đ u quá trình ghi d li u vào EEPROM. Trong su t quá trình ghi d ố là 1. li u vào EEPROM bit EEWE luôn gi vai trò c a m t bit c khi quá ủ Ở ộ ữ ề đ ng xóa bit này v 0. t, ph n c ng s t trình ghi d li u vào EEPROM hoàn t ẽ ự ộ ầ ứ ấ t ch c là không có quá trình Tr ắ ả ầ ữ ệ ghi EEPROM nào khác đang x y ra, đ bi t đ ề ể ế ượ c ghi, ta ph i ch cho cho EEWE. N u bit EEWE là 1 t c là EEPROM đang đ ượ quá trình ghi vào EEPROM hoàn t ế ấ ẽ EEPROM, d li u t ữ ệ ừ ỉ ư ị
ọ ữ ệ ừ ướ ầ ọ c khi đ c d li u t ằ ễ EEPROM ta c n bi ể t, bit EERE s đ c t ẽ ượ ự ộ c ghi thì ta không th đ c đ ượ ế ể ọ ượ ữ ệ ừ EEPROM, CPU s t m ngh 4 ớ Bit 0 – EERE: EEPROM Read Enable : Khi bit này là 1, s cho phép EEPROM có đ a ch l u trong thanh ghi c chuy n vào thanh ghi EEDR. Khi bit EERE là 0 thì không t ch c là ắ ế Đ ý là sau ể ầ đ ng xoá b i ph n ở c d li u t ẽ ạ ỉ đ c d li u t ọ ữ ệ ừ EEAR l p t c đ ể ậ ứ ượ cho phép đ c EEPROM. Tr không di n ra quá trình ghi EEPROM b ng cách ki m tra bit EEWE. khi quá trình đ c EEPROM hoàn t ấ ọ c ng. N u EEPROM đang đ ứ EEPROM. Khi b t đ u quá trình đ c d li u t chu kì máy tr ự ắ ầ c khi th c hi n l nh k ti p. ệ ệ ọ ữ ệ ừ ế ế ướ
II.2.3 C NG VÀO RA Ổ
II.2.3.1 GI I THI U Ớ Ệ
ra là m t trong s các ph ố ộ ể ề ể ệ ớ ng ti n đ vi đi u khi n giao ti p v i ạ ớ ng ng v i 56 đ ướ ế ươ t b ngo i vi. ATmega128 có c th y 7 c ng ( port ) vào ra 8 bit là : ả ả ng vào ra. ườ ng, t c có ứ ng vào (input ) hay h ể ị ng ra (output ). T t các ể ọ ướ ấ ủ ủ ổ ủ ướ ỉ ọ ử ụ ử ố ườ ổ ề ủ ng t ủ ủ ể
ạ ộ là m t đi n tr đ ệ t k các m ch đi n t ạ ệ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
18
ệ
ạ
ọ
ộ ầ ượ ố ớ ạ ượ ố ớ l ố C ng vào ổ các thi ổ ế ị PortA, PortB, PortC, PortD, PortE, PortF, PortG, t ươ ứ Các c ng vào ra c a AVR là c ng vào ra hai chi u có th đ nh h ề ổ ổ ng c a c ng là h th ch n h ướ các c ng vào ra c a AVR đi u có tính năng .Đ c – Ch nh s a – Ghi ( Read – ề ổ Modify – write ) khi s d ng chúng nh là các c ng vào ra s thông th ng. ư ng c a m t chân nào đó thì nó không Đi u này có nghĩa là khi ta thay đ i h ộ ổ ướ i h làm nh h ổ ng c a các chân khác. T t c các chân c a các c ng ớ ướ ấ ả ưở ả ( port ) đi u có đi n tr kéo lên ( pull-up ) riêng, ta có th cho phép hay không ệ ở ề cho phép đi n tr kéo lên này ho t đ ng. ở c dùng khi thi ệ ử ế ế ở ượ ộ ng là Vcc ho c ng (th c n i v i ngu n đi n áp d ặ ươ ồ ệ ườ i vào/ra c a m t m ch logic ch c c n i v i tín hi u l ứ ủ ạ ộ ệ ố ạ c a các kh i m ch i vào i các c l p đ t t ố ủ ặ ạ ể ượ ắ i vào c a kh i m ch khi không có thi t b ngoài ế ị ạ ố ủ ệ Đi n tr kéo lên ở logic. Nó có m t đ u đ Vdd) và đ u còn l i đ ầ năng. Đi n tr kéo lên có th đ ệ logic đ thi ố ở t l p m c logic l ứ ế ậ ể
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
i các c l p đ t t i vào. Đi n tr kéo lên cũng có th đ ở ệ ể ượ ắ ặ không cùng lo i logic, đ c bi ạ ở ố ố ạ ồ ạ c c p ngu n khác nhau. Ngoài ra, đi n tr kéo lên còn đ ượ ấ c a kh i m ch khi l ủ giao di nệ ố c l p đ t t ụ ệ ể ố ể ạ ố ặ ạ t là khi hai kh i m ch ạ ệ ặ ạ i ượ ắ i ra không th n i ngu n đ t o dòng, ví d các linh ở ố ớ ọ ồ ưỡ ồ ị ủ ườ ế ng c c v i ngu n nuôi 5 ự ớ ng n m trong kho ng 1000 đ n 5000 ả i ho t đ ng c a m ch. V i lôgíc ủ ằ ả ạ ạ ộ ệ ở vài ngàn đ n m t tri u Ohm do dòng rò r c n thi i vào ng t t ỉ ầ ừ ế ộ n i v i l ố ớ ố gi a hai kh i m ch logic ữ này đ i raố l ki n logic TTL có c c góp h . Đ i v i h logic l ự ệ Vdc thì giá tr c a đi n tr kéo lên th ệ ở Ohm, tùy theo yêu c u c p dòng trên toàn gi ớ ầ ấ ị ớ ơ CMOS và lôgíc MOS chúng ta có th s d ng các đi n tr có giá tr l n h n ể ử ụ nhi u, th l ế ở ố ệ ườ ề là r t nh . ỏ ấ
II.2.2.2. CÁCH HO T Đ NG : Ạ Ộ a. Thanh Ghi DDRx.
ứ ố ề . Khi m t bit c a thanh ghi này đ ủ i vào ) i ra hay l ố ng ng v i nó đ ượ ấ ớ ượ ế ượ t c 8 bit c a thanh ghi DDRA đ u là 1, thì 8 chân t ể ướ ng c set lên 1 thì c l ủ i, n u bit c a c c u hình thành ngõ ra. Ng ượ ạ c thi ng ng v i nó đ t l p thành ngõ vào. ế ậ ớ ươ ứ ề ủ ấ ả ụ ng ng v i các chân s 50, 49, …44 ươ ng ươ ứ ủ ớ ố t l p thành ngõ ra. c thi Đây là thanh ghi 8 bit ( có th đ c ghi ) có ch c năng đi u khi n h ể ọ c a c ng (là l ộ ủ ổ chân t ươ ứ thanh ghi DDRx là 0 thì chân t L y ví d : Khi ta set t ấ ng c a portA là PA1, PA2, … PA7 ( t ứ c a vi đi u khi n ) đ ề ủ ế ậ ượ ể
b. Thanh Ghi PORTx.
ế ữ ệ ủ ị ủ ể ọ t l p c ng là l ế ậ ổ ươ ứ i ra, khi đó giá tr c a thanh ghi PORTx ộ ng ng c a PORTx, nói cách khác, khi ta ghi m t ố ủ ng ng v i bit đó cũng có ủ ị ớ i vào thì thanh ghi ố ế ậ ổ ứ PORTx là thanh ghi 8 bit có th đ c ghi. Đây là thanh ghi d li u c a PORTx, N u thanh ghi DDRx thi cũng là giá tr c a các chân t ị ủ giá tr logic lên 1 bit c a thanh ghi này thì chân t cùng m c logic. Khi thanh ghi DDRx thi PORTx đóng vai trò nh m t thanh ghi đi u khi n c ng ươ ứ t l p c ng thành l ể ổ ề ư ộ
Thanh ghi PORTA
PINx không ph i là m t thanh ghi th c s , đây là đ a ch trong b nh I/O c. Thanh Ghi PINx. ả ộ ộ ị ỉ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
19
ệ
ạ
ọ
ờ ở ứ ệ ị ủ ổ c ch t trong PORTx, còn khi đ c PINx thì giá tr logic hi n th i ọ ế ố ớ ự ự ớ ọ ữ ệ i các chân c a c ng. Khi ta đ c PORTx t c ta đ c d li u ọ chân c a ủ c đ c. Vì th đ i v i thanh ghi PINx ta ch có th đ c mà ể ọ ỉ t l p cách ho t có th có c a c ng. k t n i tr c ti p t ế ố ự ế ớ đ ố ượ ng ng đ c ng t ượ ọ ươ ứ ổ không th ghi. B ng 25 th hi n các các thi ả ể ủ ổ ể ệ ế ậ ể ạ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
Thanh ghi PINA
ộ ơ ồ ộ ổ ủ ổ ể ệ ơ ồ ủ ủ ệ ể ệ ề ộ ở
c cho phép b t k các thi ế ậ ủ ằ ượ ệ ở ẽ t l p c a các thanh ghi ế c cho phép n u ượ ở Hình 1.5 S đ m t c ng vào ra Hình 1.5 th hi n s đ c a m t chân c a c ng vào ra. ấ s đ trên ta th y Ở ơ ồ ngoài 2 bit c a các thanh ghi DDRx và PORTx tham gia đi u khi n đi n tr treo ở ể ề (pull-up resistor ), còn có m t tín hi u n a đi u khi n đi n tr treo, đó là tín ệ ữ hi u PUD, đây là bit n m trong thanh ghi SFIOR, khi set bit này thành 1 thì đi n ệ tr kéo lên s không đ ấ ể DDRx và PORTx. Khi bit này là 0 thì đi n tr kéo lên đ ệ { DDRxn, PORTxn } = { 0, 1 } .
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
20
ệ
ạ
ọ
D i đây là đ a ch c a t t c các port: ỉ ủ ấ ả ướ ị
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
Đ a ch I/O Đ a ch SRAM ị ị
Tên PORT PORTA DDRA PINA PORTB DDRB PINB PORTC DDRC PINC PORTD DDRD PIND PORTE DDRE PINE PORTF DDRF PINF PORTG DDRG PING ỉ $1B $1A $19 $18 $17 $16 $15 $14 $13 $12 $11 $10 $03 $02 $01 Không có Không có $00 Không có Không có Không có ỉ $3B $3A $39 $38 $37 $36 $35 $34 $33 $32 $31 $30 $23 $22 $21 $62 $61 $20 $65 $64 $63
II.2.3 B Đ NH TH I C A ATmega128 Ờ Ủ Ộ Ị
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
21
ệ
ạ
ọ
ộ ị ờ ờ t c a 4 b đ nh ế ủ ộ ị chi ti ả ộ ị ộ ị ờ ờ ướ ờ ATmega128 có 4 b đ nh th i , b đ nh th i 1 và 3 là b đ nh th i 16 bit, b ộ đ nh th i 0 và 2 là b đ nh th i 8 bit. D i đây là mô t ộ ị ị th i.ờ 1. B Đ NH TH I 1. Ộ Ị Ờ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
22
ệ
ạ
ọ
Hình 1.6 B đ nh th i 16 bit ộ ị ờ ờ ờ ộ ị ộ ị ộ ị ử ụ ớ ự ộ ị ờ ộ ị ạ ộ ố ờ ầ ộ ị ờ ờ ử ụ ờ ộ ể ề ộ ị ượ ả ộ ị ượ ạ ờ i là dùng cho b đ nh th i 3. ộ ị ạ ố ờ ẽ ữ ạ ẳ ậ ờ ộ ị ờ ặ ầ ộ ị ố B đ nh th i 1 và 3 là b đ nh th i 16 bit, b đ nh th i 1 s d ng 13 thanh ghi ế ộ lien quan, còn b đ nh th i 3 s d ng 11 thanh ghi liên quan v i nhi u ch đ ề ỉ th c thi khác nhau.Vì b đ nh th i 1 và 3 ho t đ ng gi ng nhau nên đây ch ở ớ i trình bày b đ nh th i 1. M t đ m c n đ ý là trong các thanh ghi liên quan t ể ờ c chia s cho c hai b đ nh th i, b đ nh th i 1 và 3 thì có nhi u thanh ghi đ ộ ị ẽ ch n h n thanh ghi ETIPR có bít cu i là OCF1C đ c dùng cho b đ nh th i 1, ẳ các bit còn l Th m chí có nh ng thanh ghi chia s cho b đ nh th i 0 ho c 2, ch n h n thanh ghi TIMSK có hai bit cu i dùng cho b đ nh th i 2, hai bit đ u dùng cho b đ nh ộ ị th i 0, các bit còn l i dùng cho b đ nh th i 1. ộ ị ạ ờ ờ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
Ị ị ờ ộ ế ẽ ượ ử ụ ị c s d ng cho b đ nh th i 1 và 3 : ộ ị i giá tr BOTTOM khi nó có giá tr 0000h ị ị ạ ớ ạ ằ ớ ấ ị ỗ ế ể ấ ấ ấ ượ ị CÁC Đ NH NGHĨA: Các đ nh nghĩa sau s đ BOTTOM B đ m đ t t ạ ớ MAX B đ m đ t t i giá tr MAX khi nó b ng FFFFh ộ ế ỗ ế TOP B đ m đ t giá tr TOP khi nó b ng v i giá tr cao nh t trong chu i đ m, ằ ị ộ ế t là FFFFh mà có th là b t khì giá tr cao nh t trong chu i đ m không nh t thi ị ế giá tr nào đ c qui đ nh trong thanh ghi OCRnX (X=A,B,C) hay ICRn, tùy theo ị ch đ th c thi. ế ộ ự
CÁC THANH GHI B Đ NH TH I 1. Ộ Ị Ờ 1. Thanh ghi TCCR1A (Timer/Counter1 Control Register).
ề ể ạ ộ ả ộ ứ ườ ế ẽ ư i . N u m t hay c hai bit COMnB1:0 đ ả ượ ơ ộ ứ ườ ế ế ố ớ ẽ ư ộ ứ ượ ơ ườ ề ỗ ng mà nó k t n i t ệ ể ự ề ể
c set lên 1 thì ngõ ra OCnB s ẽ i . N u m t hay ng mà nó k t n i t c set lên 1 thì ngõ ra OCnC s u tiên h n ch c năng i, đi u này có nghĩa là m i m t chân c a ủ ứ ư ế ộ ộ ị ờ ng các ư ng, nh ng so sánh ạ ộ ử ụ nh các ch đ CTC, PWM,…c a b đ nh th i thì hành ư ộ ườ ườ i ch c năng ờ ớ ủ ể ẽ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
23
ệ
ạ
ọ
ế ộ ị ằ ớ ớ ị ự ệ ị ẫ Bit 7:6 – COMnA1:0: Compare Output Mode for Channel A Bit 5:4 – COMnB1:0: Compare Output Mode for Channel B Bit 3:2 – COMnC1:0: Compare Output Mode for Channel C Bit 1:0 – WGMn1:0: Waveform Generation Mode Bit 7:2 – COMnX1:0 (X=A, B, C): Compare Output Mode for Channel X : ủ ầ ượ t Đi u khi n cách ho t đ ng c a ủ ngõ ra so sánh (compare output) c a l n l các chân OCnA, OCnB và OCnC. N u m t hay c hai bit COMnA1:0 đ c set ượ ế lên 1 thì ngõ ra OCnA s u tiên h n ch c năng port I/O thông th ế ng mà nó k t ơ n i t ố ớ u tiên h n ch c năng port I/O thông th ư c hai bit COMnC1:0 đ ả port I/O thông th ế ố ớ vi đi u khi n có th th c hi n nhi u ch c năng khác nhau, bình th ề chân OCnA, OCnB, OCnC ho t đ ng nh các chân vào ra thông th ạ ộ các ch đ có s d ng t khi b đ nh th i đang ho t đ ng ứ ở ớ kh p (compare match) ủ ộ ị ế ộ vi c a chân ngõ ra OCnA, OCnB, OCnC s do b đ nh th i đi u khi n. Trong ề ờ ộ ị ể so sánh (OCRnX, ICRn) có các ch đ PWM, khi giá tr các thanh ghi dùng đ giá tr b ng v i TOP, thì s ki n so sánh kh p (compare match) b b qua. Tuy ị ỏ ở v y các chân OCnX v n b set hay xóa (tùy vào các bit COMnX 1:0) ậ BOTTOM.
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
ụ ủ Hình 1.7. Hành vi c a các chân OCnX (X=A, B, C; n=1, 3) ph thu c vào các t l p c a các bit COMnA1:0, COMnB1:0, COMnC1:0 trong ch đ non- thi ộ ế ộ ế ậ ủ PWM
ụ ủ Hình 1.8. Hành vi c a các chân OCnX (X=A, B, C; n=1, 3) ph thu c vào các t l p c a các bit COMnA1:0, COMnB1:0, COMnC1:0 tromg ch đ Fast- thi ộ ế ộ ế ậ ủ PWM
ế ợ ớ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
24
ệ
ạ
ọ
ể ệ ế ở ạ ụ ề ế ộ ự ố Bit 1:0 – WGMn1:0: Waveform Generation Mode : K t h p v i các bit ế WGMn3:2 tìm trong thanh ghi TCCRnB , nh ng bit này cho phép ta l a ch n ch ọ ự ữ c a đ th c thi c a b đ nh th i, nh đó có th đi u khi n vi c đ m tu n t ầ ự ủ ể ề ờ ủ ộ ị ộ ự ờ chân OCnX b đ m. Giá tr b đ m l n nh t là TOP và d ng sóng t o ra ớ ạ ấ ị ộ ế ộ ế (X=A, B, C; n=1, 3) đ c s d ng cho nhi u m c đích khác nhau (b ng 61). Các ả ượ ử ụ c h tr b i kh i Timer/counter là : Normal mode ch đ th c thi đ ượ ỗ ợ ở ( counter ), Clear Timer on Compare match (CTC) mode ,PWM mode.
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
Hình 1.9. L a ch n các ch đ th c thi c a b đ nh th i 1(3) ế ộ ự ủ ộ ị ự ọ ờ 2. Thanh ghi TCCR1B.
ớ ạ ẽ ượ ỏ ứ ạ ị ằ t v kh i ổ ủ t: ICNC): Vi c set bit t t ệ ế ắ ễ ủ b ch ng nhi u l i vào ễ ố ố ộ ố c chân ICPn s đ ẽ ượ c kích ho t thì ngõ vào t ừ chân ICPn cho ế ở ế ề ố Input Capture ). ọ ạ ự ở chân Input ể ắ c thi ế ậ ượ ư ộ ượ ả ộ ạ t l p thành 0 thì m t c nh d ươ c l ệ ả ượ ạ ư ộ ượ ế ậ ủ
ng xu ng ( falling (3) ) đ ố c set thành 1 thì i, khi bit này đ ự ệ c dùng nh m t trigger. Khi x y ra s ki n ị ủ ộ ế t l p c a bit ICESn là 1 hay 0) thì giá tr c a b đ m c ghi vào thanh ghi Input Capture Register ICRn (n=1, 3), và khi đó c ICFn ờ ế c set. Đi u này s t o ra m t ng t Input capture n u ẽ ạ ề ắ ộ ượ c cho phép. ắ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
25
ệ
ạ
ọ
Bit 7 – ICNCn: Input Capture Noise Canceler Bit 6 – ICESn: Input Capture Edge Select Bit 5 – Reserved Bit Bit 4:3 – WGMn3:2: Waveform Generation Mode Bit 2:0 – CSn2:0: Clock Select Bit 7 – ICNCn: Input Capture Noise Canceler (vi này t i 1 s kích ho t ch c năng ch ng nhi u c a ứ ( ICNC ). Khi ch c năng ICNC đ ứ l c. Ch c năng l c đòi h i 4 m u có giá tr b ng nhau liên ti p ẫ ọ ọ s thay đ i ngõ ra c a nó ( xem chi ti ự Bit 6 – ICESn: Input Capture Edge Select: Bit này l a ch n c nh Capture Pin (ICPn) dùng đ b t “s ki n trigger” ( Trigger event (10) ). Khi bit ự ệ ượ c ICESn đ ộ ạ dùng nh m t trigger ( tín hi u n y). Ng m t c nh âm lên (rising (4) ) đ Input capture (2) (theo thi đ ượ (Input Capture Flag) đ ng t này đ ượ Bit 5 : D tr . ự ữ Bit 4:3 – WGMn3:2: Waveform Generation Mode: Đã nói ph n thanh ghi ầ ở
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
ọ ố ộ ể ự ể ấ ộ ị ỉ ầ ờ TCCR1A. Bit 2:0 – CSn2:0: Clock Select : Dùng đ l a ch n t c đ xung clock (xem b ng 62). Đ c m b đ nh th i ho t đ ng ta ch c n cho {CSn2, CSn1, CSn0} = ạ ộ ả {0, 0, 0}.
Hình 1.10. L a ch n t c đ xung clock ọ ố ộ ự
3. Thanh ghi TCCR1C.
ỉ ị ượ ế ộ ng ch ớ ưỡ ế” (Forced Compare Match ộ ạ ượ t l p c a các bit COMnX 1:0 (n=1, 3; X=A, B, C), nghĩa là bình th ậ ứ ả ế ậ ủ ị ộ ị ờ ỉ ả ị ằ ớ c set thành 1 thì s ki n “
ị ủ ộ ị ượ ờ ị ủ ằ ặ ớ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
26
ệ
ạ
ọ
ờ ủ ị ệ ữ ư ế ng ch ộ ưỡ ấ ế ộ ư ờ ị ử ụ ỉ ể ọ c giá tr 0. Bit 7 – FOCnA: Force Output Compare for Channel A Bit 6 – FOCnB: Force Output Compare for Channel B Bit 5 – FOCnC: Force Output Compare for Channel C Bit 4:0 – Reserved Bits. Các bit FOCnA/FOCnB/FOCnC ch ho t đ ng khi các bit WGMn3:0 ch đ nh ỉ ạ ộ ch đ Non-PWM. Khi các bit FOCnA/FFOCnB/FOCnC đ c set thành 1 thì ngay l p t c m t s ki n “ ộ ự ệ So sánh kh p c c thay đ i theo (1) ) x y ra trong b t o sóng. Ngõ ra OCnA/OCnB/OCnC đ ổ ự thi ng s ườ ki n “ệ so sánh kh pớ ” ch x y ra khi khi giá tr b đ nh th i (thanh ghi TCNTn (n=1, 3) ) b ng v i giá tr thanh ghi OCRnX( n=1,3; X=A,B,C), nh ng khi các bit ư FOCnX( n=1, 3; X=A, B, C) đ ẽ ả ự ệ so sánh kh pớ ” s x y ra m c dù giá tr c a b đ nh th i không b ng v i giá tr c a thanh ghi OCRnX( n=1,3; X=A,B,C). Chú ý là các bit FOCnA/FOCnB/FOCnC cũng ho tạ đ ng nh là nh ng que dò (strobe), vì th nó là giá tr hi n th i c a các bit ộ ế” (forced compare). Các COMnX1:0 xác đ nh tác đ ng c a “ ủ so sánh c ị que dò FOCnA/FOCnB/FOCnC không t o ra b t kì ng t nào và cũng không xóa ắ ạ b đ nh th i trong ch đ CTC s d ng thanh ghi OCRnA nh là giá tr TOP. ộ ị Các bit FOCnA/FOCnB/FOCnC ch có th ghi, khi đ c các bit này ta luôn nh n ậ đ ượ ị Bit 4:0 d tr ,ph i ghi thành 0 khi ghi vào thanh ghi TCCRnC. ự ữ ả 4. Thanh Ghi Timer/Counter1 – TCNT1H and TCNT1L
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
ờ ộ ị c k t h p t ượ ế ợ ừ ể ọ c đ c hay ghi đ ng th i ng ủ ượ ọ ườ ờ ộ
c chia s cho t ẽ ấ ả ỉ ử ữ ị ỏ ế ể hai thanh ghi Thanh ghi b đ nh th i TCNT1 là thanh ghi 16 bit đ TCNT1H và thanh ghi TCNT1L. Thanh ghi TCNT1 có th đ c hay ghi. Đ c 2 ể ả ạ i ta dùng m t thanh ghi t m byte c a TCNT 1 đ ồ 8 bit byte cao 8-bit Temporary High Byte Register (TEMP). Thanh ghi TEMP t c các thanh ghi 16 bit khác. Không nên ch nh s a thanh ghi đ ượ TCNTn (n=1,3) khi nó đang đ m đ tránh b h ng Compare Match gi a TCNTn và m t trong nh ng thanh ghi OCRnX(n=1,3. X=A,B,C). ữ ộ 5. Thanh Ghi Output Compare Register 1 A– OCR1AH and OCR1AL
6. Thanh Ghi Output Compare Register 1 B– OCR1BH and OCR1BL
7. Thanh Ghi Output Compare Register 1 C– OCR1CH and OCR1CL
ượ ị ủ ủ ụ ẽ ạ c liên t c so sánh v i b đ m (TCNT1). Khi có s b ng ự ằ chân ở ộ ạ ộ ớ ộ ế ắ ư
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
27
ệ
ạ
ọ
ể ả ầ ượ ấ ờ c ghi hay đ c đ ng th i khi CPU c n truy xu t thanh ghi này, i ta dùng thanh ghi t m byte cao (TEMP), thanh ghi TEMP luôn l u gi ọ ồ ạ ườ Thanh ghi output compare register (OCR1A/OCR1B/OCR1C) là thanh ghi 16 bit, giá tr c a nó đ nhau c a hai thanh ghi này s t o ra m t ng t so sánh hay m t d ng sóng ngõ ra so sánh OCnX (X=A,B,C). Gi ng nh thanh ghi TCNT1 , thanh ghi ố ấ ủ OCRnX (X=A,B,C) cũng là thanh ghi 16 bit nên đ c hai byte cao và th p c a thanh ghi đ ữ ng byte cao c a các thanh ghi 16 bit khi các thanh ghi này c n dùng t ư i nó. ủ ầ ớ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
Hình 1.11 Thanh ghi TEMP
8. Thanh Ghi Input Capture Register 1 –ICR1H and ICR1L
9. Thanh Ghi Timer/Counter Interrupt Mask Register – TIMSK
ị ủ ộ ế ậ ẽ ậ chân ICPn. Ngoài ra thanh ghi này còn đ ượ ử ụ ỗ ể ị c s d ng đ đ nh ầ i ta cũng s d ng thanh ghi TEMP khi c n ự ệ ở ị ủ ộ ế ử ụ ườ Thanh ghi Input capture (ICR1n) s c p nh t giá tr c a b đ m TCNTn m i khi x y ra s ki n ả nghĩa giá tr TOP c a b đ m. Ng truy xu t thanh ghi ICRn (n=1, 3). ấ
(Interrupt for Timer/counter 1)
Bit 5 – TICIE1: Timer/Counter1, Input Capture Interrupt Enable: Khi c cho phép thì ượ ụ ắ c set thành 1 và ng t toàn c c (global interrupt) đ ượ ẫ ộ ng ng s đ ắ ươ ứ ẽ ượ ự ờ bit này đ ng t b t m u ngõ vào b Timer/couter1 (Timer/Counter1 Input Capture interrupt) ắ ắ đ c th c thi khi c ICF1 trong thanh ượ ghi TIFR đ c cho phép. Vector ng t t c set. ượ
c set thành 1 và ng t toàn c c (global interrupt) đ Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt ắ ượ ụ
c th c thi khi c ng ng s đ ắ ươ ứ ẽ ượ ượ ờ ự Enable: Khi bit này đ ượ c cho phép thì ng t so sánh ngõ ra 1A (Timer/Counter1 Output Compare A Match Interrupt) đ OCF1A trong thanh ghi TIFR đ ắ c cho phép. Vector ng t t c set. ượ
c set thành 1 và ng t toàn c c (global interrupt) đ Bit 3 – OCIE1B: Timer/Counter1, Output Compare B Match Interrupt ắ ượ ụ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
28
ệ
ạ
ọ
c th c thi khi c ng ng s đ ắ c cho ắ ươ ứ ẽ ượ ượ ờ ự ượ c Enable: Khi bit này đ cho phép thì ng t so sánh ngõ ra 1B (Timer/Counter1 Output Compare B Match Interrupt) đ OCF1B trong thanh ghi TIFR đ phép. Vector ng t t cượ set.
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
ượ ụ ắ Bit 2 – TOIE1: Timer/Counter1, Overflow Interrupt Enable: Khi bit c cho phép thì ng t ắ c cho phép. ượ ờ c th c thi khi c TOV1 trong thanh ghi TIFR ng ng s đ ẽ ượ ự ờ
c set thành 1 và ng t toàn c c (global interrupt) đ này đ ượ c tràn b đ nh th i 1 (Timer/Counter1 overflow interrupt) đ ộ ị ờ Vector ng t t ắ ươ ứ c set. đ ượ 10. Thanh Ghi Extended Timer/Counter Interrupt Mask Register – ETIMSK (Interrupt for Timer/counter 3).
ế ả ờ ộ ị Bit 7:6 – Reserved Bits: D tr , ph i ghi các bit này thành 0 khi ghi vào ả ự ữ
Bit 5 – TICIE3: Timer/Counter3, Input Capture Interrupt Enable: Khi c cho phép thì ượ ụ ắ ộ c th c thi khi c ICF3 ng ng s đ ắ ươ ứ ẽ ượ ờ ự c set. c cho phép. Vector ng t t ượ
c set thành 1 và ng t toàn c c (global interrupt) đ Bit 4 – OCIE3A: Timer/Counter3, Output Compare A Match Interrupt ắ ượ c ượ ụ Bit 7:6 – Reserved Bits Bit 5 – TICIE3: Timer/Counter3, Input Capture Interrupt Enable Bit 4 – OCIE3A: Timer/Counter3, Output Compare A Match Interrupt Enable Bit 3 – OCIE3B: Timer/Counter3, Output Compare B Match Interrupt Enable Bit 2 – TOIE3: Timer/Counter3, Overflow Interrupt Enable Bit 1 – OCIE3C: Timer/Counter3, Output Compare C Match Interrupt Enable Bit 0 – OCIE1C: Timer/Counter1, Output Compare C Match Interrupt Enable Thanh ghi ETIMSK liên quan đ n c hai b đ nh th i 1 và 3. thanh ghi ETIMSK c set thành 1 và ng t toàn c c (global interrupt) đ bit này đ ượ ng t b t m u ngõ vào b Timer/couter 3 (Timer/Counter3 Input Capture ẫ ắ ắ interrupt) đ ượ trong thanh ghi ETIFR đ Enable: Khi bit này đ cho phép.
c set thành 1 và ng t toàn c c (global interrupt) đ Bit 3 – OCIE3B: Timer/Counter3, Output Compare B Match Interrupt ắ ượ c ụ ượ Enable: Khi bit này đ cho phép thì ng t so sánh ngõ ra 3B. ắ
ượ ụ ắ Bit 2 – TOIE3: Timer/Counter3, Overflow Interrupt Enable: Khi bit c cho phép thì ng t ắ c cho phép. ượ này đ ượ c tràn b đ nh th i 3 (Timer/Counter3 overflow interrupt) đ ờ c set thành 1 và ng t toàn c c (global interrupt) đ ộ ị ờ
Bit 1 – OCIE3C: Timer/Counter3, Output Compare C Match c set thành 1 và ng t toàn c c (global ắ ụ c cho phép thì Interrupt Enable: Khi bit này đ ượ interrupt) đ ắ ượ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
29
ệ
ạ
ọ
Interrupt Enable: Khi bit này đ ng t so sánh ngõ ra 3C. Bit 0 – OCIE1C: Timer/Counter1, Output Compare C Match c set thành 1 và ng t toàn c c (global ắ ượ ụ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
c cho phép thì ng t so sánh ngõ ra 1C (Timer/Counter1 Output ượ interrupt) đ Compare C Match Interrupt) đ c cho phép. ắ ượ
11. Thanh Ghi Timer/Counter Interrupt Flag Register – TIFR.
Bit 5 – ICF1: Timer/Counter1, Input Capture Flag Bit 4 – OCF1A: Timer/Counter1, Output Compare A Match Flag Bit 3 – OCF1B: Timer/Counter1, Output Compare B Match Flag Bit 2 – TOV1: Timer/Counter1, Overflow Flag.
ượ ờ ắ ẫ ả ự ệ ủ ế ậ ượ ở c set khi b đ m đ t t
ư ộ ờ c set Bit 5 – ICF1: Timer/Counter1, Input Capture Flag: C này đ khi x y ra s ki n b t m u ngõ vào (Input Capture) c a chân ICP1. Khi thanh ể ử ghi ICR1 (Input Capture Register) đ c thi t l p b i các bit WGMn3:0 đ s ị d ng nh m t giá tr TOP thì c ICF1 s đ i giá tr ờ ị ụ ạ ớ ộ ế TOP. C ICF1 s t ể c th c thi, ho c có th đ ng xóa khi ng t t ặ ự ẽ ự ộ xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ộ ẽ ượ ng ng đ ắ ươ ứ ị ượ ủ ằ ị
Bit 4 – OCF1A: Timer/Counter1, Output Compare A Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT1) b ng v i giá tr thanh ghi ị ớ ằ ượ ị ộ ế ộ đ ng xóa khi ng t t ờ ắ ươ ứ này đ OCR1A (Output Compare Register A). Chú ý là m t so sánh c s không set c này. C OCF1A s t ẽ ự ộ ẽ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ằ ờ ể ng b c (FOC1A) ưỡ ứ ng ng đ ự c th c ượ ủ ộ ị ị
ặ Bit 3 – OCF1B: Timer/Counter1, Output Compare B Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT1) b ng v i giá tr thanh ghi ị ộ ế ượ ằ ớ ị ộ đ ng xóa khi ng t t ờ này đ OCR1B (Output Compare Register B). Chú ý là m t so sánh c s không set c này. C OCF1B s t ẽ ự ộ ẽ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ờ ể ằ ộ ị
t l p c này ng và ệ ế ộ ụ ng b c (FOC1B) ứ ưỡ ng ng đ ự c th c ượ ắ ươ ứ ị ặ ủ Bit 2 – TOV1: Timer/Counter1, Overflow Flag: Vi c thi ế ậ ờ ph thu c vào thi ườ ộ CTC c TOV1 đ ờ t l p c a các bit WGMn3:0, trong ch đ bình th c set khi b đ nh th i tràn ộ ị ế ậ ủ ượ ờ
12. Thanh Ghi Extended Timer/Counter Interrupt Flag Register –ETIFR.
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
30
ệ
ạ
ọ
ự ữ ượ ờ ự ệ ủ ả ắ ế ậ ượ ở Bit 7:6 – Reserved Bits: D tr , ph i ghi 0 khi ghi vào thanh ghi ETIFR. ả c set Bit 5 – ICF3: Timer/Counter3, Input Capture Flag: C này đ khi x y ra s ki n b t ngõ vào (Input Capture) c a chân ICP3. Khi thanh ghi c thi ICR3 (Input Capture Register) đ nh m t giá tr TOP thì c ICF3. s đ ẽ ượ ị t l p b i các bit WGMn3:0 đ s d ng ể ử ụ i giá tr TOP. C c set khi b đ m đ t t ị ư ộ ạ ớ ộ ế ờ ờ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
đ ng xóa khi ng t t c th c thi,ho c có th xóa hay set ẽ ự ộ ắ ươ ứ ượ ự ể ặ ICF3 s t b ng cách ghi m t giá tr logic vào v trí c a nó. ị ằ ng ng đ ủ ộ ị Bit 4 – OCF3A: Timer/Counter3, Output Compare A Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT3) b ng v i giá tr thanh ghi ị ớ ằ ượ ị ộ ế ộ đ ng xóa khi ng t t ờ ắ ươ ứ này đ OCR3A (Output Compare Register A). Chú ý là m t so sánh c s không set c này. C OCF3A s t ẽ ự ộ ẽ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ộ ằ ờ ể ng b c (FOC3A) ưỡ ứ ng ng đ ự c th c ượ ủ ị ị
ặ Bit 3 – OCF3B: Timer/Counter3, Output Compare B Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT3) b ng v i giá tr thanh ghi ượ ị ộ ế ằ ị
ộ đ ng xóa khi ng t t ờ ờ ể ằ ộ ị
ệ ế ộ ụ i b ng 52 và m c “ ạ ả ộ ị ế ậ ủ ượ ” đ bi ng h p khác. t các tr này đ ớ OCR3B (Output Compare Register B).Chú ý là m t so sánh c ng b c (FOC3B) ưỡ ứ s không set c này. C OCF3B s t ự c th c ng ng đ ẽ ự ộ ẽ ượ ắ ươ ứ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ị ặ ủ Bit 2 – TOV3: Timer/Counter3, Overflow Flag: Vi c thi t l p c này ế ậ ờ ph thu c vào thi ng và ườ ộ CTC c TOV3 đ ụ Các ờ ch đ th c thi ế ộ ự t l p c a các bit WGMn3:0, trong ch đ bình th c set khi b đ nh th i tràn. Xem l ể ế ờ ợ ườ Bit 1 – OCF3C: Timer/Counter3, Output Compare C Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT3) b ng v i giá tr thanh ghi ị ớ ằ ượ ị ộ ế ộ đ ng xóa khi ng t t ờ này đ OCR3C (Output Compare Register C). Chú ý là m t so sánh c s không set c này. C OCF3C s t ẽ ự ộ ẽ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ờ ể ng b c (FOC3C) ưỡ ứ ng ng đ ự c th c ượ ủ ắ ươ ứ ị ằ ộ ị
ặ Bit 0 – OCF1C: Timer/Counter1, Output Compare C Match Flag: Cờ c set ngay sau khi giá tr b đ m (TCNT1) b ng v i giá tr thanh ghi ị ộ ế ượ ằ ớ ị ộ đ ng xóa khi ng t t ờ này đ OCR1C (Output Compare Register C). Chú ý là m t so sánh c s không set c này. C OCF1C s t ẽ ự ộ ẽ thi, ho c có th xóa hay set b ng cách ghi m t giá tr logic vào v trí c a nó. ng b c (FOC1C) ứ ưỡ ng ng đ ự c th c ượ ủ ắ ươ ứ ị ờ ể ặ ằ ộ ị 13. Thanh Ghi Special Function IO Register –SFIOR.
Bit 7 – TSM: Timer/Counter Synchronization Mode Bit 0 – PSR321: Prescaler Reset Timer/Counter3, Timer/Counter2, and Timer/Counter1. • Bit 7 – TSM: Timer/Counter Synchronization Mode: Ghi bit này thành
ẽ ồ ế ộ Đ ng b b đ nh th i” , vì th nó gi ế c ( prescaler (8) ) t ượ ờ . Trong ch đ này giá tr ghi ị ế ộ ủ ộ cho tín hi u reset c a b ệ ướ c ộ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
31
ệ
ạ
ọ
ộ ộ ị c gi ữ ượ ữ ng ng đ ươ ứ ậ tr ng thái Reset ). Đi u này đ ch c ch n là các b Timer/couter ề ể ắ c t m d ng đ có th đ ể ượ ấ c xác nh n ( do đó b chia tr ắ ớ ộ ị ư ừ ể ấ ẵ ầ ứ ắ ầ ế ờ ở ụ Ch Đ Đ ng B B Đ nh Th i ế ộ ồ ờ ). ờ Bit 0 – PSR321: Prescaler Reset Timer/Counter3, Timer/Counter2, and 1 s kích ho t ch đ “ ạ vào hai bit PSR0 và PSR321 đ chia tr ướ prescaler v n ẫ ở ạ ng ng đ t c c u hình v i giá tr nh nhau mà ượ ạ ươ ứ không làm h ng các c u hình s n có khác. Khi TMS là 0 thì các bit PSR0 và ỏ c xóa b i ph n c ng và các b đ nh th i (1,2,3) b t đ u đ m đ ng PSR321 đ ồ ộ ị ượ th i. ( Xem thêm m c : ộ ộ ị Timer/Counter1: Khi bit này là 1 thì b chia tr c (prescaler) c a ba b đ nh ủ ộ ị ướ ộ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
32
ệ
ạ
ọ
c xóa b i ph n c ng ngo i tr tr ầ ứ c reset. Bit PSR321 đ ượ ở ờ ượ ộ ị c (prescaler) nên vi c reset b chia tr c set. Chú ý là ba b đ nh th i 1, 2, 3 cùng chia s m t b chia c (prescaler) s tác đ ng lên c ba b ạ ừ ườ ng ẽ ộ ộ ả ướ ệ ẽ ộ ộ ộ th i 1,2,3 đ ượ ờ h p bit TSM đ ợ tr ướ đ nh th i này. ờ ị
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
II.3 GI
Ự I THI U H ĐI U HÀNH NHÚNG TH I GIAN TH C
Ệ Ề
Ờ
Ớ
Ệ FreeRTOS
II.3.1 TH I GIAN TH C Ờ Ự
c thi ệ ệ ờ ế ế ượ ả ế ớ i th c có th có th i đi m k t thúc tr ờ ự ệ ể H th i gian th c/ h nhúng đ ự ự ố ớ ự ế ớ ự ề ặ t k sao cho các dáp ng v m t ứ i th t. Các s ki n này ự ệ ậ c ngay c h ả ệ ướ ủ ệ ể ế ơ ế ậ ị ứ ả ả c th i đi m k t thúc mà nó ph i g p. th i gian là th c đ i v i các s ki n x ra trên th gi ờ x y ra trên th gi ả nhúng/h th i gian th c ph i đáp ng và c ch l p l ch c a h RTOS ph i xác đ nh đ ị ệ ờ ờ ả ặ ượ ế ể
ệ ữ ụ ả ể ự ộ ỗ ủ ệ ỉ ơ c phép thi hành ơ ế ậ ị ấ ượ ụ ề ư ở ờ ụ ể ử ề ẫ ộ ụ Đ th c hi n nh ng m c tiêu trên, k s l p trình ph i gán quy n u tiên cho ề ư ỹ ư ậ m i m t tác v . Sau đó c ch l p l ch c a h RTOS ch đ n gi n là xác đ nh ị ả th i đi m đang x lý. tác v có quy n u tiên cao nh t đ ử Đi u này d n đ n c n chia s th i gian x lý m t cách "fairly" gi a các tác v ẻ ờ ế ầ ữ có cùng u tiên và s n sàng th c thi. ự ẵ ư
ấ ủ ự i s d ng ph i nh n đ ấ ừ Ví d :ụ Ví d c b n nh t c a m t h th i gian th c là s k t h p gi a bàn phím và ữ ụ ơ ả c s đáp ng tr c quan nh t t màn hình LCD. Ng ự m i phím đ c. ộ ệ ờ ả c nh n trong m t th i gian ch p nh n đ ờ ự ế ợ ứ ậ ượ ậ ượ ự ấ ườ ử ụ ấ ượ ỗ ộ
ế ể ấ ứ ự ậ ấ c ch p nh n. Tính năng này có th cài đ t trong ế ể ậ ặ ấ ả N u cho kỳ có th ch p nh n dài nh t là 100ms, thì b t kỳ s đáp ng trong ấ kho ng 0 đ n 100ms đ u đ h RTOS nh m t tác v t ệ ề ượ tr . ụ ự ị ư ộ
Th c ra, m i m t ch II.3.2 ĐA NHI MỆ ộ ự ươ ụ ệ ng trình đang thi hành là m t nhi m v (task) c phân chia đi u khi n b i h đi u hành. N u m t h đi u hành có kh ộ ộ ệ ề ả ể ở ệ ề ượ ọ ụ VD: H đi u hành Windows, chúng ta có th nghe nh c, ch i game, ơ ế c g i là đa nhi m (multitasking) ệ ể ạ ỗ đ ề ượ năng thi hành nhi u tác v thì đ ề ệ ề download tài li u trong cùng lúc. ệ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
33
ệ
ạ
ọ
t k nh ng bài ả ẽ ử ụ ặ ầ ệ ề ẽ S d ng h đi u hành đa nhi m s làm đ n gi n quá trình thi ệ toán mà nó s là gánh n ng n u chuy n h t cho ph n m m ng d ng x lý. ề ứ ế ệ ế ế ữ ụ ử ụ ủ ệ ề ứ ơ ơ ể ế - Đa nhi m và tính năng liên l c n i b gi a các tác v c a h đi u hành ạ ộ ộ ữ cho phép các ng d ng ph c t p có th phân chia ra thành các tác v nh h n, ụ ỏ ơ ứ ạ ụ ể đ n gi n h n, d qu n lý h n. ơ ễ ả ơ ầ ễ ẽ ế ả ỏ ng trình ... ươ ề chi ti trình ki m tra ph n m m, s d ng l ầ ự ử ụ ờ t ra kh i ch ả - Các ph n chia nh này s giúp chúng ta d dàng có k t qu trong quá i mã ch ể ạ - Nh ng s tính toán th i gian ph c t p và các quá trình tu n t ứ ạ ụ ứ t ế ệ ng trình ng d ng và chuy n nhi m v này cho h ầ ự ụ ươ ể ệ ữ c tách bi ệ ả đ ỏ ượ đi u hành đ m trách. ề
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
Tuy nhiên đa nhi m xung đ i v i Đ ng th i: ố ớ ệ ờ ồ
ụ ệ ỉ ộ ư Th ọ ấ ng thì các b vi x lý ch có th th c hi n m t tác v duy nh t ể ự ườ ổ ờ ộ ấ ữ ộ ườ ạ ử ớ ự ệ c mô t ư ượ i đây v i 3 tác v và gi n đ ụ ng nh đ ớ s đ d ả ở ơ ồ ướ trong m t th i đi m nh ng v i s chuy n đ i m t cách r t nhanh gi a các tác ể ể c ch y đ ng v c a m t h đi u hành đa nhi m làm cho chúng d ồ ộ ệ ề ụ ủ th i v i nhau. Đi u này đ ồ ờ ớ ả ượ ề th i gian c a chúng ờ ủ
Hình 2.1 X lý đa nhi m ử ệ
II.3.3 C U TRÚC FreeRTOS Ấ
ượ ự ệ ờ ỏ ọ ể ở Richard Barry. Là h đi u hành mã ngu n m , v i ph n lõi nh g n, ệ ề ự ầ Là h đi u hành th i gian th c và cũng là đa nhi m.Đ c xây d ng và phát ệ ề tri n b i FreeRTOS là m t s l a ch n đúng đ n cho các h th ng đi u khi n. ở ớ ề ồ ệ ố ộ ự ự ể ắ ọ
ả ạ • Qu n lý ti n trình ế – T o và h y các ti n trình. Vd xTaskCreate, xTaskDelete… ủ i m t ti n trình.Vd vTaskSuspend, – Ng ng và th c hi n l ế ệ ạ ộ ế ư ự vTaskResume – Cung c p c ch l p l ch vTaskStartScheduler, ấ ơ ế ậ ị vTaskEndScheduler – Cung c p cách thông tin gi a các ti n trình ữ ấ ế Vd Trace Hook Macros ,Queue ,semarphore ,mutexe
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
34
ệ
ạ
ọ
ộ ả ỗ ầ ớ ộ • Qu n lý b nh ớ – Các RTOS h t nhân đã phân b cho b nh RAM m i l n task, ổ ạ c t o ra. Các hàm malloc () và free ()có ượ ạ c s d ng cho m c đích này queue hay semaphore đ th đôi khi đ ượ ử ụ ể – Trong gói mã ngu n t ng trình dùng đ ụ i v máy b n thì có 3 ch ạ ồ ả ề ươ ể qu n lý RAM đó là : heap_1.c, heap_2.c và heap_3.c ả
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
i
• Ki m soát l ỗ ể • Qu n lý nh p xu t ấ ậ ả – Thông qua các l nh l p trình ệ ậ
1. Task
ộ ố ượ ng Task c th c thi quy t đ nh h đi u hành đa nhi m; th c thi nhi u task khác nhau, Task là m t công vi c mà h đi u hành s th c thi. Chính s l ệ ề ự ế ị ẽ ự ự ề c t o ra, ng i l p trình ệ ệ ề ượ ườ ậ ỉ ự ệ ớ ượ ạ ự ự ư ể đ ượ c 1 task. Khi m i đ hay là không; ch th c thi đ ph i g n cho task m t s u tiên đ FreeRTOS d a vào s u tiên này mà x lý ử ộ ự ư nó.(gi ng Co-Routine ) ả ắ ố
Các tr ng thái ho t đ ng c a task: ạ ộ ủ
ạ -Running -Ready -Blocked -Suspended
Hình 2.2 Mô hình chuy n đ i tr ng thái ể ổ ạ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
35
ệ
ạ
ọ
-T tr ng thái Ready, Task có th chuy n thành Running ,ho c Suspended ể ặ ể n u có b hàm vTaskSuspend() g i đ n. ế ừ ạ ị ọ ế
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ề
ể
ờ
ể ể API đ ế ặ -T tr ng thái Running, Task có th chuy n thành Blocked n u hàm khoá ừ ạ c g i, ho c Suspended n u có b hàm vTaskSuspend() g i đ n. ị ượ ọ -T tr ng thái Blocked, task có th chuy n thành Ready b ng m t s ể ừ ạ ộ ự ể ki n nào đó, ho c Suspended n u có b hàm vTaskSuspend() g i đ n. ế ệ ặ ị ế ọ ế ằ ọ ế ế -T tr ng thái Suspended task có th chuy n thành tr ng thái Ready n u ể ể ạ ừ ạ hàm vTaskResume() đ c g i đ n. ượ ọ ế
Trong FreeRTOS, có file TASK.C ch a các hàm đã vi t s n nh m t th ứ ế ẵ ư ộ ư ệ vi n hàm dành cho vi c t o,xoá, và qu n lý task ệ ạ ả VD: t o 1 task ta dùng hàm xTaskCreate(), đ xoá task ta dùng hàm ể ạ xTaskDelete()….
đây. ở
ử ụ ệ ể void vTaskCode (“Tên”,void * pvParameters) ( for (;;) ( / / Mã s đi công tác ố ) ) xTaskCreate (vTaskCode, "Tên", STACK_SIZE, & ucParameterToPass, tskIDLE_PRIORITY, & xHandle); / / S d ng handle đ xóa b nh ng công vi c. ỏ ữ vTaskDelete (xHandle);
2. Co-Routine
ờ ớ ụ ụ ạ ồ c t o ra, ng ộ Có tên là đ ng th t c vì nó là m t ti n trình ch y đ ng th i v i m t ộ ế ườ ậ ồ ti n trình khác.. Khi m i đ i l p trình ph i g n cho Co-routine ả ắ m t s u tiên đ FreeRTOS d a vào s u tiên này mà x lý nó.(gi ng task ) ử ớ ượ ạ ự ế ộ ự ư ự ư ể ố Các tr ng thái c a Co-routine: ủ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
36
ệ
ạ
ọ
ạ -Running -Ready -Blocked
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
Hình2.3 :S đ chuy n tr ng thái ơ ồ ể ạ
ể ể -T tr ng thái Ready,Co-routine có th chuy n sang tr ng thái Running -T tr ng thái Running,Co-routine có th chuy n v tr ng thái Ready ạ ể ề ạ ể ho c chuy n sang tr ng thái Blocked khi có macro block API g i đ n . ọ ế ặ ạ ằ -T tr ng thái Blocked, Co-routine s chuy n v tr ng thái Ready b ng ẽ ể ề ạ ừ ạ ừ ạ ể ừ ạ m t s ki n. ộ ự ệ
Trong FreeRTOS có file croutine.c ch a các hàm vi t s n cho Co-routine ứ ế ẵ nh m t th vi n. ư ộ VD t o Co-routine dùng hàm xCoRoutineCreate() , b t đ u dùng hàm ư ệ ạ ắ ầ crSTART(), d ng b ng crEND()… ừ ằ
ộ ằ ả ắ ầ ộ ọ ế
ố ị ả ộ ờ
ộ
ộ ọ ế ả ế ằ ộ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
37
ệ
ạ
ọ
void vFlashCoRoutine (xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex) { ( //co-routine ph i b t đ u b ng m t cu c g i đ n crSTART (). crSTART (xHandle); for (;;) { ( / / Delay cho m t kho ng th i gian c đ nh. crDELAY (xHandle, 10); // Flash m t LED. vParTestToggleLED (0); } ) / / Co-thói quen ph i k t thúc b ng m t cu c g i đ n crEND (). crEND (); } )
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
3. Queue
ợ ể ử ữ ứ ắ
Hàng đ i là hình th c thông tin gi a 2 task, chúng dùng đ g i các tin nh n gi a ữ 2 task, ho t đ ng theo nguyên t c FIFO( First In First Out). Hình d ạ ộ i mô t ắ quá trình ho t đ ng c a Queue ạ ộ ướ ủ ả Khi Task A mu n g i cho Task B 1 tin nh n, dùng hàm xQueueSendToBack() ố ử ắ … Khi Task B mu n nh n tin nh n đó, c n dùng hàm xQueueReceive() ầ ắ ậ ố
Hình 2.4: Các b c th hi n thông tin b ng Queue ướ ự ệ ằ
4. Semaphore Là ph ng ti n đáp ng 2 m c đích lo i tr và đ ng b , đ ươ ạ ừ ộ ượ ứ ụ ệ ồ c chia ra 2 lo i ạ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
38
ệ
ạ
ọ
-Binary semaphore -Counting semaphore T o semaphore: ạ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
vSemaphoreCreateBinary (xSemaphoreHandle xSemaphore)
Ho t đ ng c a Binary semaphore ạ ộ ủ
-Task c n thông tin t bên ngoài,nh ng lúc này Semaphore tr ng nên task ư ố ừ ầ s r i vào tr ng thái blocked. ẽ ờ ạ ắ c t ượ ả ạ ộ -Ng t ho t đ ng, thông tin đ -Task thoát kh i tr ng thái block, semaphore chuy n thông tin cho task i lên semaphore ể ỏ ạ
Hình 2.5: Ho t đ ng c a Semaphore ạ ộ ủ Ví d s d ng: ụ ử ụ
c s d ng tr ượ ử ụ ướ ể ộ ộ ọ ế c khi m t cu c g i đ n
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
39
ệ
ạ
ọ
ự ế ư ậ ế xSemaphoreHandle xSemaphore; void vATask (void * pvParameters) ( / / Semaphore có th không đ vSemaphoreCreateBinary (). / / Đây là m t macro nh v y qua bi n trong cách tr c ti p. ộ vSemaphoreCreateBinary (xSemaphore);
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
ế
c t o thành công. có th đ c s d ng. ượ ạ ờ ể ượ ử ụ n u (xSemaphore! = null) ( / / Các semaphore đ / / Các semaphore bây gi )
ạ ộ ư ư ị trí đ l u thông tin nh binary, couting có c m t hàng đ i. ể ư ợ Couting dùng đ đ m các s ki n ho c đ qu n lý tài nguyên. Counting semaphore có ho t đ ng gi ng nh binary nh ng thay vì có 1 v ố ả ộ ặ ể ả ư ể ế ự ệ
void vATask (void * pvParameters) ( xSemaphoreHandle xSemaphore;
c s d ng tr ể ượ ử ụ ướ ộ ọ ế c khi m t cu c g i đ n ộ
c 10, và ượ i đa mà semaphore có th đ m đ c truy c p 0. ẽ ượ ể ế ậ ầ / / Semaphore có th không đ xSemaphoreCreateCounting (). / / Các giá tr t ị ố / / Gán giá tr ban đ u vào s đ ị xSemaphore = xSemaphoreCreateCounting (10, 0);
ế
c t o thành công. có th đ c s d ng. ượ ạ ờ ể ượ ử ụ
n u (xSemaphore! = null) ( / / Các semaphore đ / / Các semaphore bây gi ) )
Trong FreeRTOS có file semphr.h ch a các hàm vi t s n dành cho ứ ế ẵ semaphore dùng hàm xSemaphoreTake(), ừ ộ semaphore. Vd nh n m t thông tin t ậ g i vào semaphore dùng xSemaphoreGiveFromISR() ử
5. Mutexe
ợ ử Có c ch ho t đ ng gi ng nh semaphore binary nh ng thích h p x lý ơ ế ạ ộ ư ư ố
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
40
ệ
ạ
ọ
Ph ng th c ho t đ ng nh sau: ạ ộ ng tác v i tài nguyên đ ứ ộ ư ố ươ ớ ượ ả ệ ấ c b o v , nó yêu c u lo i tr h n. ạ ừ ơ ươ -khi m t task A mu n t semaphore thông tin t ừ ẽ ể ể ổ ớ ử ầ ổ -semaphore có thông tin s chuy n cho task A đ trao đ i v i tài nguyên -trong khi A đang trao đ i thì task B yêu c u semaphore g i thông tin Nh ng A đang dùng thông tin đó nên B chuy n sang tr ng thái blocked đ ch ể ờ ư ể ạ -khi trao đ i xong, A tr thông tin v cho semaphore ề ả ổ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
41
ệ
ạ
ọ
-B thoát kh i tr ng thái block và yêu c u thông tin, lúc này semaphore ỏ ạ ấ chuy n thông tin cho B đ B trao đ i v i tài nguyên ể ổ ớ ể i thông tin cho semaphore -sau khi trao đ i xong, B tr l ổ ả ạ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ệ
ể
ề
ờ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
42
ệ
ạ
ọ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
Hình 2.6: Ho t đ ng c a Mutex ạ ộ ủ Ví d s d ng: ụ ử ụ
c s d ng tr ể ượ ử ụ ướ ộ ọ c khi m t cu c g i ộ
c tr l i. ệ ạ ượ ả ạ
ế
c t o thành công. c s d ng. có th đ ượ ạ ờ ể ượ ử ụ
xSemaphoreHandle xSemaphore; void vATask (void * pvParameters) ( / / Mutex semaphores có th không đ đ n ế / / XSemaphoreCreateMutex (). Vi c t o ra mutex đ xSemaphore = xSemaphoreCreateMutex (); n u (xSemaphore! = null) ( / / Các semaphore đ / / Các semaphore bây gi ) )
6. Trace Hook Macros
ng ti n thu th p thông tin đ cung c p cho các ng d ng c a ng ứ ủ ụ ể ệ ấ ậ ườ i
c th c hi n c a Trace hook macros: Là ph ươ s d ng ử ụ Các b ướ ệ ủ t l p thông tin cho task1 ho t đ ng ạ ộ ế ậ ự – Thi – Trong task2 ta g i Trace Hook Macros nào đó đ thông báo cho ể ọ thi t b nào đó la task1 đang ho t đ ng ế ị ạ ộ ố ế đ kh i đ ng trace dùng hàm vTaskStartTrace(), mu n k t thúc dùng hàm ể ở ộ ulTaskEndTrace().
PH N III. CÁC B
C THI T K NG D NG MINH
Ầ
ƯỚ
Ế Ứ
Ụ
Ế H AỌ
III.1 THI T K M CH MÔ PH NG B NG Proteus
Ế Ạ
Ỏ
Ằ
Ế
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
43
ệ
ạ
ọ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
Hình 3.1: Thi ế ế t k mô ph ng ng d ng ỏ ứ ụ
ỏ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
44
ệ
ạ
ọ
ộ ạ ạ ụ -M ch mô ph ng g m: ồ ạ 1 VĐK Atmega 128 8 Transitor NPN 8 Đi n tr thu n ầ ở ệ 8 LED đ nơ B t o dao đ ng g m th ch anh và 2 t ồ -Nguyên lý ho t đ ng: chân VĐK, c c B c a Transitor s m ẽ ở ừ ủ ế ẽ ngu n s qua transitor, xu ng qua tr , gây s t áp trên LED ệ ở ụ ố ộ ạ ộ c tác đ ng b ng xung ra t Khi đ ằ ự ộ ượ n u m c đi n áp ra t ng ng là 1, và s đóng n u đi n áp ra là 0. Khi transitor ươ ứ ệ ế ứ m , dòng đi n t ồ ẽ ệ ừ ở làm led sáng. Khi transitor đóng, đi n áp trên LED b ng 0, LED không sáng. ệ ằ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ề
ệ
ờ
III.2 L A CH N C U HÌNH CHO HĐH QUA FreeRTConfig.h
Ọ Ấ
Ự
Hình 3.2: C u hình HĐH b ng FreeRTOS.h ấ ằ
ứ
ủ
ấ
File FreeRTConfig.h là file c u hình cho HĐH, sau đây là ch c năng c a các dòng l nh trong FreeRTConfig.h ệ 1,configUSE_PREEMPTION Đ t là 1 n u s d ng h t nhân u tiên, 0 n u dùng h t nhân h p tác ế ử ụ ư ế ạ ạ ặ ợ
2,configUSE_IDLE_HOOK
đ t là 1 n u s d ng IDLE_HOOK, 0 n u không s d ng ặ ế ử ụ ử ụ ế
3,configUSE_TICK_HOOK
đ t là 1 n u s d ng m t TICK_HOOK, 0 n u không s d ng ặ ế ử ụ ử ụ ế ộ
đ t t n s đ ng h cho lõi x lý , giá tr này dùng đ c u hình thi ặ ầ ố ồ ể ấ ử ị ế ị t b 4,configCPU_CLOCK_HZ ồ ngo i viạ
ắ ủ ờ ấ ầ t c các ng d ng c a RTOS đ u s d ng t n ề ử ụ ủ ứ ụ 5,configTICK_RATE_HZ đ t t n s đánh d u ng t c a RTOS ấ ặ ầ ố đánh d u ng t đ đo th i gian, t ấ ả ắ ể s 1000Hz ố
6,configMAX_PRIORITIES đ t s u tiên l n nh t cho các task ặ ố ư ấ ớ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
45
ệ
ạ
ọ
ượ ử ụ ặ ấ ở i v cho c ng b n s d ng 7,configMINIMAL_STACK_SIZE đ t kích c c a stack đã đ ỡ ủ ặ khuy n cáo trong ng d ng b n t ụ ứ ế ơ c s d ng b i idle task, không nên đ t th p h n ạ ả ề ạ ử ụ ổ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ể
ệ
ờ
ng Ram có s n cho h t nhân s d ng 8,configTOTAL_HEAP_SIZE t ng s l ổ ố ượ ẵ ử ụ ạ
9,configMAX_TASK_NAME_LEN chi u dài t i đa cho tên các task , khi task đ c t o ra, bao g m c ký t null ề ố ượ ạ ả ồ ự
ố ử ụ ế ử ụ ế 10,configUSE_TRACE_FACILITY đ t 1 n u mu n s d ng trace thông d ng, đ t 0 n u s d ng trace theo dõi, ụ ặ ặ n u là trace theo dõi thì c n sung c p b đ m ộ ệ ế ấ ầ
11,configUSE_16_BIT_TICKS đánh d u s gián đo n c a h t nhân k t ạ ủ ạ ấ ự ể ừ khi b t đ u ắ ầ
đ u tiên cho idle, nó ngăn c n các idle task t khi ở ộ ư ể ố ả ừ c đ n process sau. 12,configIDLE_SHOULD_YIELD tham s này ki m soát task k t thúc th i gian x lý c a process tr ủ ế ử ờ ướ ế
13,configUSE_MUTEXES đ t 1 n u s d ng mutex ,ho c 0 n u không s d ng ế ử ụ ặ ử ụ ế ặ
14,configUSE_RECURSIVE_MUTEXES đ t 1 n u s d ng mutex đ quy ,ho c 0 n u không s d ng ặ ế ử ụ ử ụ ế ệ ặ
15,configUSE_COUNTING_SEMAPHORES đ t 1 n u s d ng đ m semaphore, n u không thì đ t 0 ế ặ ế ử ụ ế ặ
16,configUSE_ALTERNATIVE_API đ t 1 n u dùng hàng đ i thay th , 0 n u không dùng ặ ế ế ế ợ
17,configCHECK_FOR_STACK_OVERFLOW s d ng đ phát hi n tràn stack ử ụ ể ệ
18,configQUEUE_REGISTRY_SIZE
c liên ả ượ ề ậ ạ ứ ượ ỡ ỗ i: ế ớ ộ ợ ễ ể ượ ộ ỡ ỗ ị ầ ủ ể ộ ị ị
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
46
ệ
ạ
ọ
ử ụ ụ ừ ạ c debugger. Vi c x p hàng đăng ký có hai m c đích khác nhau, c hai đi u này đ ụ ệ ế c g l k t v i các h t nhân nh n th c đ ế ớ c liên k t v i m t hàng đ i cho các hàng d Nó cho phép m t textual tên đ đ ộ dàng xác đ nh trong vòng m t g l i GUI. ế Nó ch a các thông tin theo yêu c u c a m t debugger đ xác đ nh v trí x p ứ hàng t ng đăng ký và semaphore. ừ Vi c x p hàng đăng ký không có m c đích, tr khi b n đang s d ng m t h t ộ ạ ệ ế nhân nh n th c đ ậ ứ ượ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ể
ệ
ề
ờ
19, configUSE_CO_ROUTINES
ố ụ ế ế ố đ t 1 n u mu n dùng co-routine, đ t 0 n u không mu n d ng, n u dùng ế ặ ặ ng trình thì c n ph i có t p coutine.c trong ch ươ ệ ầ ả
i đa cho co-routine 20, configMAX_CO_ROUTINE_PRIORITIES đ t đ u tiên t ặ ộ ư ố
21, configKERNEL_INTERRUPT_PRIORITY và configMAX_SYSCALL_INTERRUPT_PRIORITY
III.3 VI T PH N NG D NG B NG AVR Studio
Ầ Ứ
Ụ
Ằ
Ế
Hình 3.3: Vi ế ứ t ng d ng b ng AVR Studio ằ ụ
ể ế ề ứ ụ ầ Đ vi sau đó b n kh i đ ng AVR Studio, và l p trình ng d ng. t ph n m m ng d ng trên HĐH, b n ph i cài AVR Studio và WinAVR, ạ ạ ở ộ ả ứ ụ ậ
III.4 D CH PH N NG D NG THÀNH FILE .hex
Ầ Ứ
Ụ
Ị
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
47
ệ
ạ
ọ
c a s AVR Studio b n ch n Đ d ch ph n ng d ng, t ầ ứ ể ị ụ ừ ử ổ ọ Build => Build ạ
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
Hình 3.4: C a s AVR Studio ử ổ
Hình 3.5: D ch ph n ng d ng thành file hex thành công ụ ầ ứ ị
III.5 DÙNG M CH N P VÀO VI ĐI U KHI N
Ạ
Ề
ắ ạ ớ
Ể ạ
ạ ỗ ợ ạ ể ắ ầ ề ạ ấ
Ạ ạ ế
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
48
ệ
ạ
ọ
ở ộ G n VĐK lên m ch n p, sau đó k t n i m ch n p v i máy tính, kh i đ ng ế ố ph n m m h tr n p, ti n hành ch n file .Hex, n nút n p đ b t đ u n p cho ạ ọ ầ VĐK.
Tìm Hi u H Đi u Hành Nhúng Th i Gian Th c ự
ề
ệ
ể
ờ
TÀI LI U THAM KH O
Ả
Ệ
ầ ạ
Khoa Công Ngh Thông Tin-Đ i H c Thái Nguyên
49
ệ
ạ
ọ
[1]Dientuvietnam.net [2]Lý thuy t h đi u hành-Tr n H nh Nhi ế ệ ề [3] www.atmel.com/ [4]www.freertos.org [5] www.vagam.dieukhien.net