Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
0,96 MB
Nội dung
BÁO CÁO VXL NHÓM 9 2011 9/5/2011 TR ƯỜNG ĐẠI HỌC ĐIỆN LỰC GV: PHAN THỊ THANH NGỌC Thành viên nhóm: 1. PHẠM XUÂN THẮNG (nhóm trưởng) 2. TRỊNH THỊ NGỌC HÀ 3. ĐỖ THỊ TRÀ 4. VŨ TÚ UYÊN 5. LƯƠNG THỊ NGUYỆT 6. PHAN NGỌC TRÂM TỔNG QUAN VỀ VI ĐIỀU KHIỂN I Giới thiệu khái quát về vi điều khiển Bộ vi xử lý có khả năng vượt bậc so với các hệ thống khác vê tính năng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả với các bài toán hệ thống lớn. Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi vì hệ thống dù lớn hay nhỏ nếu dung vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau.Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điểu khiển trở lại, các khối này kiên kết với vi xử lý thì mới thực hiện được công việc. Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế. Kết quả là giấ thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ. Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi sử lý vào một IC duy nhất được gọi là Microcontroller- Vi điều khiển. Do VĐK cấu tạo về phần cứng và khả năng xử lý thấp hơn nhiều so với VXL nên giá thành của VXL cũng rẻ hơn nhiều. Tuy nhiên nó vẫn đủ khả năng đáp ứng được tất cả yêu cầu của người tiêu dung. VĐK được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chứ năng đơn giản trong máy giặt, ôtô v.v… II. Phân loại 1.Độ dài thanh ghi Dựa vào độ dài của các thanh ghi và các lệnh của VĐK mà người ta chia ra các loại VĐK 8 bit, 16 bit, hay 32 bit… Các loại VĐK 16 bit do có độ dài lệnh lớn hơn nên các tập lệnh cũng nhiều hơn, phong phú hơn. Tuy nhiên bất cứ chương trình nào viết bằng VĐK 16bit chúng ta đều có thể viết trên VĐK bit với chương trình thích hợp. 2.Kiến trúc CISC và RISC VXL hoặc VĐK CISC là VĐK có tập lệnh phức tạp. CácVĐK này có một số lượng lớn các lệnh nên giúp cho người lập trình có thể linh hoạt và dễ dạng hơn khi viết các chương trình. VĐK RISC là VĐK có tập lệnh đơn giản. Chúng có một số lượng nhỏ các lệnh đơn giản. Do đó, chúng đòi hỏi phần cứng ít hơn, giá thành thấp hơn, và nhanh hơn so với CISC. Tuy nhiên nó đòi hỏi người lập trình phải viết các chương trình phức tạp hơn, nhiều lệnh hơn. 3.Kiến trúc Harard và kiến trúc Vonneumann Kiến trúc Harvard sử dụng bộ nhớ riêng cho chương trình và dữ liệu. Bus địa chỉ và bus dữ liệu độc lập với nhau nên quá trình nhận dữ liệu đơn giản hơn. Kiến trúc Vonneumann sử dụng chung bộ nhớ cho chương trình và dữ liệu. Điều này làm cho VĐK gọn nhẹ hơn, giá thành nhẹ hơn. Một số loại VĐK có trên thị trường : - VĐK MCS-51 : 8031,8032,8051,8052,… - VĐK ATMEL: 89Cxx, AT89Cxx51… - VĐK AVR AT90Sxxxx - VĐK PIC 16C5x, 17C43… III. Cấu trúc tổng quan của vi điều khiển: 1.CPU: Là trái timn của hệ thống. Là nơi quản lý tất cả các hoạt động của VĐK. Bên trong CPU gồm: +ALU là bộ phận thao tác trên các dữ liệu. +Bộ giải mã lệnh và điều khiển, xác định các mã thao tác mà CPU cần thực hiện. +Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi. +thanh ghi PC, lưu giữ địa chỉ của lệnh kế tiếp cần thực thi. +Một tập các thanh ghi dung để lưu thông tin tạm thời. 2.ROM: ROM là bộ nhớ dung để lưu giữ chương trình. ROM còn dung để chứa số liệu các bảng, các tham số hệ thống, các số liệu cố định của hệ thống. Trong quá trình hoạt động nội dung ROM là cố định, không hề thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình. 3.RAM: RAM là bộ nhớ dữ liệu. Bộ nhớ RAM dung làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lý thông tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu. 4.BUS: BUS là các đường dẫn dùng để di chuyển dữ liệu. Bao gồm: bus địa chỉ, bus dữ liệu, và bus điều khiển 5.Bộ định thời: Được sử dụng cho các mục đích chung về thời gian. 6.Watchdog : Bộ phận dùng để reset lại hệ thống sau khi hệ thống gặp “bất thường” 7.ADC: Bộ phận chuyển tín hiệu analog sang tín hiệu digital. Các tín hiệu bên ngoài đi vào thường ở dạng analog. ADC sẽ chuyển tín hiệu này về dạng tín hiệu digital mà VĐK có thể hiểu được. ATMEGA 16 I,GIỚI THIỆU VỀ ATMEGA16 o ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả thực hiện mỗi lệnh trong 1 chu kỳ xung clock , có thể đạt được tốc độ triệu lệnh trên 1 giây. o o Dưới đây là sơ đồ của atmega - Đặc điểm : + Có 16KB bộ nhớ flash với khả năng đọc trong khi ghi 512 byte bộ nhớ EEPROM , 1KB bộ nhớ SRAM , 32 thanh ghi chức năng , 32 đường và ra chung , 3 bộ nhớ định thời/đếm , ngắt nội,ngắt ngoại USART , giao tiếp nối 2 dây ,8 kênh ADC 10 bit + Hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C,macro assemblers , chương trình mô phỏng sửa lỗi , kit thử nghiệm…… II, CẤU TRÚC AVR 1.Cấu trúc tổng quát AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu. Các lệnh chỉ thực hiện trong 1 chu kỳ xung clock . Bộ nhớ chương trình được lưu trong bộ nhớ flash . 2.ALU - ALU làm việc trực tiếp với các thanh ghi chức năng chung . Các phép toán thực hiện trong 1 chu kỳ xung clock . Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit. 3.TRẠNG THÁI THANH GHI - Đây là thanh ghi trạng thái có 8 bit để lưu trữ trạng thái của ALU sau các phép tính số học và logic. PHẦN 2. Cấu trúc nhân AVR C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập) Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0) N: Negative Flag (Nếu kết quả của phép toán là âm) V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2) V, For signed tests (S=N XOR V) S: N H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau) T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian trong các lệnh BLD,BST). I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt. Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.) 2.5. Con trỏ ngăn xếp (SP) Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp. Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi. 2.6. Quản lý ngắt Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX được thiết lập… Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp. Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua. Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E. Khi chương trình phục vụ ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi. PHẦN 3. Cấu trúc bộ nhớ AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương trình. Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu. 3.1. Bộ nhớ chương trình (Bộ nhớ Flash) Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình. Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16. Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trình ứng dụng. 3.2. Bộ nhớ dữ liệu SRAM 1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội. 3.3. Bộ nhớ dữ liệu EEPROM ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một. PHẦN 4. CÁC CỔNG VÀO RA (I/O) Vi điều khiểnATmega16có 32 đường vào ra chia làm bốn nhóm 8 bit một. Các đường vào ra này có rất nhiều tính năng và có thể lập trình được. Ở đây ta sẽ xét chúng là các cổng vào ra số. Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra hai chiều có thể định hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình được). Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau. Chúng ta có thanh ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA, PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB, DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC, PIND). 4.1. Thanh ghi DDRx Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào). Nếu như một bit trong thanh ghi này được set thì bit tương ứng đó trên PORTx được định nghĩa như một cổng ra. Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORTx được định nghĩa là cổng vào. [...]... nhớ và các phần ngoại vi vào ra có thể lập trình được Còn vi điều khiển thì thường ứng dụng trong các mạch điện điều khiển Để chạy vi điều khiển trong một mạch điều khiển thì phải sử dụng một chương trình nạp vào nó rồi cắm nó vào mạch điều khiển Khi nói đến vi điều khiển thì có mấy hãng như Microchip (PIC), ATMEL (AVR) v.v Vi điều khiển có khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúc... GIỮA VI ĐIỀU KHIỂN VÀ VI XỬ LÝ Hai khái niệm mircoprocessor = vi xử lý và microcontroller = vi điều khiển có khác nhau Có thể nói nôm na phân biệt hai khái niệm như sau: I Vi xử lý (Microprocessor): Là con chíp (TO) của máy tính, có thể gọi là bộ phận đầu não của CPU của máy tính tổng hợp toàn bộ hay gần toàn bộ các chức năng của CPU máy tính Vi xử lý thì thường ứng dụng làm máy tính Để chạy bộ vi xử... Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi: ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh ghi điều khiển và thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ liệu Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi: ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh ghi điều. .. (tốc độ xử lý chậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị giới hạn) Thay vào đó, Vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, vi c sử dụng đơn giản, do đó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏi tính toán phức tạp Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt,... ứng dụng của Vi xử lý là rất lớn Vi xử lý kết hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có tốc độ nhanh Chẳng hạn như các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v II Vi điều khiển (Microcontroller): Vi điều khiển là một con chíp (NHỎ) có chức... thay đổi trạng thái ở đầu vào này Ngoài ra, một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin VI. PHÁT TRIỂN PHẦN MỀM ST cung cấp một thư vi n điều khiển thiết bị ngoại vi, một bộ thư vi n phát triển USB như là một thư vi n ANSI C có rất nhiều RTOS mã nguồn mở và thương mại và middleware(TCP/IP, hệ thống gỡ rối hoàn toàn mới gọi là CoreSight Truy cập vào hệ... nhưng cấu trúc phần cứng dành cho người dùng đơn giản hơn nhiều Vi điều khiển ra đời mang lại sự tiện lợi đối với người dùng, họ không cần nắm vững một khối lượng kiến thức quá lớn như người dùng vi xử lý, kết cấu mạch điện dành cho người dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bên ngoài Vi điều khiển tuy được xây dựng với phần cứng dành cho người sử dụng... hiện các công vi c với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự trên màn hình đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là... năng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi Để vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ, công vi c thực hành lệnh bao gồm: nhận lệnh từ bộ... chức năng cần thực hiện.nhờ vậy vi xử lý có sự mềm dẻo trong các chức năng của minh.ngày nay vi xử lý có tốc độ tính toán rất cao và khả năng xử lý rất lớn Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý không có khả năng giao . ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần. xác định các mã thao tác mà CPU cần thực hiện. +Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi. +thanh ghi PC, lưu giữ địa chỉ của lệnh kế tiếp cần thực thi. +Một tập các thanh ghi. giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp