Tải bản đầy đủ (.docx) (24 trang)

Đặc điểm, cấu trúc phần cứng của họ vi điều khiển AVR

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 (728.44 KB, 24 trang )

-1-1-

Đặc điểm, cấu trúc phần cứng của họ vi điều khiển AVR
4.1. Đặc điểm của họ vi điều khiển AVR
AVR là tên của một loạt các bộ vi điều khiển do công ty Atmel sản xuất, có
kiến trúc RISC (Reduced Instruction Set Computer) là một kiến trúc phổ biến trong
của các bộ xử lý hiện đại với những đặc tính sau:
1. 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 ghi đa năng.
2. Kiến trúc bộ nhớ kiểu đường ống cho phép làm tăng tốc độ xử lý lệnh.
3. Có chứa bộ phận ngoại ngay trên chip bao gồm các cổng I/O số, các bộ biến đổi
ADC, bộ nhớ EEFROM, bộ định thời UART, bộ định thời RTC, bộ điều chế độ
rộng xung PWM,.v.v.. Đặc điểm này được xem là nổi bật so với nhiều vi điều
khiển khác vì trong khi các bộ vi xử lý khác phải tự tạo ra bộ truyền nhận
UART hoặc giao diện SPI bằng phần mềm thì trên vi điều khiển AVR đã được
tích hợp sẵn:
 Có 48 đường dẫn I/O lập trình được.
 bộ truyền nhận UART lập trình được.
 Một giao diện SPI đồng bộ.
 bộ timer/Counter 8 bit
 Một bộ timer/Counter 16 bit với chức năng so sánh và bắt mẫu.
 Gồm bốn lối ra điều biến độ rộng xung PWM.
 Một đồng hồ thời gian thực (RTC-Timer)
 Một bộ biến đổi ADC 10 bit có đến 8 kênh lối vào.
 Một bộ phát hiện trạng thái sụt điện áp nguồn nuôi.
 Một bộ so sánh Analog
 Một bộ định thời Watchdog
4. Hầu hết các lệnh chỉ trừ lệnh nhảy và nạp/lưu trữ đều được thực hiện trong một chu
kì xung nhịp.



-2-25. Hoạt động với tốc độ đồng hồ đến 20 MHz. So với các họ vi điều khiển khác thì vi
điều khiển họ ATMEL có tần số xung nhịp cho phép tương đối cao, cụ thể là từ 0
đến 20MHz tùy theo từng loại cụ thể. Xung nhịp do bộ dao động tạo ra cũng chính
là xung nhịp của hệ thống, không hề phải qua bộ chia tần như trong trường hợp các
vi điều khiển ra đời trước đó, nên kéo theo tốc độ xử lý lệnh cao.
6. Khả năng thực hiện lệnh trong một chu kì xung nhịp, AVR có khả năng đạt đến tốc
độ xử lý 20 MPIS (triệu lệnh trong một giây)

Hình 4.1 So sánh thời gian thực thi lệnh giữa các bộ vi xử lý
Các vi điều khiển SX cũng có tần số xung nhịp cao hơn ở các vi điều khiển
AVR nhưng lại có dòng tiêu thụ tương đối lớn, ngoài ra lại không có các bộ phận
ngoại vi trên chíp rất tiện dụng cho người dùng như vi điều khiển AVR. Chính các
bộ phận ngoại vi tích hợp đã góp phần làm tăng tốc độ xử lý lệnh tính chung cho cả
hệ thống.
7. Bộ nhớ chương trình và dữ liệu được tích hợp ngay trên chíp AVR có tới 3 công
nghệ bộ nhớ khác nhau:
Bộ nhớ EPROM xóa được kiểu Flash (luôn luôn lập trình mới được) dùng cho
mã chương trình mà người dùng có thể lập trình được.


-3-3Bộ nhớ EPROM hay PROM xóa được bằng điện, nhưng nội dung bộ nhớ vẫn
giữ nguyên sau khi tắt điện áp nguồn. Chương trình người dùng có thể được lập
trình trong thời gian thựckhi hệ thống đang hoạt động
Bộ nhớ RAM tĩnh (SRAM) dùng cho các biến, nội dung của bộ nhớ sẽ mất đi
khi tắt điện áp nguồn. Ngoài ra, vi điều khiển AVR có tới 32 thanh ghi làm việc đa
năng, tất cả đều được nối trực tiếp với khối ALU (đơn vị logic số học) và được trao
đổi trực tiếp trên vùng địa chỉ bộ nhớ, cụ thể là 32 ô đầu tiên của bộ nhớ (0x00 đến
0xFF) tương ứng với thanh ghi làm việc đa năng R0-R31.
8. Khả năng lập trình được trong hệ thống do cách thiết kế và công nghệ bộ nhớ được
sử dụng mà các vi điều khiển có thể được lập trình ngay khi đang còn cấp nguồn

trên bản mạch. Không cần phải nhấc vi điều khiển ra ngoài bản mạch như nhiều họ
vi điều khiển khác. Các cổng giao tiếp RS-232 và SPI cho phép thao tác dễ dàng
thực hiện trên hệ thống.
9. Có tốc độ xử lý lớn hơn 12 lần so với các vi điều khiển CISC thông thường.
10. Hỗ trợ cho việc lập trình bằng ngôn ngữ bậc cao, chẳng hạn như ngôn ngữ C.
11. Tất cả các vi điều khiển đang lưu hành trên thị trường đều được chế tạo bằng công
nghệ CMOS 0.6 μm.
12. Điện áp làm việc cho phép từ 2.7V đến 6V.
13. Một kiến trúc đơn giản và hợp lý sẽ giúp người dùng tìm hiểu dễ dàng trong thời
gian ngắn.
14. Tập lệnh AVR có tới 113 lệnh cho phép lập trình một cách dễ dàng và đơn giản
bằng hợp ngữ, nhưng cấu trúc của bộ xử lý Atmel còn cho phép lập trình bằng
ngôn ngữ C.
4.2. Cấu trúc phần cứng của họ vi điều khiển AVR
4.2.1. Tổng quan về kiến trúc
Các thanh ghi đa năng truy cập nhanh gồm 32 thanh ghi 8 bit được truy cập
trong một chu kì xung nhịp. Điều này có nghĩa là trong 1 chu kì xung nhịp ALU


-4-4thực hiện được một phép toán: hai toán hạng được xuất từ các thanh ghi đa năng,
phép toán được thực hiện và kết quả được lưu trở lại vào tập các thanh ghi. 6 trong
số 32 thanh ghi này có thể dùng làm con trỏ địa chỉ gián tiếp 16 bit để định địa chỉ
không gian dữ liệu và cho phép tính địa chỉ hiệu dụng. Một trong 3 con trỏ địa chỉ
cũng được dùng làm con trỏ địa chỉ cho chức năng tìm kiếm bảng hằng số. Các
thanh ghi có chức năng bổ xung này là các thanh ghi 16 bit X,Y,Z.
ALU: Hỗ trợ các chức năng số học và chức năng logic giữa các thanh ghi. Các
phép toán trong thanh ghi cũng được thực hiện trong ALU.

Hình 4.2 Kiến trúc của bộ xử lý AVR
Ngoài chế độ định địa chỉ gián tiếp thanh ghi, chế độ định địa chỉ bộ nhớ

thông thường cũng có thể được dùng trong tập các thanh ghi đa năng. Nguyên nhân
là các thanh ghi đa năng được gán 32 địa chỉ thấp nhất trong không gian dữ liệu từ


-5-5$00 đếm $1F nên chúng được truy cập những vị trí thông thường.
Không gian bộ nhớ vào ra chứa 64 bit địa chỉ cho các chức năng ngoại vi của
CPU như các thanh ghi điều khiển, bộ Timer/Counter, bộ ADC và chức năng I/O
khác. Bộ nhớ I/O có thể truy cập trực tiếp hoặc như các vị trí trong không gian dữ
liệu ngay sau các vị trí của tập các thanh ghi đa năng từ địa chỉ $20 đến $5F.
AVR sử dụng kiến trúc Harvard với bộ nhớ và bus riêng biệt cho chương trình
và dữ liệu. Bộ nhớ chương trình được thực thi với một đường ống hai tầng. Trong
khi một lệnh đang được thực thi thì lệnh tiếp theo được nhập vào bộ nhớ chương
trình. Giải pháp này cho phép vác lệnh được thực thi trong mọi chu kì xung nhịp.
Bộ nhớ chương trình là bộ nhớ Flash lập trình được.
Trong quá trình gọi ngắt và chương trình con, địa chỉ trở về của bộ đếm lệnh
hay bộ đếm chương trình PC được đưa vào ngăn xếp. Ngăn xếp được cấp phát
trong bộ lưu dữ liệu SRAM nên kích thước chỉ bị giới hạn bởi dung lượng và
không gian đã sử dụng của bộ nhớ SRAM. Tất cả chương trình của người dùng
phải khởi tạo con trỏ ngăn xếp SP (Stack Pointer) khi bắt đầu chương trình (trước
khi chương trình con và ngắt được thực thi). Con trỏ ngăn xếp 16 bit SP được truy
cập để đọc/ghi trong không gian vào/ra. Bộ nhớ SRAM có thể được truy cập dễ
dàng thông qua 5 chế độ định địa chỉ được cung cấp trong kiến trúc AVR.
Khối ngắt mềm dẻo có các thanh ghi điều khiển trong không gian vào ra và
một bit cho phép ngắt toàn cục trong thanh ghi trạng thái. Mỗi ngắt đều có một
vector ngắt riêng. Các ngắt có thứ tự ưu tiên tương ứng với thứ tự vector ngắt của
chúng, địa chỉ của vector ngắt càng thấp thì thứ tự ưu tiên càng cao.
4.2.2. Các thanh ghi đa dụng
Tất cả các bộ vi điều khiển AVR đều có 32 thanh ghi đa năng. Một số trong các
thanh ghi này còn có các chức năng bổ xung. Tất cả thanh ghi được đặt tên từ R0
đến R31, tệp thanh ghi được tách thành hai phần, mỗi phần có 16 thanh ghi đánh số

từ R0 đến R15 và R16 đến R31. Tất cả các lệnh thao tác trên các thanh ghi đều có


-6-6thể truy cập trực tiếp và truy cập trong chu trình đơn đến tất cả các thanh ghi,
nhưng có một ngoại lệ là các lệnh SBCI, SUBI, CPI, ANDI và ORI cũng như WI,
các lệnh này chỉ tác động đến các thanh ghi từ R16 đến R31.
Các thanh ghi R0 và R26 đến R31 có các chức năng bổ sung. Thanh ghi R0
được sử dụng trong các lệnh nạp bộ nhớ chương trình LPM (Load Program
Memory), trong khi các thanh ghi R26 đến R31 được sử dụng làm các thanh ghi
con trỏ như trong hình minh họa bên dưới. Các thanh ghi con trỏ này được sử dụng
trong nhiều lệnh gián tiếp trong thanh ghi.

Hình 4.3 Tập thanh ghi của vi điều khiển AVR
4.2.3. Cổng ra vào
Tất cả các vi điều khiển AVR đều có một lượng lớn các cổng vào ra nằm trong
khoảng 3 bit trên vi điều khiển loại 90S2313 đến 48 bit Mega103. Tất cả các cổng
vào/ra của vi điều khiển AVR đều chịu được dòng điện đến 20mA nên rất thích hợp
với việc điều khiển trực tiếp các led vì không cần đến các mạch đệm bổ sung.
Tất cả các cổng vào/ra đều có 3 địa chỉ vào/ra đi kèm với chúng, ba địa chỉ vào
ra đều cần được đặt cấu hình cho các bít riêng biệt thành lối vào hoặc thành lối ra,


-7-7địa chỉ khác được cần đến để xuất dữ liệu và địa chỉ thứ 3 dùng để đọc dữ liệu về
(lối vào).
Các cổng được đánh số DDRx, PORTx, PINx cho một cổng x cho trước.
Để đọc dữ liệu của phần lối vào của một cổng, ta sử dụng thanh ghi PINx.
Thanh ghi PINx được nối tiếp với chân của cổng. Chân của cổng có thể cấp tín
hiệu để duy trì trạng thái theo mức điện áp cao (pull up) bên trong bằng cách ghi
giá trị “1” vào bit cổng ở vị trí PORTx. Các điện trở pull up có giá trị 30kΩ đến
150kΩ. Giá trị tương úng của dòng điện là 160 μA đến 33μA.


Hình 4.4 Các port đọc và ghi
Ngược lại nếu một giá trị “0” được ghi vào bit cổng ở địa chỉ PORTx thì trạng
thái pull up và chân lối vào chuyển theo trạng thái trở kháng cao.
4.2.4. Bộ nhớ SRAM
Bộ nhớ SRAM có trong hầu hết các bộ vi xử lý của vi điều khiển AVR. Dung
lượng của bộ nhớ SRAM thay đổi từ 128 byte tới 4kbyte. Bộ nhớ SRAM được truy
nhập bằng cách sử dụng nhiều lệnh truy nhập dữ liệu hoặc trực tiếp hoặc gián tiếp.


-8-8Bộ nhớ SRAM cũng được sử dụng cho ngăn xếp, thời gian truy nhập vào bộ nhớ
SRAM bằng 2 chu kì đồng hồ.
 Giao tiếp với bộ nhớ SRAM ngoài.
Trên các bộ vi điều khiển AVR cỡ lớn đều có khả năng kết nối với bộ nhớ
SRAM ở bên ngoài. Để cho phép truy nhập bộ nhớ SRAM ngoài trên PortA và
PortC của các bộ điều khiển cũng như tín hiệu ALE dùng cho việc phân kênh địa
chỉ/dữ liệu, bit SRE (bit 7) trong thanh ghi MCUCR được đặt lên “1”. Thời gian
truy nhập mặc định đối với quá trình nhập lên SRAM ngoài là bằng 3 chu kì đồng
hồ. Thời gian này có thể làm tăng lên 4 chu kì đồng hồ bằng cách thiết lập bit SRW
(bit6) trong thanh ghi MCUCR. Hình sau minh họa chu trình truy nhập mở rộng
với một trạng thái chờ bổ sung thêm.

Hình 4.5 Kết nối SRAM ngoài với bộ vi điều khiển
4.2.5. Cấu trúc ngắt
Ngắt là một cơ cấu điều khiển dòng lệnh, cơ cấu này được thiết kế trên hầu hết
các bộ vi điều khiển. Trong quá trình giao tiếp của hệ thống bộ vi xử lý với thế giới
bên ngoài, nhiều sự việc xảy ra theo cách không đồng bộ, điều này gây khó khăn
cho bộ xử lý khi mà phải kiểm tra tất cả các thiết bị để giám sát sự di chuyển của
dữ liệu. Ngược lại, sẽ trở nên tốt hơn nếu các thiết bị này có thể loan báo sự đến



-9-9nơi của dữ liệu. Đây là cả những gì mà cơ cấu ngắt phải thực hiện. Thiết bị ngoại vi
sẽ ngắt việc thực thi chương trình chính và bộ xử lý tạm ngừng việc thực thi
chương trình bình thường để kiểm tra nguồn ngắt và thực hiện những thao tác đáp
ứng cần thiết. Sau khi đã hoàn thành những thao tác cần thiết, việc thực thi chương
trình đã bị ngắt sẽ tiếp tục. Chương trình ngắt chỉ đơn giản giống hệt như một
chương trình con chỉ ngoại trừ một đặc điểm là việc thực thi của đoạn chương trình
ngắt này không bị bộ xử lý chặn trước là sẽ xuất hiện vào thời điểm cụ thể nào.
Bộ vi điều khiện AVR có rất nhiều cấu trúc ngắt. Khả năng ngắt đã được chu
cấp cho hầu hết các thiết bị ngoại vi sao cho chương trình chính không cần phải
thường xuyên kiểm tra các thiết bị này.
1. Thiết bị ngoại vi ngắt bộ xử lý
2. Việc thực thi lệnh hiện tại được hoàn thành.
3. Địa chỉ của lệnh tiếp theo được lưu trữ trên ngăn xếp (thuộc phần cứng hoặc phần
mềm)
4. Địa chỉ ISR (đoạn chương trình ngắt) được nạp vào bộ đếm chương trình.
5. Bộ xử lý ISR.
6. Việc hoàn thành các thao tác thực thi ISR được chỉ báo bằng lệnh RETI.
7. Bộ xử lý nạp bộ đếm chương trình với giá trị được lưu trữ trên ngăn xếp và việc
thực thi chương trình bình thường lại được tiếp tục.
4.2.6. Bộ so sánh analog
Bộ so sánh analog so sánh các giá trị điện áp lối vào, cụ thể là ở lối vào AINO
(AC+) và AIN1 (AC-) với nhau. Nếu như điện áp ở lối vào AIN0 lớn hơn AIN1 thì
lối ra của bộ so sánh analog ACO (Analog Computer Output) được đặt lên mức 1.
Lối ra này có thể cho bộ Timer/Counter 1 để trigger xóa ngắt bộ so sánh analog.


- 10 - 10 -

Hình 4.6 Sơ đồ khối của bộ so sánh Analog

Bộ so sánh analog được điều khiển thông qua thanh ghi điều khiển và trạng
thái so sánh analog, thường viết tắt là ACSR, tại địa chỉ $08 trong vùng địa chỉ I/O
hoặc địa chỉ nhớ $28 trong vùng địa chỉ nhớ dữ liệu.
Bảng 4.1 Sắp xếp các chân của bộ so sánh Analog

4.2.7. Bộ biến đổi A/D bên trong
Các vi điều khiển AVR loại AT90S4434/8535 và Atmega 103/603 có một bộ
biến đổi ADC với độ phân giải là 10 bit.
Ngoài bộ ADC còn có bộ dồn kênh lối vào, mỗi lối có thể được dẫn riêng lẻ tới bộ
hiển thị ADC.


- 11 - 11 -

Hình 4.7 Sơ đồ khối bộ biến đổi ADC
Bảng 4.2 Các thanh ghi điều khiển bộ biến đổi ADC
Thanh ghi điều khiển bộ dồn kênh ADC
$07 ($27)
ADMUX


- 12 - 12 Thanh ghi trạng thái điều khiển ADC
ADCSR

$06 ($26)

Thanh ghi dữ liệu ADC (HIGH)
ADCH

$05 ($25)


Thanh ghi dữ liệu ADC (LOW)
ADCL

$04 ($24)

Bộ biến đổi ADC được biến đổi qua 4 thanh ghi ADMUX, ADCSR,ADCH và
ADCR trong vùng địa chỉ vào ra. Bằng thanh ghi 3DMUX, một trong 8 kênh được
lựa chọn để biến đổi tín hiệu số. Bộ biến đổi có thể hoạt động trong hai chế độ:
-

Quá trình biến đổi được người dùng khởi động

-

Quá trình biến đổi diễn ra liên tục
Bảng 4.3 Sự sắp xếp các chân lối vào của bộ biếm đổi ADC
Tín hiệu
AT90S8535/4434
ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7

PA0
PA1

PA2
PA3
PA4
PA5
PA6
PA7

Việc kết thúc quá trình biến đổi nghĩa là thời điểm mà một tín hiệu analog đã
được số hóa và sẵn sàng chờ xử lý tiếp tục, sẽ được báo hiệu qua một cờ trong
thanh ghi trạng thái ADC (ADCSR). Trong thanh ghi ADCSR này người dùng có
thể lựa chọn một trong hai chế độ. Kết quả của quá trình biến đổi A/D được đặt ở
các thanh ghi ADCH (bit 8 và 9) và ADCL (bit 0 đến 7).


- 13 - 13 4.2.8. Bộ định thời watchdog bên trong
Bộ định thời Watchdog là bộ định thời điều khiển được và được sử dụng làm
thiết bị đánh thức trong trường hợp phần mềm bị rơi vào một hoặc một số vòng lặp
vô tận hoặc trong trường hợp việc thực thi chương trình bị mắc lỗi. Bộ định thời
watchdog có một lối ra, có khả năng đặt lại bộ điều khiển. Hình bên dưới.
Mạch định thời watchdog timer được giữ nhịp từ một bộ dao động RC riêng
biệt trên chip. Bằng cách điều khiển mạch chia tần số timer, khoảng thời gian reset
mạch Watchdog có thể điều chỉnh như hình minh họa trong bảng sau các khoảng
reset,mạch Watchdog cũng phụ thuộc vào điện áp nguồn nuôi.

Hình 4.8 Sơ đồ khối của bộ định thời Watchdog 
Chế độ hoạt động tiết kiệm năng lượng:
Bộ vi xử lý AVR có nhiều khả năng làm giảm năng lượng tiêu thụ để chuyển
sang trạng thái ngủ (sleep mode), bit SE trong MCUCR (mở thanh ghi điều khiển
bộ xử lý) phải được đặt lên “1”, một lệnh sleep cần phải được thực thi. Nếu một
ngắt đã được cho phép xuất hiện trong khi MCU đang ở trạng thái ngủ, thì MCU sẽ

thức dậy thực thi đoạn chương trình (routine) ngắt, và lại tiếp tục thực thi từ lệnh
kế tiếp theo lệnh sleep. Nội dung của tập thanh ghi, SRAM, và bộ nhớ I/O vẫn
được giữ nguyên. Nếu một tín hiệu reset xuất hiện trong trạng thái ngủ thì MCU sẽ
thức dậy và thực thi từ vector reset.


- 14 - 14 Khi SM bị xóa về không thì lệnh sleep bắt buộc MCU chuyển sang chế độ
nghỉ, làm ngưng hoạt động của CPU nhưng cho phép bộ Timer/Counter Watchdog
và ngắt hệ thống tiếp tục hoạt động. Đặc tính này cho phép MCU đánh thức và ngắt
được trigger từ bên ngoài cũng như ngắt bên trong giống như ngắt tràn bộ định thời
và đặt lại Watchdog. Nếu như sự đánh thức từ ngắt bộ so sánh analog không được
yêu cầu, thì bộ so sánh analog có thể bị ngắt nguồn nuôi bằng cách đặt bit ACD
vào thanh ghi điều khiển và trạng thái analog ACSR. Biện pháp này làm giảm dòng
tiêu thụ trong chế độ nghỉ.
Khi MCU bị đánh thức khỏi chế độ nghỉ, đơn vị CPU khởi động chương trình
chấp hành ngay lập tức.
Khi bit SM được đặt lên “1”, lệnh sleep bắt buộc MCU chuyển sang chế độ tiết
kiệm năng lượng hay giảm dòng tiêu thụ. Trong chế độ này bộ dao động ngoài bị
ngưng hoạt động, trong khi các ngắt ngoài và Watchdog (nếu đang ở trạng thái cho
phép) hoạt động. Chỉ thao tác đặt lại (reset) bên ngoài.
Thao tác đặt lại Watchdog (nếu đang ở trạng thái cho phép hoạt động) hoặc
ngắt theo mức ngoài lên INT0 hoặc INT1 mới có thể đánh thức MCU. Chú ý rằng
một khi ngắt trigger theo nức được sử dụng cho việc đánh thức khỏi trạng thái tiết
kiệm năng lượng thì mức thấp hơn cần năng lượng giữ trong khoảng thời gian dài
hơn thời gian làm trễ dài nhất (Time out) đối với thao tác reset TOUT. Nếu không
thì thiết bị sẽ không thức dậy.
4.3. Giới thiệu họ vi điều khiển Atmega 16
4.3.1. Đặc điểm
Atmega16 là bộ vi điều khiển RISC 8 bit tiêu thụ ít năng lượng dựa trên kiến
trúc RISC AVR. Bằng việc thực hiện các lệnh mạnh trong một chu kì xung nhịp,

Atmega16 đạt đên tốc độ xử lý lệnh lên đến 1 triệu lệnh/giây ở tần số 1MHz. Vi
điều khiển này còn cho phép người thiết kế hệ thống tối ưu hóa mức độ tiêu thụ
năng lượng mà vẫn đảm bảo tốc độ xử lý.


- 15 - 15 Phần cốt lỏi của AVR kết hợp 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 với ALU cho truy cập hai
thanh ghi độc lập bằng một lệnh đơn trong một chu kì xung nhịp. Kiến trúc đạt tốc
độ xủ lý nhanh gấp 10 lần so với vi điều khiển CISC (Complex Instruction Set
Computer ) thông thường.
 Atmega16 với kiến trúc RISC có chỉ tiêu chất lượng cao và tiêu thụ năng lượng ít:
 131 lệnh hầu hết được thực hiện trong một chu kỳ xung nhịp.
 32x8 thanh ghi làm việc đa năng.
 Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây ở tần số 16MHz.
 Bộ nhớ dữ liệu và bộ nhớ chương trình không tự mất dữ liệu:
 16K byte bộ nhớ Flash lập trình được ngay trên hệ thống, có thể ghi xoá 10000 lần.
 512 byte bộ nhớ EEFROM lập trình được ngay trên hệ thống, có thể ghi xóa
100000 lần.
 1K byte bộ nhớ SRAM.
 Khóa bảo mật phần mềm lập trình được.
 Giao diện nối tiếp SPI để lập trình ngay trên hệ thống.
 Các tính năng ngoại vi:
 Hai bộ đếm/ bộ định thời 8 bit với chế độ so sánh và chia tần số tách biệt.
 Một bộ định thời 16 bit với chế độ so sánh, chia tần số tách biệt và chế độ bắt mẫu
(Capture Mode).
 Bộ đếm thời gian thực (RTC) với bộ dao động tách biệt.
 Bốn kênh PWM điều chế độ rộng xung.
 Bộ biến đổi ADC bên trong 8 kênh 10 bit.
 Bộ USART nối tiếp lập trình được.
 Bộ định thời Watchdog lập trình được với bộ dao động trên chip.

 Bộ so sánh Analog ngay trên chip.
 Các tính năng vi điều khiển đặc biệt:
 Có mạch power - on reset và có thể reset bằng phần mềm.


- 16 - 16  Các nguồn ngắt ngoài và trong.
 Có 6 chế độ ngủ: nghỉ (Idle). Tiết kiệm năng lượng (power save) và power down,
ADC Noise Reduction, Standby and Extended Standby.
 Tần số làm việc có thể thay đổi được bằng phần mềm.
 Vào ra và các cách đóng vỏ
 32 đường vào ra lập trình được.
 44 chân dán kiểu vỏ vuông (TQFP)  Điện thế làm việc:
 VCC = 2,7V đến 5,5V đối với Atmega16L.
 VCC = 4,5V đến 5,5V đối với Atmega16.
 Vùng tốc độ làm việc:
 0 đến 8 MHz đối với Atmega16L.
 0 đến 16 MHz đối với Atmega16.
4.3.2. Sơ đồ chân Atmega16

Hình 4.9 Sơ đồ chân Atmega16


- 17 - 17 -

4.3.3. Sơ đồ khối của Atmega16


- 18 - 18 Hình 4.10 Sơ đồ khối vi điều khiển AVR Atmega16
4.3.4. Mô tả chức năng các chân Atmega16
 Vcc : điện áp nguồn nuôi

 GND : nối đất
 PORT A (PA0 … PA7) : có nhiều chức năng:
-

Là ngõ vào tín hiệu để chuyển đổi A/D

-

Là cổng vào ra 8 bit nếu như biến đổi A/D không sử dụng, các chân của
Port A có các điện trở nối lên nguồn dương. Port A có thể cung cấp nguồn
điện 20mA và điều khiển trực tiếp led hiển thị.

-

Khi các chân Port A là các lối vào được đặt xuống mức thấp ở bên ngoài chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi
không có tín hiệu giữ nhịp.

 PORT B (PB0 … PB7)
-

Là cổng vào ra 8 bit, có điện trở kéo lên ở bên trong, có thể cung cấp dòng điện
20mA. Khi port B là port nhập vào (in put) và các ngõ ra ở mức thấp (low) thì port
B đóng vai trò là nguồn dòng nếu các điện trở kéo lên được kích hoạt. Port B sẽ ở
trạng thái tổng trở cao khi vi điều khiển bị reset hoặc khi không có dao động. 
PORT C (PC0 … PC7)

-


Là cổng vào ra theo hai hướng 8 bit. Các chân của Port C có các điện trở nối lên
nguồn dương. Ngõ ra port C có thể cho dòng 20mA đi qua và điều khiển trực tiếp
led hiển thị.

-

Khi các chân port C là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu các điện trở nối lên nguồn dương được kích hoạt. các chân này
sẽ ở trạng thái tổng trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi
không có tín hiệu giữ nhịp.

 PORT D (PD0 … PD7)


- 19 - 19 -

Là cổng vào ra theo hai hướng 8 bit. Các chân của Port D có các điện trở nối lên
nguồn dương. Ngõ ra port D có thể cho dòng 20mA đi qua và điều khiển trực tiếp
led hiển thị. Khi các chân port D là các lối vào được đặt xuống mức thấp từ bên
ngoài, chúng sẽ là nguồn dòng nếu các điện
trở nối lên nguồn dương được kích hoạt. các chân này sẽ ở trạng thái tổng
trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi không có tín
hiệu giữ nhịp.

-

Cung cấp các tính năng tương ứng với các chức năng đặc biệt.

 Reset: là lối vào đặt lại. Bộ vi điều khiển sẽ được đặt lại khi chân này ở mức thấp
trong hơn 50ns ngay cả khi có tín hiệu giữ nhịp. Các xung ngắn hơn không tạo ra

tín hiệu đặt lại.
 XTAL1: Lối vào mạch khuếch đại đảo và lối vào mạch tạo xung nhịp bên trong.
 XTAL2: Lối vào bộ khuếch đại ảo.
 ICP: Chân vào có chức năng bắt tín hiệu cho Timer/Cuonter 1
 ALE: Là chân tín hiệu cho phép chốt địa chỉ (adress latch enable) được dùng khi
truy nhập bộ nhớ ngoài. Xung ALE được dùng để chốt bit địa chỉ trong chu kì truy
cập bộ nhó thứ nhất. Sau đó các chân AD0 … AD7 được dùng làm các đường dữ
liệu trong chu kì truy nhập bộ nhớ thứ hai (AT90S8515).
 Bộ tạo dao động thạch anh: XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một
bộ khuếch đại đảo, bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip
như hình 4.3. Một bộ cộng hưởng tinh thể thạch anh hoặc một bộ cộng hưởng gốm
có thể sử dụng. Để điều khiển vi điều khiển bằng nguồn xung nhịp bên ngoài thì
chân XTAL2 để không và nối XTAL một với tín hiệu dao động bên ngoài.
4.4. Giới thiệu vi điều khiển Atmega8
4.4.1. Đặc điểm
Vi điều khiển Atmega8 của hãng ATMEL là một loại vi điều khiển AVR mới
với kiến trúc rất phức tạp.


- 20 - 20 Atmega 8 là bộ vi điều khiển RISC 8 bit tiêu thụ năng lượng nhưng đạt hiệu
suất rất cao, dựa trên kiến trúc RISC AVR. Bằng việc thực hiện các lệnh trong một
chu kỳ xung nhịp, Atmega8 đạt được tốc độ xử lý dữ liệu lên đến 1 triệu lệnh/giây
ở tần số 1MHz. Atmega8 còn cho phép người thiết kế hệ thống tối ưu hoá mức độ
tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý.
Atmega 8 đã tích hợp đầy đủ các tính năng như bộ chuyển đổi ADC 10bit, bộ
so sánh, bộ truyền nhận nối tiếp, bộ định thời, bộ đếm thời gian thực, bộ điều chế
độ rộng xung…Do đó ta phải nghiên cứu và khai thác triệt để các tính năng này để
ứng dụng hiệu quả vào những mạch trong thực tế.
Atmega8 sử dụng kiến trúc RISC (Reduced Instruction Set Computer) AVR.
 Atmega8 với kiến trúc RISC có chỉ tiêu chất lượng cao và tiêu thụ năng lượng ít:

-

130 lệnh hầu hết được thực hiện trong một chu kỳ xung nhịp.

-

32 thanh ghi làm việc đa năng.

-

Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây ở tần số 16MHz.

 Bộ nhớ dữ liệu và bộ nhớ chương trình không tự mất dữ liệu:
-

8K byte bộ nhớ Flash lập trình được ngay trên hệ thống, có thể nạp xoá 10000 lần.

-

512 byte bộ nhớ EEFROM lập trình được ngay trên hệ thống, có thể ghi xóa
100000 lần.

-

1K byte bộ nhớ SRAM.

-

Có thể giao tiếp với 8K byte bộ nhớ ngoài.


-

Khóa bảo mật phần mềm lập trình được.

-

Giao diện nối tiếp SPI để lập trình ngay trên hệ thống.

 Các tính năng ngoại vi:
-

Hai bộ đếm/ bộ định thời 8 bit với chế độ so sánh và chia tần số tách biệt.

-

Một bộ định thời 16 bit với chế độ so sánh, chia tần số tách biệt và chế độ bắt mẫu
(Capture Mode).

-

Bộ đếm thời gian thực (RTC) với bộ dao động tách biệt.

-

Bộ điều chế độ rộng xung PWM 8 bit.


- 21 - 21 -

Bộ biến đổi ADC bên trong 8 kênh 10 bit.


-

2 bộ USART nối tiếp lập trình được.
Bộ định thời Watchdog lập trình được với bộ dao động trên chip.

-

Một bộ so sánh Analog.

 Các tính năng vi điều khiển đặc biệt:
-

Có mạch power - on reset và có thể reset bằng phần mềm.

-

Các nguồn ngắt ngoài và trong.

-

Có 5chế độ ngủ: nghỉ (Idle). Tiết kiệm năng lượng (power save) và power down,
ADC Noise Reduction, Standby.

-

Tần số làm việc có thể thay đổi được bằng phần mềm.

 Vào ra và các cách đóng vỏ
-


23 đường vào ra lập trình được.

-

32 chân dán kiểu vỏ vuông (TQFP)  Điện thế làm việc:

-

VCC = 2,7V đến 5,5V đối với Atmega8L.

-

VCC = 4,5V đến 5,5V đối với Atmega8.

 Vùng tốc độ làm việc:
-

0 đến 8 MHz đối với Atmega8L.

-

0 đến 16 MHz đối với Atmega8.


- 22 - 22 4.4.2. Sơ đồ chân Atmega8


- 23 - 23 Hình 4.11 Sơ đồ chân Atmega8
4.4.3. Sơ đồ khối của Atmega8



- 24 - 24 Hình 4.12 Sơ đồ khối vi điều khiển AVR Atmega8
4.4.4. Mô tả chức năng các chân Atmega8 
VCC: Điện áp nguồn nuôi.
 GND: Đất.
 Port B (PB0…PB7)
-

Port B là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA
có thể điều khiển trực tiếp led đơn.

-

Khi các chân Port B là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi
không có dao động.
 Port C (PC0…PC6)

-

Port C là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA
có thể điều khiển trực tiếp led đơn.

-

Khi các chân Port C là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi

không có dao động.

-

Port C cũng đóng vai trò như 8 đường địa chỉ cao từ A8 đến A15 khi kết nối bộ
nhớ SRAM bên ngoài.
 Port D (PD0…PD7)

-

Port D là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA
có thể điều khiển trực tiếp LED đơn.

-

Khi các chân Port D là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân


- 25 - 25 này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi
không có dao động.
 Reset: Ngõ vào được đặt lại. ATmega8 sẽ được đặt lại khi chân này ở mức thấp
trong hơn 50ns hoặc ngay cả khi không có tín hiệu xung clock. Các xung ngắn hơn
không tạo ra tín hiệu đặt lại.
 AVCC: Cung cấp nguồn cho Port C và bộ chuyển đổi ADC hoạt động. Ngay khi
không sử dụng bộ chuyển đổi ADC thì chân AVCC vẫn phải đươc kết nối tới
nguồn VCC.
 AREF: Đây là chân điều chỉnh điện áp tham chiếu cho chuyển đổi A/D.
 XTAL1: Ngõ vào bộ khuếch đại đảo và ngõ vào mạch tạo xung nhịp bên ngoài.
 XTAL2: Ngõ ra bộ khuếch đại đảo.

 Bộ tạo dao động thạch anh :
-

XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo, bộ
khuếch đại này được bố trí để làm bộ tạo dao động trên chip

-

Để điều khiển được bộ Vi Điều Khiển từ một nguồn xung nhịp bên ngoài, chân
XTAL2 để không, chân XTAL1 được nối với tín hiệu dao động bên ngoài.


×