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

Báo cáo MẠCH ATS sử DỤNG VI điều KHIỂN 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 (1.92 MB, 102 trang )

MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 1

CHƯƠNG 1: VI ĐIỀU KHIỂN AVR_ATMEGA16
Loại vi điều khiển họ AVR RISC là do công ty Atmel sản suất, với kiến trúc RISC
(Reduce Instruction Set Computer).
1.1. CÁC ĐẶC ĐIỂM CHÍNH:
Kiến trúc RISC với hầu hết các lệnh có chiều dài cố định, truy nhập bộ nhớ
nạp – lưu trữ và 32 thanh nghi đa năng.
Có nhiều bộ phận ngoại vi ngay trên chip, bao gồm: Cổng và/ra số, bộ biến
đổi ADC, bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung (PWM), …
Hầu hết các lệnh đều thực hiện trong một chu kỳ xung nhịp.
Hoạt động với chu kỳ xung nhịp cao, có thể lên đến 20 MHz tuỳ thuộc từng
loại chip cụ thể.
Bộ nhớ chương trình và bộ nhớ dữ liệu được tích hợp ngay trên chip.
Khả năng lập trình được trong hệ thống, có thể lập trình được ngay khi đang
được cấp nguồn trên bản mạch không cần phải nhấc chip ra khỏi bản mạch.
Hỗ trợ cho việc lập trình bằng ngôn ngữ bậc cao – ngôn ngữ C.

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 2

1.2. SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN ATMEGA16



GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 3

1.3. CÁC ĐẶC TÍNH:
Hiệu năng cao, tiêu thụ năng lượng ít
Kiến trúc RISC
130 lệnh, hầu hết các lênh thực hiện trong một chu kỳ
32 Thanh ghi 8-bit đa năng
Tốc độc thực hiện lên tới 16 triệu lệnh trong 1 giây với tần số 16 MHz
Có 2 bộ nhân, mỗi bộ thực hiện trong thời gian 2 chu kỳ
Các bộ nhớ chương trình và dữ liệu cố định
16 Kb bộ nhớ flash có khả năng tự lập trình trong hệ thống
Có thể thực hiện được 1.000 lần ghi/xoá
512 bytes EEFROM
Có thể thực hiện 100.000 lần ghi /xoá
1Kb SRAM bên trong
Lập trình khoá an ninh phần mềm
Ghép nối ngoại vi
2 bộ định thời/ bộ đếm 8 bit với các chế độ tỷ lệ định trước và chế độ so sánh.
1 bộ định thời/ bộ đếm 16 bit với các chế độ tỷ lệ định trước riêng biệt, chế độ
so sánh và chế độ bắt giữ
Bộ thời gian thực với bộ tạo dao động riêng biệt

6 kênh PWM
8 kênh, ADC 10 bit
Giao diện nối tiếp 2 dây hướng tới byte
Bộ truyền tin nối tiếp USART khả trình
Giao diện SPI chủ / tớ
Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt
Các đặc điểm đặc biệt khác.
Power-on Reset và dò Brown-out khả trình.
Bộ tạo dao động được định cỡ bên trong.
Các nguồn ngắt bên trong và bên ngoài.
5 chế độ ngủ: Nhàn rỗi, giảm ồn ADC, tiết kiệm năng lượng, giảm năng lượng
tiêu thụ, chờ
I/O và các loại: 32 đường I/O khả trình.
Điện áp hoạt động: 4.5- 5.5 V
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 4

1.4. SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN ATMEG16

Hình 1.4 Sơ đồ khối vi điều khiển Atmega16
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn

Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 5

ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng thực
hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc
độ 1MIPS trên mỗi MHz(1 triệu lệnh /s/MHz).
Atmega16 có các đặc điểm sau:
16 KB 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 chung, 32 đường vào ra
chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại USART, giao tiếp nối tiếp 2
dây, 8 kênh ADC 10 bit,…
Atmega16 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…
Mô tả các chân
VCC: Điện áp cung cấp số
GND: Chân nối đất
PORT B: (PB7:0) Port B là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port B có đặc tính điều
khiển cân đối với cả tín hiệu source và sink. Khi là tín hiệu đầu vào, các chân của
cổng B sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích hoạt. Các
chân của Port B là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậm chí đồng
hồ không chạy.
PORT C: (PC7:0) Port C là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit). Bộ nhớ đệm đầu ra của Port C có đặc tính
điều khiển cân đối với cả tín hiệu source và sink. Khi là các tín hiệu đầu vào, các
chân của cổng C sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích

hoạt. Các chân của Port C là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậm
chí đồng hồ không chạy.
PORT D: (PD7:0) Port D là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port D có đặc tính điều
khiển cân đối với cả tín hiệu source và sink. Khi là các tín hiệu đầu vào, các chân
của cổng D sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích hoạt.
Các chân của Port D là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậm chí
đồng hồ không chạy.

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 6

AVCC : AVCC là chân cấp điện cho cổng A và bộ biến đổi A/D. Nó được nối nội
bộ đến VCC ngay cả trong trường hợp ADC không được sử dụng. Nếu ADC được
sử dụng, nó phải được nối với VCC qua bộ lọc thông thấp.
AREF:AREF là chân tín hiệu tham chiếu analog nối vào bộ biến đổi A/D.
XTAL1, XTAL2 là 2 chân tạo bộ dao động ngoài cho vi điều khiển , các chân này
được nối với thạch anh.
RESET : Đây là chân reset cứng khởi động lại mọi hoạt động của hệ thống
1.5. KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AVR
1.5.1 Cấu trúc tổng quát

Hình 1.5.1 Sơ đồ cấu trúc CPU của ATmega16.

Để tối đa hoá hiệu năng tính năng và song song, AVR sử dụng kiến trúc
Harvard với bộ nhớ riêng biệt và các BUS cho chương trình và dữ liệu. Các câu
lệnh trong bộ nhớ chương trình được hoạt với một đường ống lệnh mức đơn.
Trong khi một lênh đang thực hiện, lệnh tiếp theo sẽ được nạp trước vào từ bộ nhớ
chương trình. Điều này làm cho các lệnh được thực hiện trong mọi chu kỳ đồng
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 7

hồ. Bộ nhớ chương trình là bộ nhớ In-System Reprogrammable Flash. Tập thanh
ghi truy cập nhanh bao gồm 32 thanh ghi đang năng 8 bit với thời gian ttruy cập là
1 chu kỳ đơn. Điều này cho phép ALU hoạt động trong một chu kỳ đơn. Một thao
tác điển hình với 2 toán hạng được của ALU, 2 toán hạng được lấy ra từ tệp thanh
ghi để thực hiện, và và kết quả được lưu trữ lại trong tệp thanh ghi trong một chu
kỳ đồng hồ. 6 trong số 32 thanh ghi có thể sử dụng như là 3 thanh ghi con trỏ địa
chỉ gián tiếp 16 bit để chỉ vào vùng dữ liệu phục vụ cho tính toán địa chỉ hiệu
dụng. Một trong các con trỏ địa chỉ này cũng có thể được sử dụng làm con trỏ địa
chỉ trỏ vào bảng dữ liệu trong bộ nhớ chương trình Flash. Các thanh ghi này là X,
Y và Z.
ALU thực hiện các phép toán logíc và số học giữa các thanh ghi hoặc giữa
thanh ghi với một hằng số. Cũng có thể thao tác với các thanh thanh ghi đơn trong
ALU. Sau khi thực hiện phép toán số học, các thanh ghi trạng thái được cập nhật
các thông tin về kết quả thực hiện.
Dòng chương trình được điều khiển bởi các phép nhảy có điều kiện hoặc

không điều kiện đến các lệnh được gọi, và chỉ đến các địa chỉ trực tiếp trong
không gian địa chỉ. Hầu hết các lệnh AVR đều thực hiện với dữ liệu 16 bit. Mỗi
địa chỉ bộ nhớ chương trình đều chứa 1 lệnh 32 bit hoặc 16 bit.
Không gian bộ nhớ chương trình Flash được chia thành 2 vùng, vùng chương
trình boot và vùng chương trình ứng dụng, cả hai vùng này đều có bit khoá chuyên
dụng để bảo vệ cho việc ghi và đọc/ghi. Lệnh SPM dùng để ghi vào vùng bộ nhớ
ứng dụng phải có trong vùng chương trình boot. Trong khi thực hiện các ngắt và
các thường trình, địa chỉ trở về của bộ đếm chương trình (PC) được lưu trữ trong
stack. Nhìn chung stack được định vị trong SRAM, và do vậy kích cỡ stack được
giới hạn bởi kích cỡ toàn bộ của SRAM, và cách sử dụng của SRAM. Tất cả các
chương trình của người sử dụng phải khởi tạo SP trong thường trình reset (trước
khi thường trình hoặc ngắt được thược hiện). SP có thể trỏ được vào không gian
I/O. SRAM có thể được truy cập một cách dễ dàng thông qua 5 chế độ địa chỉ
khác nhau hỗ trợ bởi kiến trúc AVR.
Không gian bộ nhớ trong kiến trúc AVR là bản đồ bộ nhớ thông thường và
tuyến tính.
Một module ngắt linh động có các thanh ghi điều khiển của nó trong không
gian I/O cùng với thêm vào bit khởi tạo ngắt toàn cục trong thanh ghi trạng thái.
Tất cả các ngắt có vector ngắt riêng biệt trong bảng vector ngắt. Các ngắt này có
mức độ ưu tiên theo vị trí của vector ngắt tương ứng. Mức có địa chỉ càng thấp thì
có quyền ưu tiên càng cao.
Không gian bộ nhớ I/O có 64 địa chỉ cho các chức năng ngoại vi của CPU như
là các thanh ghi điều khiển, SPI, và các chức năng I/O khác. Bộ nhớ I/O có thể
truy cập trực tiếp, hoặc như là vị trí không gian dữ liệu theo chúng của tệp thanh
ghi, $20-$5F. Thêm vào đó, nó có không gian I/O mở rộng từ $60 đến $FF trong
SRAM, các không gian này chỉ có các lệnh ST/STS/STD và LD/LDS/LĐ có thể
sử dụng.

GVHD: Trương Hoàng Hoa Thám


SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 8

1.5.2 ALU– Arithmetic Logic Unit - Đơn vị xử lý số học và logic
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
được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia lam 3
loại:đại số, logic và theo bit. Một số phép xử lý của kiến trúc này cũng cung cấp
bộ nhân số có dấu và không có dấu và dạng phân số.
1.5.3 Thanh ghi trạng thái (SREG - Status Register)
Đâ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. Các thông tin này có thể được sử dụng để điều khiển chương
trình. Trong nhiều trường hợp, điều này sẽ bỏ đi những cần thiết khi sử dụng câu
lệnh so sánh chuyên dụng, kết quả nhanh hơn và đoạn chương trình ngắn gọn hơn.
Thanh ghi trạng thái không tự động lưu trữ khi đang nhập vào môt chường trình
ngắt và lưu trữ khi trở về từ một ngắt. Điều này phải được quản lý bằng phần
mềm.
Thanh ghi trạng thái AVR – SREG - được định nghĩa như sau:

Hình 1.5.2Thanh ghi trạng thái SREG
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: Nagative 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)
H: Half carry Flag ( chỉ báo cho thấy sự mang sang (nhớ) một nửa trong một

số lệnh số học)
T: Bit copy Storage (được sử dụng với lệnh nạp bit BLD (bit load) và lưu trữ
bit BST (bit store) để nạp và lưu trữ các bit từ một thanh ghi vào một thanh ghi
khác.
I: Global Interrupt Enable (cho phép ngắt toàn cục. 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ụ).
Bit cho phép ngắt toàn cục phải được đặt để cho các ngắt có thể hoạt động. Điều
khiển hoạt động của các ngắt riêng biệt được thực hiện trong các thanh ghi điều
khiển riêng biệt. Nếu thanh ghi cho phép ngắt toàn cục được xóa, không có một
ngắt riêng biệt nào được hoạt động. Bit I được xóa bởi phần cứng sau khi một ngắt
xảy ra và được đặt bởi lệnh RETI để cho các phép các ngắt tiếp theo hoạt động.
Bit I cũng có thể được đặt và xóa bởi câu lệnh SEI và CLI trong các ứng dụng.

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 9

1.5.4 Các thanh ghi chức năng chung (General Purpose Register File)

Hình 1.5.3 Thanh ghi chức năng chung.
Hầu hết các lệnh thực hiện với tệp thanh ghi có truy cập trực tiếp tới tất cả các
thanh ghi, và hầu hết chúng là lệnh đơn chu kỳ. Mỗi một thanh ghi được chỉ định
bởi một địa chỉ bộ nhớ dữ liệu, bố trí chúng trực tiếp vào 32 vị trí đầu tiên của
không gian dữ liệu người sử dụng.

Mặc dù không phải là thực hiện theo luật như các vị trí của SRAM, tổ chức bộ
nhớ này cho phép linh động cao khi truy cập các thanh ghi, như là thanh ghi con
trỏ X,Y,Z có thể được đặt vào danh mục của mọi thanh ghi trong tệp.
The X-register, Y-register and Z-register.
Các thanh ghi R26..R31 có thêm các chức năng ngoài, việc sử dụng như là
một thanh ghi đa năng. Các thanh ghi này là các con trỏ địa chỉ 16 bit cho chế độ
địa chỉ gián tiếp của không gian dữ liệu. 3 thanh ghi địa chỉ gián tiếp X, Y, Z được
mô tả như như hình:

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 10

Hình 1.5.4 Các thanh ghi X, Y và Z
Trong các chế độ địa chỉ khác, các thanh ghi địa chỉ này có các chức năng như là
độ lệch cố định, tự động tăng và tự động giảm.
1.5.5 Con trỏ ngăn xếp(SP- Stack Pointer).
Là một thanh ghi 16 bit nhưng cũng có thể xem như 2 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.

Hình 1.5.5 Thanh ghi con trỏ ngăn xếp
Khi chương trinh 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ẽ

gảm một 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 một 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

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 11

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.
1.5.6 Điều khiển ngắt và reset- Reset and Interrupt Handling
AVR cung cấp 1 vài nguồn ngắt khác nhau. Các ngắt này và vector reset riêng
biệt có vector chương trình riêng biệt nằm trong không gian nhớ chương trình. Tất
cả các ngắt được chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được
ghi mức logic 1 cùng với bit cho phép ngắt toàn cục trong thanh ghi trạng thái để
cho phép ngắt. Phụ thuộc vào giá trị PC, các ngắt này phải được tự động loại bỏ
khi các bit Boot Lock - BLB02 or BLB12 - được lập trình. Yếu tố này cải thiện độ
an toàn phần mềm. Địa chỉ thấp nhất trong không gian bộ nhớ chương trình được
mặc định là Reset và Interrupt Vectors. Bảng vector ngắt –bảng 1:

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn

Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 12

Bảng 1-vecter ngắt và reset
Khi địa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.Các vector ngắt có thể được
chuyển sang đầu của vùng Boot Flash bằng cách đặt bit IVSEL trong thanh ghi
điều khiển ngắt (MCUCR). Reset Vector có thể được chuyển sang đầu của vùng
Boot Flash bằng cách lập trình BOOTRST fuse.
Khi một ngắt xảy ra, bit I (bit cho phép ngắt toàn cục) được xóa và tất cả các
ngắt được loại bỏ. Phần mềm sử dụng có thể ghi mức logic 1 vào bit I để cho phép

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 13

các ngắt tiếp theo. Tất cả các ngắt được kích hoạt có thể ngắt những chường trình
ngắt hiện tại.
Bit I được đặt tự động khi trở về từ lệnh RETI của ngắt.
Có 2 loại ngắt cơ bản:
+ Loại thứ nhất được gây ra bởi sự kiện mà đặt cờ ngắt. Đối với loại ngắt này,

PC được hướng tới Interrupt Vector tương ứng để thực hiện chương trình phục vụ
ngắt và phần cứng xoá cờ ngắt tương ứng. Các cờ ngắt cũng có thể được ghi mức
logic 1 vào vị trí bit cờ để được xoá. Nếu một điều kiện ngắt xảy ra trong khi bit
cho phép ngắt tương ứng bị xoá, thì cờ ngắt sẽ được đặt và được nhớ cho đến khi
ngắt được thực hiện, hoặc là cờ ngắt được xoá bởi phần mềm. Tương tự nếu 1
hoặc nhiều điều kiện ngắt xảy ra trong khi cờ cho phép ngắt toàn cục bị xoá thì các
cờ ngắt tương ứng sẽ được đặt và nhớ cho đến khi cờ cho phép ngắt toàn cục được
đặt và nó sẽ được thực hiện theo thứ tự ưu tiên.
+ Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại.
Các ngắt này không cần thiết phải có cờ ngắt. Nếu điều kiện ngắt mất đi trước khi
ngắt được cho phép, thì ngắt sẽ không xảy ra.Khi AVR thoát khỏi từ một ngắt, nó
sẽ luôn trở về chương trình chính và thực hiện một hoặc nhiều lệnh trước khi một
ngắt nào đó còn đợi đó được phục vụ. Chú ý rằng các thanh ghi trạng thái không
tự động lưu trữ khi nhập vào một thường trình ngắt, và cũng không lưu trữ lại khi
trở về từ một thường trình ngắt. Điều này phải được thực hiện bởi phần mềm.
Khi sử dụng câu lệnh CLI để cấm ngắt, các ngắt sẽ không được tác động ngay lập
tức. Không có ngắt nào được thực hiện sau khi thực hiện lệnh CLI, thậm chí nó
xảy ra cùng lúc với lệnh CLI.
Thời gian đáp ứng của 1 ngắt :Việc thực hiện ngắt trong ít nhất 4 chu kỳ đồng hồ
với tất cả các ngắt. Sau 4 chu kỳ đồng hồ, địa chỉ vector chương trình tương ứng
với chương trình điều khiển ngắt thực sự được khởi tạo. Trong thời gian 4 chu kỳ
này, PC được cất vào trong ngăn xếp. Vector thường là lệnh nhảy đến chương trình
ngắt và lệnh nhảy này mất 3 chu kỳ đồng hồ. Nếu một ngắt xảy ra trong khi thực
hiện một lệnh nhiều chu kỳ thì lệnh được hoàn thành trước khi ngắt được phục vụ.
Nếu một ngắt xảy ra khi MCU đang trong chế độ ngủ thì thời gian đáp ứng ngắt sẽ
tăng thêm 4 chu kỳ. Thời gian tăng thêm này là thời gian để khởi động lại từ chế
độ ngủ.
Sự trở về từ một chương trình điều khiển ngắt mất 4 chu kỳ xung nhịp.Trong thời
GVHD: Trương Hoàng Hoa Thám


SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 14

gian 4 chu kỳ này, PC (2 bytes) được lấy ra từ ngăn xếp, SP được tăng lên 2, và bit
I trong SREG được đặt.
1.6. CẤU TRÚC BỘ NHỚ
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu và bộ nhớ chương trình.
Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.
1.6.1 Bộ nhớ chương trình (bộ nhớ Flash) :
Bộ nhớ Flash 16 KB 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 8K x 16. 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.

Hình 1.6.1 Bản đồ bộ nhớ chương trình
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 15


1.6.2 Bộ nhớ dữ liệu SRAM
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho tệp thanh ghi, bộ nhớ I/O và
bộ nhớ dữ liệu SRAM nội. Trong đó 69 ô nhớ đầu tiên định địa chỉ cho tệp thanh
ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho ô nhớ SRAM nội.

Hinh 2.4.2 Bản đồ bộ nhớ SRAM
1.6.3 EEPROM Data Memory – bộ nhớ dữ liệu EEPROM

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 16

ATmega16 chứa 512 byte bộ nhớ dữ liệu EEPROM. Nó được tổ chức thành
không gian dữ liệu riêng biệt, trong chúng các byte đơn có thể được đọc và ghi.
EEPROM có thể đọc ghi được ít nhất 100.000 lần.

1.6.4 EEPROM Read/Write Access – đọc/ghi vào EEPROMass
Các thanh ghi truy nhập EEPROM có thể được thực hiện trong không gian
I/O
1.6.5 Thanh ghi địa chỉ EEPROM – EEARH và EEARL

Bits 15..9 – Res: Các bit dự phòng. Các bit này được đặt dự phòng trong
Atmega16 và sẽ luôn là 0.
Bits 8..0 – EEAR8..0: Địa chỉ EEPROM.Giá trị khởi tạo của EEAR là không xác

định. Giá trị thích hợp phải được ghi trước khi EEPROM có thể được truy cập.
1.7. CÁC CỔNG VÀO RA ( I/O)
Tất cả các cổng AVR đều có chức năng Read-Modify-Write thực sự, khi sử
dụng chúng như cổng I/O số. Điều này có nghĩa là hướng của chân của một cổng
có thể được thay đổi không cần phải thay đổi hướng của bất kỳ chân nào với câu
lệnh SBI và CBI. Điều tương tự cũng được ứng dụng khi thay đổi giá trị điều
khiển (nếu cấu hình như là đầu ra) loại kích hoạt hoặc loại bỏ các điện trở pull_up
(Nếu được cấu hình như đầu vào). Mỗi một bộ đệm đầu ra có đặc tính điều khiển
đối xứng với cả khả năng sink và source cao. Chân điều khiển đủ khoẻ để điều
khiển hiển thị các LED trực tiếp. Tất cả các chân I/O đều có diode bảo vệ cả 2 đầu
VCC và đất như trên hình 1.7.1

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 17

Hình 1.7.1 Sơ đồ chân I/O
Các cổng là cổng I/O 2 chiều với sự lựa chọn các pull-ups bên trong.
Hình1.7.2 chỉ ra 1 mô tả các khối chức năng của 1 chân cổng I/O, ta gọi chung là
Pxn.

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn

Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 18

Hình 1.7.2 Sơ đồ các khối chức năng của 1 chân I/O
Đặt cấu hình cho mỗi chân cổng bao gồm 3 bit thanh ghi: DDxn, PORTxn, và
PINxn. Các bit DDxn trong thanh ghi DDRx lựa chọn hướng của chân. Nếu các
bit DDRx là 1 thì Pxn là chân ra, ngược lại là 0 thì là chân vào. Nếu các bit
PORTxn là 1 khi chân được cầu hình là chân vào thì các điệc trở pull-up được kích
hoạt. Để tắt các điện trở này các bit PORTxn phải đặt lại là 0 hoặc chân ra phải
được đặt là chân ra. Khi có reset các chân cổng trở về dạng 3 trạng thái ngay cả
khi không có xung nhịp.
Nếu các bit PORTxn là 1 khi chân được đặt là chân ra thì chân cổng được đặt ở
mức cao.
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 19

Nếu các bit PORTxn là 0 khi chân cổng được đặt là chân ra thì chân cổng được đặt
ở mức 0. Đặt cấu hình cho chân cổng theo bảng 2:


Bảng 2: Đặt cấu hình cho chân cổng.
1.8. BỘ ĐỊNH THỜI
1.8.1 Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc
điểm
sau:
Bộ đếm một kênh
Xóa bộ định thời khi trong mode so sánh (tự động nạp)
PWM
Tạo tần số
Bộ đếm sự kiện ngoài
Bộ chia tần 10 bit
Nguồn ngắt tràn bộ đếm và so sánh

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 20

Hình 1.8.1 Sơ đồ cấu trúc bộ đinh thời
1.8.2 Các thanh ghi
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm
trong thanh ghi TIFR. Các ngắt có thể che bởi các thanh ghi TIMSK.Bộ định thời
có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock ngoài trên chân
T0. KHối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ dùng nguồn
xung nào để tăng giá trị của nó. Ngõ ra của khối chọn xung clock được xem là

xung clock của bộ định thời (clkTO). Thanh ghi OCR0 luôn được so sánh với giá trị
của bộ định thời/bộ đếm. Kết quả so sánh có thể được sử dụng để tạo ra PWM
hoặc biến đổi tần số ngõ ra tại chân OC0.
1.8.1 Đơn vị đếm
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập
trình được.Cấu trúc của nó như hình dưới đây:

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


Trang 21

MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Hình 1.8.2 Đơn vị đếm
Count:tăng hay giảm TCTNT0 1
Direction: lựa chọn giữa đếm lên và đếm xuống
Clear: xóa thanh ghi TCNT0ClkT0 : xung clock của bộ định thời
Top: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
Bottom: báo hiệu bộ định thơi đã giảm đến giá trị nhỏ nhất(0).
1.8.2 Đơn vị so sánh ngõ ra
Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so
sánh ngõ ra (OCR0). Khi giá trị TCNT0 bằng với ORC0, bộ so sánh sẽ tạo một
báo hiệu. Báo hiệu này sẽ đặt một cờ so sánh ngõ ra (OCF0) lên 1 vào chu kì xung
clock tiếp theo. Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so
sánh và sẽ tự động được xóa khi ngắt được thực thi. Cờ OCRF0 cũng có thể được
xóa bằng phần mềm. Cấu trúc của nó như hình dưới đây:


Hình 1.8.3 Đơn vị so sánh ngõ ra
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 22

1.8.3 Thanh ghi điều khiển timer/counter TCCR0

hình 1.8.4 Thanh ghi điều khiển timer/counter
Bit 7-FOC0 : So sánh ngõ ra bắt buộc
Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc không có PWM. Khi
đặt bit này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng.
Bit 3;6-WGM01:0: Chế độ tạo dạng sóng
Các bit này điều khiển đếm thứ tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ
đếm (TOP) và kiểu tạo dạng sóng sẽ được sử dụng
Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra
Các bit này điều khiển hoạt động của chân OC0. Nếu một hoặc cả 2 bit COM01:0
được đặt lên 1, ngõ ra OC0 sẽ hoạt động
Bit 2:0 - CS02:0: Chọn xung đồng hồ
Ba bit này dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm

Bảng 3 chọn xung đồng hồ
1.8.6 Thanh ghi timer/counter TCNT0


Hình 1.8.5 Thanh ghi TCNT0
Thanh ghi timer/counter cho phép truy cập trực tiếp cả đọc và ghi vào bộ đếm 8
bit.

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 23

1.8.7 thanh ghi so sánh ngõ ra-OCR0

Hình 1.8.6 thanh ghi so sánh ngõ ra
Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của bộ
đếm.
1.8.8 Thanh ghi mặt nạ ngắt –TIMSK

Hình 1.8.7 thanh ghi TIMSK
Bit 1- OCIE0: Cho phép ngắt báo hiệu so sánh
Bit 0- TOIE0: Cho phép ngắt tràn bộ đếm
1.8.9 Thanh ghi cờ ngắt bộ định thời –TIFR

Hình 1.8.8 Thanh ghi TIFR
Bit 1-OCF0: Cờ so sánh ngõ ra 0
Bit 0- TOV0: Cờ tràn bộ đếm
Bit TOV0 được đặt lên 1 khi bộ đếm bị tràn và được xóa bởi phần cứng khi vecter

ngắt tương ứng được thực hiện.
1.9. SERIAL PERIPHERAL INTERFACE (SPI) –GIAO DIỆN KẾT NỐI
NGOẠI VI NỐI TIẾP
SPI Cho phép truyền dữ liệu đồng bộ tốc độ cao giữa Atmega16 và các thiết bị
ngoại vi hoặc giữa các thiết bị AVR.
Bao gồm các đặc trưng sau:
Song công, dữ liệu đồng bộ 3 dây
Hoạt động chủ hoặc tớ
Truyền LSB trước hoặc MSB trước
7 tốc độ bit có thể lập trình được
Cờ ngắt khi truyền xong
Bảo vệ xung đột ghi
Đánh thức từ chế độ nhàn dỗi
Chế độ SPI chủ tốc độ đôi
GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 24

Hình 1.9 Sơ đồ khối SPI
1.10. USART
Bộ truyền và nhận tín hiệu nối tiếp đồng bộ và không đồng bộ vạn năng là
thiết bị kết nối nối tiếp có độ linh động cao. Các đặc trưng chính sau:
Hoạt động song công
Hoạt động đồng bộ hoặc không đồng bộ

Hoạt động đồng bộ theo xung nhịp chế độ chủ hoặc tớ
Bộ phát tốc độ truyền có độ phân giải cao
Hỗ trợ khung truyền với 5, 6, 7, 8, hoặc 9 Bit dữ liệu và 1 hoặc 2 Stop Bits
Phát và kiểm tra chẵn lẻ được hỗ trợ bởi phần cứng
Phát hiện OverRun dữ liệu
Phát hiện lỗi khung truyền
Lọc nhiễu bao gồm phát hiện bit start sai và bộ lọc thông thấp số

GVHD: Trương Hoàng Hoa Thám

SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16

Trang 25

3 ngắt riêng biệt khi TX hoàn thành, thanh ghi dữ liệu TX rỗng, và RX hoàn
thành
Chế độ Multi-processor kết nối
Chế độ kết nối không đồng bộ tốc độ đôi
Một sơ đồ đơn giản của bộ truyền USART được đưa ra như hình 1.10

Hình 1.10 Sơ đồ khối của bộ truyền USART
USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận. Các
thanh ghi điều khiển được sử dụng chung giữa các phần này
1.10.1 Tạo xung clock
GVHD: Trương Hoàng Hoa Thám


SVTH: Đặng Hoàng Tuấn
Trần Thịnh Báo


×