bai1.lam quen avr.hocavr.com

36 625 11
Tài liệu đã được kiểm tra trùng lặp
bai1.lam quen avr.hocavr.com

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

I Giới thiệu AVR họ vi điều khiển hãng Atmel sản xuất (Atmel nhà sản xuất dịng vi điều khiển 89C51 mà bạn nghe đến) AVR chip vi điều khiển bits với cấu trúc tập lệnh đơn giản hóa-RISC(Reduced Instruction Set Computer), kiểu cấu trúc thể ưu xử lí Tại AVR: so với chip vi điều khiển bits khác, AVR có nhiều đặc tính hẳn, tính ứng dụng (dễ sử dụng) đặc biệt chức năng:  Gần không cần mắc thêm linh kiện phụ sử dụng AVR, chí khơng cần nguồn tạo xung clock cho chip (thường khối thạch anh)  Thiết bị lập trình (mạch nạp) cho AVR đơn giản, có loại mạch nạp cần vài điện trở làm số AVR cịn hỗ trợ lập trình on – chip bootloader khơng cần mạch nạp…  Bên cạnh lập trình ASM, cấu trúc AVR thiết kế tương thích C  Nguồn tài nguyên source code, tài liệu, application note…rất lớn internet  Hầu hết chip AVR có tính (features) sau: Có thể sử dụng xung clock lên đến 16MHz, sử dụng xung clock nội lên đến MHz (sai số 3%) Bộ nhớ chương trình Flash lập trình lại nhiều lần dung lượng lớn, có SRAM (Ram tĩnh) lớn, đặc biệt có nhớ lưu trữ lập trình EEPROM Nhiều ngõ vào (I/O PORT) hướng (bi-directional) bits, 16 bits timer/counter tích hợp PWM Các chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh Chức Analog comparator Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232) Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C) Master Slaver Giao diện nối tiếp Serial Peripheral Interface (SPI) Một số chip AVR thông dụng: AT90S1200 AT90S2313 AT90S2323 and AT90S2343 AT90S2333 and AT90S4433 AT90S4414 and AT90S8515 AT90S4434 and AT90S8535 AT90C8534 ATtiny10, ATtiny11 and ATtiny12 ATtiny15 ATtiny22 ATtiny26 ATtiny28 ATmega8/8515/8535 ATmega16 ATmega161 ATmega162 ATmega163 ATmega169 ATmega32 ATmega323 ATmega103 ATmega64/128/2560/2561 AT86RF401 Trong viết sử dụng chip ATmega8 để làm ví dụ, tơi chọn ATmega8 loại chip thuộc dịng AVR nhất, có đầy đủ tính AVR lại nhỏ gọn (gói PDIP có 28 chân) low cost nên bạn mua để tự tạo ứng dụng Tại Assembly (ASM): bạn khơng cần biết cấu trúc AVR lập trình cho AVR phần mềm hỗ trợ ngôn ngữ cấp cao BascomAVR (Basic) hay CodevisionAVR (C), nhiên khơng phải mục đích viết Để hiểu thấu đáo AVR bạn phải lập trình ngơn ngữ nó, ASM Như lập trình ASM giúp bạn hiểu tường tận AVR, tất nhiên để lập trình ASM bạn phải hiểu cấu trúc AVR….Một lý khác bạn mà khuyên bạn nên lập trình ASM trình dịch (compiler) ASM cho AVR hồn tồn miễn phí, nguồn source code cho AVR viết ASM lớn Tuy nhiên bạn thành thạo AVR ASM bạn sử dụng ngơn ngữ cấp cao C để viết ứng dụng ưu điểm ngôn ngữ cấp cao giúp bạn dễ dàng thực phép toán đại số 16 hay 32 bit (vốn vấn đề khó khăn lập trình ASM) II Cơng cụ Trình biên dịch: có nhiều trình biên dịch bạn sử dụng đế biên dịch code bạn thành file intel hex để nạp vào chip, số trình dịch quen thuộc kể đến sau:  AvrStudio: trình biên dịch ASM thức cung cấp Atmel, trình biên dịch hồn tồn miễn phí tất nhiên tốt cho lập trình AVR ASM Phiên 4.18 SP1, bạn download phần mềm AvrStudio trang web thức Atmel 4.623  Wavrasm: cung cấp Atmel, tiền thân AvrStudio Hiện wavrasm khơng cịn sử dụng nhiều so với AvrStudio trình biên dịch có nhiều hạng chế, bạn quan tâm download  WinAVR hay avr-gcc: trình dịch phát triển gnu, ngôn ngữ sử dụng C dùng tích hợp với AvrStudio (dùng Avrstudio làm trình biên tập – editor) Đặc biệt biên dịch miễn phí đa số nguồn source code C viết này, lí tưởng cho bạn viết ứng dụng chun nghiệp Việc lập trình avrgcc tơi đề cập phần sau  CodeVisionAvr: chương trình ngơn ngữ C hay cho AVR, hỗ trợ nhiều thư viện lập trình Tuy nhiên chương trình thương mại Bạn download demo (đầy đủ chức nhưng giới hạn dung lượng nhớ chương trình 2KB) Website hpinfotech  ICCAVR: lập trình C cho avr, download demo  BascomAVR: lập trình cho AVR basic, trình biên dịch hay dễ sử dụng, hỗ trợ nhiều thư viện Tuy nhiên khó debug lỗi khơng thích hợp cho việc tìm hiểu AVR Vì tơi khơng bạn khuyến khích bạn sử dụng trình dịch Bạn download demo (4K limit)  Và cịn nhiều trình biên dịch khác cho AVR mà tơi khơng kể đây, nhìn chung tất trình biên dịch hỗ trợ C Basic chí Pascal Việc chọn trình biên dịch tùy thuộc vào mục đích, vào mức độ ứng dụng, vào kinh nghiệm sử dụng nhiều lý khác Ví dụ tơi thường dùng Avrstudio avrgcc học sử dụng AVR viết thư viện Nhưng cần viết chương trình ứng dụng tơi thường chọn avrgcc CodeVisionAVR Trong viết hướng dẫn bạn sử dụng AvrStudio để viết chương trình cho AVR ASM Chương trình nạp (Chip Programmer): đa số trình biên dịch (AvrStudio, CodeVisionAVR, Bascom…) tích hợp sẵn chương trình nạp chip hỗ trợ nhiều loại mạch nạp nên bạn không lo lắng Trong trường hợp khác, bạn sử dụng chương trình nạp Icprog hay Ponyprog…là chương trình nạp miễn phí cho AVR Việc chọn sử dụng chương trình nạp giới thiệu sau Mạch nạp: tham khảo viết giới thiệu mạch nạp AVR Chương trình mơ phỏng: avr simulator trình mơ debbug tích hợp sẵn Avrstudio, avr simulator cho phép bạn quan sát trạng thái ghi bên AVR nên phù hợp để bạn debug chương trình Proteus chương trình thứ hai tơi muốn nói đến, Proteus khơng mơ hoạt động bên chip mà cịn mơ mạch điện tử Proteus mơ trực quan, cơng cụ hữu ích bạn chưa có điều kiện làm mạch điện tử III Ví dụ bạn Sau download AvrStudio, bạn cài đăt phần mềm máy bạn, trình cài đặt đơn giản, bạn theo mặc định nhấn “next” để cài đặt Trong viết thử chương trình đơn giản cho AVR sau chạy mơ Proteus Có thể có số câu lệnh bạn khơng hiểu, đừng lo lắng quá, thứ học cấu trúc AVR bạn giải thich rõ Để thực ví dụ này, bạn tạo Project AVRStudio, phần hướng dẫn chi tiết cho việc tạo Project AVRStudio bạn tham khảo hướng dẫn AVRStudio.Đoạn code ví dụ trình bày List1 List Đoạn code bạn 10 11 12 13 14 15 16 17 18 CSEG INCLUDE "M8DEF.INC" ORG 0x000 RJMP BATDAU ORG 0x020 BATDAU: ; KHOI TAO CAC DIEU KIEN DAU LDI R16, HIGH(RAMEND) LDI R17, LOW(RAMEND) OUT SPH, R16 OUT SPL, R17 LDI R16, 0xFF; OUT DDRB, R16 ; CHUONG TRINH CHINH MAIN: LDI R16, 0B00000001 19 OUT PORTB, R16 20 RCALL DELAY 21 22 LDI R16, 0B00000010 23 OUT PORTB, R16 24 RCALL DELAY 25 26 LDI R16, 0B00000100 27 OUT PORTB, R16 28 RCALL DELAY 29 30 LDI R16, 0B00001000 31 OUT PORTB, R16 32 RCALL DELAY 33 34 LDI R16, 0B00010000 35 OUT PORTB, R16 36 RCALL DELAY 37 38 LDI R16, 0B00100000 39 OUT PORTB, R16 40 RCALL DELAY 41 42 LDI R16, 0B01000000 43 OUT PORTB, R16 44 RCALL DELAY 45 46 LDI R16, 0B10000000 47 OUT PORTB, R16 48 RCALL DELAY 49 50 RJMP MAIN 51 ; CHUONG TRING CON DELAY 65535 chu ky (khoang 65535us neu xung ;clock cho chip 52 DELAY: 53 LDI R20, 0xFF 54 DELAY0: 55 LDI R21, 0xFF 56 DELAY1: 57 DEC R21 58 BRNE DELAY1 59 DEC R20 60 BRNE DELAY0 61 RET Trước tìm hiểu ý nghĩa đoạn code, nhìn lượt qua đoạn code Trước hết việc viết HOA hay viết thường khơng quan trọng, bạn viết đoạn code với hình thức miễn cú pháp, từ khóa Trong đoạn code:  Bạn thấy số từ có màu BLUE (ví dụ LDI, OUT, RJMP, RCALL, RET…)đó INSTRUCTiON, tức câu lệnh ngơn ngữ ASM, bạn đọc tài liệu “AVR INSTRUCTION” để tìm hiểu tất INSTRUCTION Các INSTRUCTION sau trình dịch dịch thành mã tương ứng  Một số từ bắt đầu bằng dấu chấm “.” DIRECTIVE (ví dụ INCLUDE hay ORG )đó từ khóa mặc định ASM AVR, DIRECTIVE khơng phải mã lệnh mà dẫn địa nhớ, khởi động nhớ, định nghĩa macro…và khơng trình dịch dịch thành mã Chi tiết DIRECTIVE tìm thấy tài liệu ASM AVR, tơi tóm tắt DIRECTIVE chức chúng sau:  Thông thường INSTRUCTION theo sau toán hạng – operand (tuy nhiên có nhiều trường hợp có tốn hạng khơng có tốn hạng), tốn hạng thứ THANH GHI AVR (như đề cập, khảo sát ghi AVR sau), ví dụ : “LDI R16, 0xFF;” tốn hạng “R16” tên ghi AVR, “0xFF” số dạng hexadecimal có giá trị tương ứng 255 dạng thập phân hay 11111111 nhị phân  Các từ theo sau dấu “:” nhãn – label (ví dụ MAIN, DELAY…), từ tự đặt, thực chất vị trí nhớ chương trình, sử dụng nhãn chương trình  Phần sau dấu “;” gọi giải thích – comment, phần khơng biên dịch, bạn ghi comment đâu chương trình với yêu cầu phải sử dụng dấu “;” trước Giải thích đoạn code:có thể chia đoạn code thành phần: phần đầu chứa DIRECTIVE lệnh RJMP dùng để xác định địa nhớ chương trình, phần khởi tạo số điều kiện đầu cho Stack Pointer PORT, phần chương trình chính, phần chương trình ( ý cách bố trí riêng tơi, quen thuộc, bạn bố trí chương trình theo cách riêng bạn)  Phần phần 2: CSEG Chỉ thị CSEG: Code Segment báo cho trình biên dịch phần code theo sau phần chương trình thực thi, phần download vào nhớ chương trình chip .INCLUDE "M8DEF.INC" Chỉ thị INCLUDE báo cho trình biên dịch bắt đầu đọc file đính kèm, trường hợp file “M8DEF.INC”, file chứa khai báo cho chip Atmega8 ghi, ngắt…cho việc truy xuất chương trình bạn, dịng bắt buộc, bạn lập trình cho chip khác bạn đổi tên file đính kèm, ví dụ “m32def.inc” cho chip ATmega32… bạn tìm thấy file thư mục “C:\ Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes” ... biên dịch bạn sử dụng đế biên dịch code bạn thành file intel hex để nạp vào chip, số trình dịch quen thuộc kể đến sau:  AvrStudio: trình biên dịch ASM thức cung cấp Atmel, trình biên dịch hồn... đầu cho Stack Pointer PORT, phần chương trình chính, phần chương trình ( ý cách bố trí riêng tơi, quen thuộc, bạn bố trí chương trình theo cách riêng bạn)  Phần phần 2: CSEG Chỉ thị CSEG: Code... Votes ) Nội dung Lập trình Asembly AVR Studio Lập trình C AVR Studio Các cần tham khảo trước Làm quen AVR Download AVRStudio Trong hướng dẫn cách sử dụng công cụ AVRStudio đề tạo Project lập trình

Ngày đăng: 14/03/2013, 21:20

Hình ảnh liên quan

Hình 1: chip ATmega8. - bai1.lam quen avr.hocavr.com

Hình 1.

chip ATmega8 Xem tại trang 12 của tài liệu.
Hình 2. Mô phỏng.    - bai1.lam quen avr.hocavr.com

Hình 2..

Mô phỏng. Xem tại trang 17 của tài liệu.
Hình 1. Welcome to AVR studi o4 Diaolg. - bai1.lam quen avr.hocavr.com

Hình 1..

Welcome to AVR studi o4 Diaolg Xem tại trang 18 của tài liệu.
Hình 2. Giao diện AVRStudio. - bai1.lam quen avr.hocavr.com

Hình 2..

Giao diện AVRStudio Xem tại trang 19 của tài liệu.
Hình 3. Tạo Project mới. - bai1.lam quen avr.hocavr.com

Hình 3..

Tạo Project mới Xem tại trang 20 của tài liệu.
Hình 4.Setting Project. - bai1.lam quen avr.hocavr.com

Hình 4..

Setting Project Xem tại trang 20 của tài liệu.
Hình 5. Chọn Platform và device. - bai1.lam quen avr.hocavr.com

Hình 5..

Chọn Platform và device Xem tại trang 21 của tài liệu.
Hình 6. Cửa sổ lập trình. - bai1.lam quen avr.hocavr.com

Hình 6..

Cửa sổ lập trình Xem tại trang 22 của tài liệu.
Hình 7. Chọn AVRGCC làm trình biên dịch chính. - bai1.lam quen avr.hocavr.com

Hình 7..

Chọn AVRGCC làm trình biên dịch chính Xem tại trang 23 của tài liệu.
Hình 1. Giao diện Proteus. - bai1.lam quen avr.hocavr.com

Hình 1..

Giao diện Proteus Xem tại trang 25 của tài liệu.
Hình 2. Chọn linh kiện. - bai1.lam quen avr.hocavr.com

Hình 2..

Chọn linh kiện Xem tại trang 26 của tài liệu.
Hình 3. Chọn điện trở. - bai1.lam quen avr.hocavr.com

Hình 3..

Chọn điện trở Xem tại trang 27 của tài liệu.
Hình 5. Các link kiện cần cho mô phỏng. - bai1.lam quen avr.hocavr.com

Hình 5..

Các link kiện cần cho mô phỏng Xem tại trang 28 của tài liệu.
Hình 7. Đặt linh kiện lên mạch điện. - bai1.lam quen avr.hocavr.com

Hình 7..

Đặt linh kiện lên mạch điện Xem tại trang 30 của tài liệu.
Hình 8. Nút công cụ Inter – sheet Terminal. - bai1.lam quen avr.hocavr.com

Hình 8..

Nút công cụ Inter – sheet Terminal Xem tại trang 31 của tài liệu.
Hình 9. Nối dây. - bai1.lam quen avr.hocavr.com

Hình 9..

Nối dây Xem tại trang 31 của tài liệu.
Hình 10. Sau khi nối dây. - bai1.lam quen avr.hocavr.com

Hình 10..

Sau khi nối dây Xem tại trang 32 của tài liệu.
Hình 11. Thay đổi giá trị của điện trở. - bai1.lam quen avr.hocavr.com

Hình 11..

Thay đổi giá trị của điện trở Xem tại trang 33 của tài liệu.
Hình 12. Đổ chương trình cho chip. - bai1.lam quen avr.hocavr.com

Hình 12..

Đổ chương trình cho chip Xem tại trang 34 của tài liệu.