7-CHUONG 4.pdf

23
- 43 - CHƯƠNG 4 THIT KMCH GIAO TIP 4.1. Đặc điểm ca hvi điều khin AVR AVR là tên ca mt lot các bvi điều khin do công ty Atmel sn xut, có kiến trúc RISC (Reduced Instruction Set Computer) là mt kiến trúc phbiến trong ca các bxlý hiện đại vi những đặc tính sau: 1. Kiến trúc RISC vi hu hết các lnh có chiu dài cđịnh, truy nhp bnhnp, lưu trữ và 32 thanh ghi đa năng. 2. Kiến trúc bnhkiểu đường ống cho phép làm tăng tốc độ xlý lnh. 3. Có cha bphn ngoi ngay trên chip bao gm các cng I/O s, các bbiến đổi ADC, bnhEEFROM, bđịnh thi UART, bđịnh thi RTC, bđiều chế độ rộng xung PWM,.v.v.. Đặc điểm này được xem là ni bt so vi nhiều vi điều khin khác vì trong khi các bvi xlý khác phi tto ra btruyn nhn UART hoc giao din SPI bng phn mềm thì trên vi điều khiển AVR đã được tích hp sn: Có 48 đường dn I/O lập trình được. btruyn nhn UART lập trình được. Mt giao diện SPI đồng b. btimer/Counter 8 bit Mt btimer/Counter 16 bit vi chức năng so sánh và bắt mu. Gm bn lối ra điều biến độ rng xung PWM. Một đồng hthi gian thc (RTC-Timer) Mt bbiến đổi ADC 10 bit có đến 8 kênh li vào. Mt bphát hin trng thái sụt điện áp ngun nuôi. Mt bso sánh Analog Mt bđịnh thi Watchdog 4. Hu hết các lnh chtrlnh nhy và nạp/lưu trữ đều được thc hin trong mt chu kì xung nhp.

Transcript of 7-CHUONG 4.pdf

Page 1: 7-CHUONG 4.pdf

- 43 -

CHƯƠNG 4 THIẾT KẾ MẠCH GIAO TIẾP

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.

Page 2: 7-CHUONG 4.pdf

- 44 -

5. 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.

Bộ 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

Page 3: 7-CHUONG 4.pdf

- 45 -

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

thự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ỉ

Page 4: 7-CHUONG 4.pdf

- 46 -

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ừ

$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.

Page 5: 7-CHUONG 4.pdf

- 47 -

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ó thể 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

Page 6: 7-CHUONG 4.pdf

- 48 -

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,

đị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.

Page 7: 7-CHUONG 4.pdf

- 49 -

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.

Bộ 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

Page 8: 7-CHUONG 4.pdf

- 50 -

(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.

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

nơ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ý

Hình 4.5 Kết nối SRAM ngoài với bộ vi điều khiển

Page 9: 7-CHUONG 4.pdf

- 51 -

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.

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

Page 10: 7-CHUONG 4.pdf

- 52 -

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.

Hình 4.7 Sơ đồ khối bộ biến đổi ADC

Page 11: 7-CHUONG 4.pdf

- 53 -

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

ADMUX

$07 ($27)

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ó

Page 12: 7-CHUONG 4.pdf

- 54 -

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).

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.

Page 13: 7-CHUONG 4.pdf

- 55 -

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ý.

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

Page 14: 7-CHUONG 4.pdf

- 56 -

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.

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

Page 15: 7-CHUONG 4.pdf

- 57 -

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

Page 16: 7-CHUONG 4.pdf

- 58 -

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

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

Page 17: 7-CHUONG 4.pdf

- 59 -

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)

- 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

Page 18: 7-CHUONG 4.pdf

- 60 -

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.

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

Page 19: 7-CHUONG 4.pdf

- 61 -

ở 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.

- 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.

Page 20: 7-CHUONG 4.pdf

- 62 -

- 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.

4.4.2. Sơ đồ chân Atmega8

Hình 4.11 Sơ đồ chân Atmega8

Page 21: 7-CHUONG 4.pdf

- 63 -

4.4.3. Sơ đồ khối của Atmega8

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)

Page 22: 7-CHUONG 4.pdf

- 64 -

- 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 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.

Page 23: 7-CHUONG 4.pdf

- 65 -

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.