Tải bản đầy đủ (.doc) (18 trang)

DTCN_DOAN_TN_006_CHUONG II_ATMEGA32

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 (999.67 KB, 18 trang )

Đồ án tốt nghiệp Trang 2
CHƯƠNG II
GIỚI THIỆU
VI ĐIỀU KHIỂN
ATMEGA32
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 3
2 .1 Giới thiệu AVR Atmega32
Atmega32 là bộ vi điều khiển thuộc họ AVR do hãng Atmel sản xuất, 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 Instruction Set
Computer). Công nghệ này cho phép hầu hết các lệnh được 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. Vi điều
khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm
bảo tốc đô xử lý.
Đặc điểm, tính năng:
• Hiệu suất cao và điện năng tiêu thụ thấp.
• Được chế tạo theo cấu trúc RISC.
 Bộ lệnh gồm 131 lệnh, hầu hết đều được thực thi trong 1 chu kỳ xung nhịp.
 32 x 8 thanh ghi làm việc đa dụng.
• Độ bền cao, không thay đổi phân vùng nhớ.
 32K Bytes Flash có khả năng lập trình được trên hệ thống.
 1024 Bytes EEPROM.
 2K Bytes bộ nhớ SRAM nội.
 Chu kỳ ghi/xoá : 10.000 Flash / 100.000 EEPROM.
 Độ bền dữ liệu : 20 năm ở 85
0
C / 100 năm ở 25
0
C.
 Giao diện SPI cho lập trình hệ thống.
 Lập trình khoá chip bảo mật phần mềm.


• Giao diện JTAG (phù hợp tiêu chuẩn IEEE 1149.1).
• Tính năng On-chip debug.
• Đặc điểm ngoại vi.
 2 bộ Timer/ Counter 8 bit, 1 bộ Timer/ Counter 16 bit.
 Bộ counter thời gian thực với bộ dao động riêng biệt.
 4 kênh PWM.
 8 kênh ADC 10 bit.
 Giao diện nối tiếp Two-Wire-Serial (tương thích chuẩn I2C).
 Giao diện nối tiếp UART (tương thích chuẩn nối tiếp RS-232).
 Giao diện nối tiếp SPI (Serial Peripheral Interface).
 Hỗ trợ lập trình Wacthdog timer.
• Các tính năng đặc biệt của bộ vi xử lý.
 Thiết lập lại nguồn và phát hiện nguồn yếu (brown-out).
 Dao động nội RC.
 6 chế độ chờ: Idle, giảm nhiễu ADC, Power-save, Power-down, Standby và
Standby mở rộng.
• Cổng vào/ra và đóng gói:
 32 ngõ I/O lập trình được.
 Dạng PDIP 40 chân, dạng TQFP và QFN/MLF 44 chân.
• Điện áp và xung nhịp hoạt động.
 4,5V – 5,5V Atmega32 / 0 – 16MHz.
 2,7V – 5,5V Atmega32A/ 0 – 8MHz.
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 4
2.1.1 Sơ đồ chân
Sơ đồ chân Atmega32:
Hình 2.1 Sơ đồ chân của Atmega32.
Mô tả sơ lược chức năng các chân:
• VCC : Là chân cấp điện áp nguồn cung cấp Vcc.
• GND : Là chân nối mass.

• PortA (PA7:PA0) :
 Ngõ vào chuyển đổi ADC.
 Ngõ vào/ra song hướng 8 bit nếu không dùng như bộ chuyển đổi ADC.
• PortB (PB7:PB0) :
 Ngõ vào/ra song hướng 8 bit.
 PortB cũng có chức năng đặc biệt:
PB7 (SCK) : Ngõ ra xung clock Master, ngõ vào xung clock Slave cho SPI.
PB6 (MISO) : Ngõ vào data Master, ngõ ra data Slave cho SPI.
PB5 (MOSI) : Ngõ ra data Master, ngõ vào data Slave cho SPI.
PB4 (SS\) : Ngõ vào lựa chọn Slave cho SPI, tích cực mức thấp.
PB3 (AIN1/OC0) : Ngõ vào so sánh tương tự / Nngõ ra Timer/Counter.
PB2 (AIN0/INT2) : Ngõ vào so sánh tương tự / Ngắt ngoài thứ 2.
PB1 (T1) : Timer/Counter1.
PB0 (T0/XCK) : Timer/Counter0 / Xung ngoài USART.
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 5
• PortC (PC7:PC0) :
 Ngõ vào/ra song hướng 8 bit.
 PortB cũng có chức năng đặc biệt:
PC7 (TOSC2) : Ngõ vào kết nối đồng bộ với bộ dao động Timer/Counter2.
PC6 (TOSC1) : Ngõ vào kết nối đồng bộ với bộ dao động Timer/Counter2.
PC5 (TDI) : Chân kiểm tra dữ liệu vào chuẩn JTAG.
PC4 (TDO) : Chân kiểm tra dữ liệu ra theo chuẩn JTAG.
PC3 (TMS) : Chân chọn mode kiểm tra theo chuẩn JTAG.
PC2 (TCK) : Chân xung kiểm tra theo chuẩn JTAG.
PC1 (SDA) : Chân data theo chuẩn Two-Wire-Serial.
PC0 (SCL) : Chân xung clock theo chuẩn Two-Wire-Serial.
• PortD (PD7:PD0) :
 Ngõ vào/ra song hướng 8 bit.
 PortD cũng có chức năng đặc biệt:

PD7 (OC2) : Timer/Counter2.
PD6 (ICP1) : Timer/Counter1.
PD5 (OC1A) : Timer/Counter1A out.
PD4 (OC1B) : Timer/Counter1B out.
PD3 (INT1) : Ngắt ngoài 1.
PD2 (INT0) : Ngắt ngoài 0.
PD1 (TXD) : Ngõ ra truyền thông USART.
PD0 (RXD) : Ngõ vào truyền thông USART.
• Reset\ : Ngõ vào reset, tích cực mức thấp.
• XTAL1 : Ngõ vào bộ khuếch đại dao động.
• XTAL2 : Ngõ ra bộ khuếch đại dao động.
• AVCC : Chân cấp nguồn cho PortA và bộ chuyển đổi ADC. Khi không sử dụng ADC
chân này nên được nối nguồn VCC. Khi sử dụng ADC, chân này nên được nối qua bộ
lọc thấp tần (tụ điện).
• AREF : Chân điện áp tham chiếu cho bộ chuyển đổi ADC.
2.1.2 Tổng quan
• Cấu trúc bên trong Atmega32:
Phần lõi của AVR kết hợp phong phú về cấu trúc lệnh 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 trong cùng 1 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 thông thường.
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 6
Hình 2.2 Sơ đồ cấu trúc của AVR Atmega32.
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 7
Lõi AVR sử dụng kiến trúc Harvard – với các bus riêng biệt cho chương trình và dữ liệu. Lệnh
từ bộ nhớ chương trình thực thi thông qua một ống đơn cấp. Khi một lênh đang thực thi, lệnh
tiếp theo sẽ được nhốt (pre-fetch) từ bộ nhớ chương trình, cho phép các lệnh được thực thi
trong mỗi chu kì clock.

32 thanh ghi làm việc 8-bit cho phép truy xuất nhanh trong 1 chu kỳ clock. Trong hoạt động
thông thường của ALU, 2 toán hạng xuất ra từ thanh ghi làm việc, lệnh thực thi, và kết quả lưu
ngược lại thanh ghi làm việc chỉ trong 1 chu kì clock.
6 trong số 32 thanh ghi được dùng như con trỏ địa chỉ gián tiếp 16-bit sử dụng cho địa chỉ
không gian dữ liệu. 1 trong 3 thanh ghi địa chỉ này có thể dùng như con trỏ địa chỉ look-up
table trong bộ nhớ Flash.
Bộ ALU hỗ trợ các hoạt động tính toán số học và logic giữa thanh ghi với nhau, hay giữa
thanh ghi với hằng số. Các hoạt động từng thanh ghi đơn cũng được thực hiện trong ALU. Sau
khi tính toán, thanh ghi trạng thái (Status Register) cập nhật thông tin liên quan đến kết quả
tính toán.
Dòng chương trình (Program Flow) được cung cấp bởi các lệnh nhảy có điều kiện hoặc không
điều kiện, và có thể định địa chì trực tiếp đến toàn bộ không gian địa chỉ. Hầu hết các lệnh
trong AVR đều ở dạng 16-bit. Mỗi địa chỉ bộ nhớ chương trình chứa một lệnh 16 hoặc 32-bit.
Bộ nhớ chương trình chia ra làm 2 phần: Boot Loader và vùng ứng dụng. Cả 2 đều sử dụng các
lockbit để bảo vệ đọc/ghi. Lệnh SPM thực thi việc ghi dữ liệu vào vùng flash ứng dụng phải
được đặt trong vùng Boot Loader.
Trong quá trình ngắt hay hàm/chương trình con được gọi, địa chỉ trả về của bộ đếm chương
trình lưu trong ngăn xếp (stack). Stack được phân bố hiệu quả trong 1 phần bộ nhớ SRAM, vì
vậy, độ lớn của stack chỉ phụ thuộc vào SRAM và việc sử dụng SRAM. Chương trình người
dùng cần phải khởi tạo giá trị này cho SP – Con trỏ ngăn xếp (Stack Pointer) trong chương
trình sau khi reset và trước khi thực hiện bất kì việc gọi hàm hay chương trình ngắt được thực
thi.
Module ngắt linh hoạt có thanh ghi điều khiển riêng trong không gian IO và có bit cho phép
ngắt toàn cục trong thanh ghi trạng thái (Status Register). Tất cả các ngắt đều có vector ngắt
riêng trong bảng vector ngắt. Các ngắt có ưu tiên ngắt theo đúng vị trí ngắt của nó. Địa chỉ
ngắt càng thấp thì độ ưu tiên ngắt càng cao.
2 . 2 Giao tiếp UART trên Atmega32
2.2.1 Giới thiệu
Thuật ngữ USART (Universal Synchronous & Asychronous serial Reveiver and Transmitter)
nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ. Trong đó UART nói đến truyền

nhận không đồng bộ, thường để chỉ thiết bị phần cứng, không phải chỉ một chuẩn giao tiếp.
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32
Đồ án tốt nghiệp Trang 8
USART hay UART cần phải kết hợp với một thiết bị chuyển đổi mức điện áp để tạo ra một
chuẩn giao tiếp nào đó (ví dụ chuẩn RS232).
Truyền thông nối tiếp:
Trong các ứng dụng phức tạp cần sử dụng nhiều vi điều khiển (hoặc vi điều khiển và máy tính)
kết nối với nhau. Khi làm việc, các vi điều khiển này cần trao đổi dữ liệu với nhau, việc sử
dụng giao tiếp song song là đơn giản nhất vì dữ liệu được xuất và nhận trực tiếp không thong
qua bất kỳ một giải thuật biến đổi nào và vì thế tốc độ truyền cũng rất nhanh. Tuy nhiên,
nhược điểm của cách truyền này là số đường truyền quá nhiều. Hệ thống truyền song song
thường rất cồng kềnh và kém hiệu quả. Truyền thông nối tiếp sẽ giải quyết vấn đề này, trong
truyền thông nối tiếp dữ liệu được truyền từng bit trên 1 (hoặc một ít) đường truyền.
Khác với cách truyền đồng bộ, truyền thông “không đồng bộ” chỉ cần 1 đường truyền cho một
quá trình. “Khung dữ liệu” đã được chuẩn hoá bởi các thiết bị nên không cần đường xung nhịp
báo trước dữ liệu đến. Do đó, việc tuân thủ các tiêu chuẩn truyền là rất quan trọng.
Các khái niệm quan trọng trong phương pháp truyền thông này.
• Baud rate (tốc đô Baud): Để việc truyền và nhận không đồng bộ xảy ra thành công thì
các thiết bi tham gia phải thông nhất với nhau về khoảng thời gian dành cho 1 bit
truyền, hay nói cách khác tốc độ truyền phải được cài đặt từ trước phải giống nhau, tốc
độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây.
Ví dụ tốc độ Baud là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~52.083us.
• Frame (khung truyền): Khung truyền là yếu tố quan trọng tạo nên sự thành công khi
truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các
bit báo như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit
trong một data cũng được quy định bởi khung truyền. Đối với AVR, khung truyền phổ
biến nhất thường là: Start bit + 8 bit data + 1 stop bit.
• Start bit: là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo
cho thiết bị nhận biết rằng có một gói dữ liệu được truyền tới. Ở module USART trong
AVR, đường truyền luôn ở trạng thái cao khi nghỉ (idle), nếu một chip AVR muốn thực

hiện việc truyền dữ liệu, nó sẽ gửi một bit start băng cách kéo đường truyền xuống
mức “0”. Như vậy, với AVR bit start mang giá trị “0” và có giá trị điện áp 0V (với
chuẩn RS232 giá trị điện áp của bit start là ngược lại). Start bit là bit bắt buộc phải có
trong khung truyền.
• Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận. Data
không nhất thiết phải là gói 8 bit, với AVR chúng ta có thể quy định số lượng bit của
data là 5, 6, 7, 8 hoặc 9. Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất
(LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng
là bit có trọng số lớn nhất (MSB – Most Significant Bit, bit bên trái).
• Parity bit: là bit dùng để kiểm tra dữ liệu truyền có đúng không (một cách tương đối).
Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn nghĩa
GVHD: Ths. Nguyễn Văn Nga Chương II: Giới thiệu vi điều khiển Atmega32

×