Tải bản đầy đủ (.pdf) (20 trang)

Giới thiệu về vi điều khiển AVR Atmega16

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (732.28 KB, 20 trang )

 Tốc độ làm việc 16MPIS, với thạch anh 16 MHz.
 On_chip 2 cycle multipler.
Bộ nhớ :
 ISP Flash với khả năng 10.000 lần ghi xóa.
 EEROM.
 RAM.
Giao tiếp JTAG :
 Khả năng quét toàn diện theo chuẩn JTAG.
 Hỗ trợ khả năng Debug onchip
 Hỗ trợ lập trình Flash, EEROM, fuse…
 Lock bit qua giao tiếp JTAG
Ngoại vi :
 Timer/ counter 8 bit với các chế độ : so sánh và chia tần số.
 Timer/counter 16 bit với các chế độ : so sánh, chia tần số, capture,
PWM.
 Timer thời gian thực (Real time Clock) với bộ dao động riêng biệt.
 Các kênh PWM.
 Kênh biến đổi ADC 10 bit.
 Hỗ trợ giao tiếp I2C.
 Bộ giao tiếp nối tiếp lập trình được USART.
 Giao tiếp SPI.
 Watch_dog timer với bộ dao động on_chip riêng biệt.
Những thuộc tính đặc biệt :
 Power on reset và Brown-out detection.
 Chế độ hiệu chỉnh bộ sai số cho bộ dao động RC on chip
 Các chế độ ngắt ngoài và trong đa dạng.
 6 mode sleep : Idle, ADC noise reduction, tiết kiệm năng lượng,
power-down, standby, extended standby.
Các phần mềm lập trình cho AVR :
22
 AVRStudio, Code Vision. Các phần mềm này có hỗ trợ phần nạp và


Debug on chip.
 Ngoài ra có thể dùng chương trình nạp PonyProg2000, Winpic800 …
2.1.2) Một số đặc trưng
AVR có cấu trúc Havard trong đó đường truyền cho bộ nhớ dữ liệu (data
memory bus) và đường truyền cho bộ nhớ chương trình (Program memory bus)
được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết
bị ngoại vi, các Register File. Trong khi đó, program memory bus có độ rộng 16 bit
và chỉ phục vụ cho thanh ghi lệnh (instruction register).
Bộ nhớ chương trình (program memory) là bộ nhớ Flash lập trình được.
Trong các loại AVR cũ như AT90S1200 bộ nhớ chương trình chỉ gồm một phần là
Application Flash Section còn trong các loại AVR mới có thêm phần Boot Flash
Section. Chức năng chính của bộ nhớ chương trình là chứa các lệnh (instruction)
nên chúng ta không có nhiều cơ hội tác động nên bộ nhớ này khi lập trình cho chip.
Cũng chính vì vậy mà đối với người lập trình thì bộ nhớ này “không quá quan
trọng”. Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của
chip.
23
Hình 2 - Cấu trúc bộ nhớ AVR
Bộ nhớ dữ liệu (data memory) : đây là phần chứa các thanh ghi quan trọng
nhất của chip. Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi
chip. Tuy nhiên về cơ bản bộ nhớ này được chia làm các phần :
 Tệp thanh ghi (Register file) : gồm 32 thanh ghi 8 bit có địa chỉ tuyệt
đối từ 0x0000 đến 0x001F. Các thanh ghi này được đặt tên là từ R0
đến R31. Chúng có đặc điểm :
• Được truy cập trực tiếp trong các instruction.
• Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần
một xung Clock.
• Tệp thanh ghi được kết nối trực tiếp với bộ xử lý trung tâm,
CPU chip.
• Chúng là nguồn chứa các số hạng trong các phép toán và cũng

là đích chứa kết quả
 Các thanh ghi vào ra (thanh ghi I/O hay còn gọi là vùng
nhớ I/O) là cổng giao tiếp giữa CPU với thiết bị ngoại vi. Tất cả các
24
thanh ghi điều khiển, trạng thái … của thiết bị ngoại vi đều nằm ở
đây.
 RAM ngoại (External RAM) : các chip vi điều khiển
AVR cho phép người dùng có thể gắn thêm RAM ngoài để chứa biến,
vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ
ngoài vào chip.
 EEPROM (Electrical Erasable Programmable ROM) là
một phần quan trọng của các chip AVR mới, vì là ROM nên bộ nhớ
này không bị xóa ngay cả khi không cấp nguồn nuôi chip, rất thích
hợp cho các ứng dụng lưu trữ dữ liệu.
2.1.3) Một số đặc trưng
Hình 2 - Cấu trúc bên trong của AVR
25
Hoạt động :Các lệnh được chứa trong bộ nhớ chương trình Flash Memory
dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu
kỳ xung Clock và một lệnh chứa trong Program memory được load vào thanh ghi
lệnh (instruction Register), thanh ghi lệnh tác động cũng như lựa chọn tệp thanh ghi
cũng như RAM cho ALU thực thi. Trong khi thực thi chương trình, địa chỉ của
dòng lệnh đang thực thi được quyết định bởi bộ đếm chương trình – PC (Program
Counter).
AVR có ưu điểm là hầu hết các lệnh đều được thực thi trong một chu kỳ
xung nhịp, vì thế mà trong một số trường hợp dù nguồn clock của AVR nhỏ hơn
một số loại vi điều khiển khác (như PIC) nhưng thời gian thực thi vẫn nhanh hơn.
2.1.4) Một số họ vi diều khiển AVR
Vi điều khiển AVR rất phong phú và đa dạng, bao gồm nhiều họ khác nhau :
 Họ ATUC30xxxx (xxxx thể hiện dung lượng Flash của vi điều khiển,

ví dụ : ATUC30512 có 512 kB Flash).
 Dòng vi điều khiển MEGA AVR.
 Dòng Tiny AVR.
 Dòng LCD AVR
 Dòng USB AVR
 Dòng CAN AVR.
2.2) Sơ bộ về vi điều khiển Atmega16
Atmega16 [3] là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa
trên kiến trúc RISC (Reduced Intruction Set Computer). Vào ra Analog – digital và
ngược lại. Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung
nhịp, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz.
26
Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá chế độ độ tiêu thụ năng
lượng mà vẫn đảm bảo tốc độ xử lí.
Sơ đồ khối
Hình 2 - Sơ đồ khối của Atmega16
Atmega16 có tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa
năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic
Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc
đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC (Complex
Intruction Set Computer) thông thường.
27
Khi sử dụng vi điều khiển Atmega16, có rất nhiều phần mềm được dùng để
lập trình bằng nhiều ngôn ngữ khác nhau đó là: Trình dịch Assembly như AVR
studio của Atmel, Trình dịch C như win AVR, CodeVisionAVR C, ICCAVR. C -
CMPPILER của GNU… Trình dịch C đã được nhiều người dụng và đánh giá tương
đối mạnh, dễ tiếp cận đối với những người bắt đầu tìm hiểu AVR, đó là trình dịch
CodeVisionAVR C. Phần mềm này hỗ trợ nhiều ứng dụng và có nhiều hàm có sẵn
nên việc lập trình tốt hơn.
2.2.1) Đặc trưng

 Được chế tạo theo kiến trúc RISC hiệu suất cao mà điện năng tiêu thụ thấp
 Tập lệnh gồm 131 lệnh, hầu hết đều chỉ thực thi trong 1 chu kì xung nhịp.
 Bộ nhân hai chu kì.
 32 x 8 thanh ghi làm việc đa dụng.
 Hoạt động tĩnh
 16 MIPS với thông lượng 16MHz
 8KB Flash ROM lập trình được ngay trên hệ thống :
 Giao diện nối tiếp SPI có thể lập trình ngay trên hệ thống.
 Cho phép 1000 lần ghi/xóa.
 Bộ EEPROM 512 byte, cho phép 100.000 lần ghi/xóa
 16 Kbyte bộ nhớ chương trình in-System Self-programmable Flash.
 Chu kì ghi/xóa (Write/Erase) :10.000 Flash/ 100.000 EEPROM.
 Độ bền dữ liệu 20 năm ở 85°C và 100 năm ở 25°C
 Bộ nhớ SRAM 512 byte.
 Bộ biến đổi ADC 8 kênh, 10 bit.
 32 ngõ I/O lập trình được.
 Bộ truyền nối tiếp bất đồng bộ vạn năng UART.
 Vcc=2.7V đến 5.5V.
 Tốc độ làm việc: 8 MHz đối với Atmega16L, 16MHz đối với
Atmega16 tối đa .
28
 Tốc độ xử lí lệnh đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên
giây.
 Bộ định thời gian thực (RTC) với bộ dao động và chế độ đếm
tách biệt
 2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia
tần số tách biệt và chế độ bắt mẫu.
 4 kênh điều chế độ rộng xung PWM.
 Có đến 13 interrupt ngoài và trong.
 Bộ so sánh Analog.

 Bộ lập trình Watch dog timer.
 6 chế độ ngủ : Idle, ADC Noise Reduction, Power-save, Power-
down, Standby và Extended Standby.
 Giao tiếp nối tiếp Master/Slave SPI.
Hình 2 - Sơ đồ chân Atmega16

 VCC: Điện áp nguồn nuôi.
29

×