1. Trang chủ
  2. » Luận Văn - Báo Cáo

tìm hiểu vi điều khiển atmega16 tìm hiểu vi mạch điều khiển atmega 16 và phần mềm lập trình giao diện máy tính

59 1,3K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 59
Dung lượng 0,98 MB

Nội dung

- Khi khảo sát các cổng như là các cổng vào ra số thong thường thì tính chất của các cổng Port A, PortB, PortC là tương tự nhau, nên ta chỉ cần lkhảo sát 1 cổng nào đó trong 3 cổng của

Trang 1

BÁO CÁO TỐT NGHIỆP

Các Yêu Cầu:

1 Tìm Hiểu Vi Điều Khiển Atmega16

- Giới thiệu tổng quan

- Giới thiệu 1 số modun của Atmega16 : Cổng vào ra , AVR ATmega16 Memories, System Clock , Timer/Counter , Interrupt Vectors in ATmega16 , USART.

2 Tìm Hiểu phần mềm lập trình giao diện máy tính.

- Các Control

- Lập trình giao tiếp cổng COM

Trang 2

Phần 1 Tìm hiểu vi điều khiển Atmega16

1.1 Giới thiệu tổng quan

Giới thiệu AVR:

- Vi điều khiển AVR do hãng Atmel ( hoa kỳ ) sản xuất được giới thiệu lần đầu tiên năm 1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny ( như At tiny 13, At tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi , rồi đén dòng AVR ( chẳng hạn AT90S8535, AT90S8515…) co kích thước

bộ nhớ vào loại trung bình và manh hơn là dòng Mega ( như ATmega 16, Atmega 32, ATmega 128… ) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với bộ ngoại vi đa dạng được tích hợpcả bộ LCD trên chip ( dòng LCD AVR) Tốc độ của dòng Mega cũng cao hơn so với các dòng khác Sự khác nhau cơ bản giữa các đòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như nhau

- ATmega16 là một lọai Vi điều khiển có nhìều tính năng đặc biệt thích hợp cho việc giải quyết những bài tóan điều khiển trên nền vi xử lý

+Các lọai vi điều khiển AVR rất phổ biến trên thị trừơng Việt Nam nên không khó khăn trong việc thay thế và sửa chữa hệ thống lúc cần

+Giá thành của dòng Vi Điều Khiển này khá phải chăng

Trang 3

mạng.Các thiết kế demo nhiều nên có nhiều gợi ý tốt cho người thiết kế hệ thống.

- ATmega16 là vi điều khiển 8bit dựa trên kiến trúc RISC Với khả năng thực hiện mỗi lệnh trong vong một chu kỳ xung clock, Atmega16 có thể đạt được tốc độ 1MIPS trên mỗi MHz( 1triệu lệnh/s/MHz),các lệnh được xử lý nhanh hơn,tiêu thụ năng lượng thấp

* Atmega16 có cấu trúc RISC với:

+131 lệnh,hầu hết được thực thi trong 1 chu kì xung nhịp

+32x8 thanh ghi đa dụng

+Full static operation

+Tốc độ làm việc 16MPIS,với thạch anh 16MHz

+Trong chip co 2 chuc nang ho tro go roi va lap trinh saon chuong trinh

Trang 4

- Bộ nhớ:

+16 KB ISP Flash với khả năng 10.000lần ghi/xóa

+512Byte EEROM

+1KB SRAM ngọai

* Giao tiếp JTAG

+Khả năng quét toàn diện theo chuẩn JTAG

+Hỗ trợ khả năng go roi

+Hỗ trợ lập trình Flash,EEROM,fuse…

+Lock bit qua giao tiếp JTAG

* Ngọai vi:

+2 timer/counter 8 bit với các mode :so sánh và chia tần số

+1 timer/counter 16 bit với các mode:so sánh,chia tần số,capture,PWM +1 timer thời gian thực(Real time clock) với bộ dao động riêng biệt

+4 kênh PWM(họăc nhiều hơn trong các VĐK khác thuộc họ này)

+8 kênh biến đổi ADC 10bit

+Hỗ trợ giao tiếp I2C

+Bộ giao giao tiếp nối tiếp lập trình được USART

+Giao tiếp SPI

+Watch_dog timer với bộ dao động on-chip riêng biệt

* Những thuộc tính đặc biệt:

+Power On reset và Brown-out detection

+chế độ hiệu chỉnh bộ sai số cho bộ dao động RC On-chip

Trang 5

standby,extended standby

* I/O port:

+32 chân I/O(Atmega16) và 21 chân I/O (Atmega8) lập trình được

+vỏ 40 chaân (Atmega16) ,28 chân(Atmega8),64 chân(AT90can128);

* Nguồn cấp:

2,7->5.5 V với ATmega16L

4.5->5.5V với ATmega16H

* Tiêu hao năng lượng:

+Khi họat động tiêu thụ dòng 1,1mA

+Ở mode Idle tiêu thụ dòng 0.35mA

+Ở chế độ Power_down tiêu thụ dòng nhỏ hơn 1uA

* Đây là những chức năng cơ bản thường thấy trong các Vi điều khiển

AVR,ngòai ra trong các vi điều khiển khác thuộc dòng vi điều khiển này thì thường được hỗ trợ thêm những chức năng đặc biệt.Ví dụ AT90can128 hỗ trợ thêm bộ giao tiếp mạng Can bus on-chip

Trang 6

1.3 Một số modun của Atmega16

- Vi điều khiển ATmega16 có 32 đuờng vào ra chia làm bốn nhóm 8bit một Các cổng vào ra của AVR là cổng vào ra 2 chiều có thể định hướng, tức có thể chọn hướng của cổng là hướng vào ( input ) hay hướng

ra ( out put ) Tất cả các cổng vào ra của AVR đều có tính năng Đọc- Chỉnh sửa- Ghi ( Read- Modify-Write ) khi sử dụng chúng như là các

Trang 7

của 1 chân nào đó thì nó không ảnh hưởng tới hướng của các chân khác, Tất cả các chân của các các cổng ( Port ) đều có điện trở kéo lên (Pull-

up ) riêng, ta có thể cho phếp hay không cho phép điện trở léo lên này hoat động

- Điện trở kéo lên ( pull- up ): là 1 điện trở được dung khi thiết kế các mạch điện tử logic Nó có 1 đầu được nói với nguồn điện áp dương

( thường là Vcc hoặc Vdd) và đầu còn lại được nối với tín hiệu lối vào/ra của 1 mạch logic chức năng, Điện trở kéo lên có thể được nắp đặt tại các lối vào ra của các khôíi mạch logic để thiết lập mức logic của khối mạch khi không có thiết bị ngoài nối với lối vào Điện trở kếo lên cũng có thể nắp đặt tại các gaio diện giữa 2 khối mạch logic không cùng loại logic, đặc biệt là khi 2 khối mạch này được cấp nguồn khác nhau

- Khi khảo sát các cổng như là các cổng vào ra số thong thường thì tính chất của các cổng ( Port A, PortB, PortC ) là tương tự nhau, nên ta chỉ cần lkhảo sát 1 cổng nào đó trong 3 cổng của vi điều khiển là đủ

- Mỗi 1 cổng vào ra của vi điều khiển được lien kết với 3 thanh ghi : PORTx, DDRx, PINx (ở đây x là thay thé cho A, B, C ) Ba thanh ghi này sẽ được phối hợp với nhau đẻ điều khiển hoạt động của cổng, chẳmg hạn thiết lạp cổng thành lối vào có sử dụng điện trở pull-up… Sau đây là vai trò của 3 thanh ghi trên

• Thanh ghi DDRx

Đây là thanh ghi 8bit( ta có thể đọc và ghi ở các thanh ghi này) có tác dụng điều khiển hướng cổng PORTx( tức là cổng vào hay cổng ra)

Trang 8

Nếu như một bit trong thanh ghi này được set thì bit tương ứng đó trên PORTx đuệoc định nghĩa như một cổng ra Ngược lại nếu như bit đó không được set thi bit tương úng trên PORTx được định nghĩa

là cổng vào

• Thanh ghi PORTx

Đây cũng là thanh ghi 8bit ( các bit có thể đọc và được ghi) nó là thanh ghi dữ liệu của cổng Px và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi tag hi một môtl bit lên thanh ghi này thì chân tương ứng trên port đó cùng có mức logic Trong trường hợp đó

mà cổng được định nghĩa là cổng vào thì thanh ghi này mang dữ liệu điều khiển cổng Cụ thể là nếu bit nào đó của thanh ghi này được set (đưa lên mức 1 ) thì điện trở kéo lên pull up của chân tương ứng của port đó sẽ được kích hoạt Ngược lại nó sẽ ở trạng thái Thanh ghi này sau khi khởi động Vi điều khiển sẽ có giá trị là 0x00

Trang 9

Thanh ghi PINx

Đây là thanh ghi 8bit chứa dữ liệu vào của PORTx ( trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không ghi vào được

- AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương trình Ngoài ra ATmega16 còn có them bộ nhớ EEPROM để lưu trữ dữ liệu

• Bộ nhớ chương trình( bộ nhớ Flash)

bộ nhớ Flash 16Kb của ATmega16 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 théo kiểu 8KX16 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 trinh ứng dụng

• Bộ nhớ dữ liệu SRAM

1120 ô nhớ dữ liệu đinh địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội Trong đó 96 ô nhớ đầu tiên định địa chỉ cho

Trang 10

file thanh ghi và bộ nhớ I/O và 1024 ô nhớ tiếp theo định địa chỉ cho

bộ nhớ SRAM nội

• Bộ nhớ dữ liệu EEPROM

Trang 11

ví bộ nhớ dữ liệu EEPROM giống như ổ cứng của máy tính Với vi điều khiển ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ ghi từng byte một EEPROM được xem như là 1 bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM , điều này có nghĩa ta cần sử dụng cá lệnh in , out… khi muốn truy xuất tới EEPROM Để điều khiển vào

ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau:

a Thanh ghi EEAR (EEARH và EEARL )

EEAR là thanh ghi 16 bit lưu giữ địa chỉ của các ô nhớ của

EEPROM, thanh ghi EERA được kết hợp từ 2 thanh ghi 8 bit là EEARH và thanh ghi EEARL

b Thanh ghi EECR

Trang 12

EEPROM sẽ tạo ra 1 ngắt với CPU khi bit EEWE được xoá, điều này có nghĩa là khi các ngắt được cho phép ( bit 1 trong thanh ghi SREG và bit EERIE tronh thanh ghi EECR được set thành 1) với quá trình ghi vào ROM vừa xong thì sẽ tạo ra 1 ngắt với CPU , chương trình sẽ nháy với vectơ ngắt

có địa chỉ là 002C để thực hiện chương trình phục vụ ngắt (ISR ) Khi bit EERIE là 0 thì ngắt không được cho phép

+ Bit 2- EEMWE : EEPROM Master Write Enable : Khi bit EEMWE

và bit EEWE là 1 sẽ ra lệnh cho CPU ghi dữ liệu từ thanh ghi EEDR vào EEPROM, địa chỉ của ô nhớ cần ghi trong EEPROM dược lưu trong thanh ghi EEAR Khi bit này là 0 thì không cho phép ghi vào EEPROM Bit

EEMWE sẽ được xoá bởi phần cứng sau 4 chu kỳ máy

Trang 13

+ Bit1- EEWE : EEPROM (Write Enable ) Bit này vừa đong vai trò như 1 bit cờ, vừa là bit điều khiển việc ghi dữ liệu vào EEPROM Ở vai trò của 1 bit điều khiển nếu bit EEMWE đã được set lên 1 thì khi ta set bit EEWE lên 1 thì sẽ bắt đầu quá trình ghi dữ liệu vào EEPROM Trong suốt quá trình ghi dữ liệu vào EEPROM bit EEWE luôn giữ là 1 Ở vai trò của 1 bit cờ khi quá trình ghi dữ liệu vào EEPROM hoàn tất , phần cứng sẽ tự động xoá bit này về 0 Trước khi dữ liệu vào EEPROM ta cần phải biết chắc

là khong có qú trình ghi EEPROM nào khác đang xảy ra , đẻ biết được điều này ta cần kiểm tra bit EEWE Để ý là sau khi quá trình đọc dữ liẹu từ

EEPROM hoàn tất, bit EERE sẽ được tự động xoá bởi phần cứng Nếu EEPROM đang được ghi thì ta không thể đọc được dữ liệu từ EEPROM Khi bắt đầu quá trình đọc dữ liệu từ EEPROM , CPU sẽ tạm nghỉ 4 chu kỳ máy trước khi thực hiện lếnh kế tiếp

- Tóm lại để ghi vào EEPROM ta cần thực hiện các bước sau:

+ Chờ cho bit EEWE về 0

+ Cấm tất cả các ngắt

+ Ghi địa chỉ vào thanh ghi EEAR

+ Ghi dữ liệu mà ta cần ghi vào EEPROM vào thanh ghi EEDR + Set bit EEMWE thành 1

+ Set bit EEWE thành 1

+ Cho phép các ngắt trở lại

- Nếu 1 ngắt xảy ra giữa bước 5 và 6 sẽ làm hỏng quá trình ghi vào

EEPROM bởi vì bit EEMWE sau khi set lên 1 chỉ được giữ trong 4 chu kỳ máy, chương trình ngắt sẽ làm hết thời gian ( Time out ) duy trì bit này ở mức 1

Trang 14

- Một ngắt xuất hiện ở cuối bước 4 cũng có thể làm cho địa chỉ và dữ liệu cần ghi vào EEPROM trở lên không chính xác nếu trong vhương trình phục

vụ ngắt có chỉnh sửa lại các thanh ghi EEAR và EEDR Đó là lý do ta cần cấm các ngắt trước khi thực hiện tiếp các bước 3, 4, 5, 6

Quá trình ghi dữ liệu vào EEPROM cũng có thể không an toàn nếu điện thé nguồn nuôi (Vcc) quá thấp

- Đọc dữ liệu từ EEPROM :Việc đọc dữ liệu từ EEPROM đơn giản hơn ghi

dữ liệu vào EEPROM, để đọc dữ liệu từ EEPROM ta thực hiện các bước sau: Chờ cho bit EEWE về 0 Ghi địa chỉ vào thanh ghi EEAR Set bit EERE lên 1

C Bộ Định thời (Timer/ Counter )

- là một modum định thời/đếm 8bit, có đặc điểm sau:

- Bộ định thời có thể sử dụng xung clock nội thong 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ộ

Trang 15

định thời/bộ đếm sẽ dung 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.

- Đơn vị đếm

- Phần chính của bộ định thời 8 bit là 1 đơn vị song hướng có thể lập trình được

Count: tăng hay giảm TCNT01

Direction: lựa chọn giữa đếm lên và đếm xuống

Clear: xoá thanh ghi TCNT0

Clkto : 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ộ đinh thời đã giảm đến giá trị nhỏ nhất( 0 )

* Đơn vị so sánh ngõ ra

Trang 16

- Bộ sa sánh 8 bit lien 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 OCR0, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt giá trị 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 1 ngắt được thực thi Cờ OCF0 cũng có thể được xoá bằng phần mềm

Trang 17

- Mô tả các thanh ghi

• Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0

+ 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 song

+ Bit 6, 3- WGM01, WGM00 : chế độ tạo dang song

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 song sẽ được sử dụng

+ Bit 5, 4- COM01, COM00 : 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 1 hoặc cả 2 bit COM01 và COM00 được đặt lên 1, ngõ ra OC0 sẽ hoạt động

+ Bit 2, 0- CS02, CS00 : chọn sung đồng hồ

Trang 18

Ba bit này dung để lựa chọn nguồn xung cho bộ định thời/ bộ đếm

• Thanh ghi bộ định thời/ bô đếm

Trang 19

- Thanh ghi bộ định thời/ bộ đếm cho phép truy cập trực tiếp ( cả đọc và ghi) vào bộ đếm 8 bit

• Thanh ghi so sánh ngõ ra- OCR0

- Thanh ghi này chứa 1 giá trị 8 bit và lien tục được so sánh với giá trị của

bộ đém

- Thanh ghi mặt nạ ngắt

Trang 20

+ 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

• Thanh ghi cờ ngắt bộ định thời

+ 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à đựoc xoá bởi phần cứng khi vectơ ngắt tương ứng được thực hiện Bit này cũng có thể xoá bằng phần mềm

Trang 21

( polling) Trong phương pháp sử dụng các ngắt thì mỗi khi có thiết

bị bất kỳ cần đến dịch vụ của nó thì nó báo cho bộ vi điều khiển bằng cách gửi 1 tín hiệu ngắt Khi nhận được tín hiệu ngắt thì bộ vi điều khiển ngắt tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiết bị Chương trình đi cùng ngắt được gọi là dịch vụ ngắt ISR hay còn gọi là chương trình quản lý ngắt Còn trong phương pháp thăm dò thì bộ vi điều khiển hiển thị lien tục tình trạng của 1 thiết bị đã cho và điều khiển thỏa mãn thì nó phục vụ thiết bị Sau đó chuyển sang hiển thị tình trạng của thiết bị kế tiếp cho đến khi tất cả đều được phục vụ

- Điểm mạnh của phương pháp ngắt là bộ vi điều khiển là phục vụ rất nhiều thiết bị( tất nhiên là không cùng tại một thời điểm

Trang 22

• Trình phục vụ ngắt

- Đối với mỗi ngắt thì phải có 1 trình phục vụ ngắt ISR hay trình ngắt Khi 1 ngăt được gọi thì bộ vi điều khiển phục vụ ngắt Đối với mỗi ngắt thì có 1 vị trí cố định trong bộ nhớ giữa địa chỉ ISR của nó Nhóm các vị trí nhớ được dành riêng để gửi các địa chỉ của các ISR được gọi là bảng vectơ ngắt

- Khi kích hoạt 1 ngắt bộ vi điều khiển đi qua các bước sau :

+ Vi điều khiển kết thúc lênh đang thực hiện và lưu trữ đia chỉ của lệnh kế tiếp ( PC ) vào ngăn xếp

+ Nó nhảy đến 1 vị trí cố định trong bộ nhớ được gọi là bảng vectơ ngắt nơi lưu giữ địa chỉ của 1 trình phục vụ ngắt

+ Bộ vi điều khiển nhận địa chỉ ISR từ bảng vectơ ngắt và nhảy tới đó

Nó bắt đầu thực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR

và RETI ( trở về từ ngắt )

+ Khi thực hiện lệnh RETI bộ vi điều khiển quay trở về nơi nó đã bị ngắt Trước hết nó nhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo 2 byte trên đỉnh của ngăn xếp vào PC Sau đó bắt đầu thực hiện các lệnh từ địa chỉ đó

- Bảng vectơ ngắt của Atmega 16

Trang 23

E USART

Trang 24

- USART : Bộ truyền nhận nối tiếp đồng bộ và bất đồng bộ phổ dụng Đây

là khối chức năng dung cho việc truyền thong giữa vi điều khiển với các thiết bị khác Trong vấn đè truyền dữ liệu só, có thể phân chia cách

thức(method) truyền dữ liệu ra 2 chế độ mode cơ bản là : chế độ nhận Đồng Bộ (shynchronous) và chế độ nhận Bất đồng bộ (Asynchronous) Ngoài ra , nếu có góc độ phần cứng thì có thể phân chia theo cách khác đó là : Truyền nhận dữ liệu theo kiểu Nối Tiếp ( serial) và song song (paralen)

• Truyền đồng bộ: là kiểu truyền dữ liệu trong đó bộ truyền

(Transmitter) và bộ nhận(Receiver) sử dụng chung mọt xung đồng

hồ (clock).Do đó hoạt động truyền và nhận dữ liệu diễn ra đồng thời Xung clock có vai trò là tín hiệu đồng bộ cho hệ thống ( gồm khối truyền và khối nhận) Ưu điểm của kiểu ctuyền đồng bộ là tốc

độ nhanh, thích hợp khi truyền dữ liệu khôí block)

• Truyền bất đồng bộ : là kiểu truyền dữ liệu trong đó mỗi bộ truyền (transmitter) và bộ nhận (receiver) có tạo bộ xung (lock) riêng, tốc

độ xung clock ở 2 khối này có thể khác nhau, nhưng thưòng khong quá 10% Do không dung chung xung clock, nên để đồng bộ quá trình truyền và nhận dữ liệu, người ta phải truyền các bit đồng bộ (Start, stop,…) đi kèm với các bit dữ lieu Các bộ truyền và bộ nhận sẽ dựa vào các bit đồn bộ này quyết định khi nào sẽ thực hiện hay kết thúc quá trình truyền hoặc nhận dữ liệu Do đó, hệ thống truyền không đồng bộ còn được gọi là hệ thống truyền “ tự đồng

Trang 25

- Từ 2 kiểu truyền dữ liệu cơ bản trên,người ta dưa ra nhiều giao thức

truyền khác nhau như : SPI (đồng bộ ), USRT (đồng bộ ), UART ( bất đồng

bộ )

Trang 26

- Sơ đồ khói bộ USART được chia làm ba phần chính

• khối tạo xung

Đơn vị tạo xung clock

Trang 27

Xcki : tín hiệu vào từ chân XCK, sử dụng cho truyền đồng bộ Master

XCKO : tín hiệu cung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng bộ slave

Fose: tần số tử chân XTAL

2 Định dạng khung: Trong ché độ truyền không đồng bộ, khung dữ liệu truyền đi không có 1tín hiệu clock để đồng bộ hoá dữ liêu ( vì thế mà gọi là không đồng bộ) , quá trình đông bộ hoá giữa bộ thu và bộ phát được thực hiện nhờ các bit đồng bộ là start bit và stop bit Một khung nối tiếp bao giờ cũng được đinh dạn theo thứ tự 1 start bit , các bit giữ liệu (data bit ) 1 bit pairty tuỳ chọn phục vụ lỗi kiếm lỗi và kết thúc bằng 1 hoặc 2 stop bit

St : bit start ( mức thấp )

(n) : bit dữ liệu ( 0 đến 8 )

P: bit chẵn lẻ

Sp: bit stop ( mức cao )

IDLE : không có dữ liệu truyền ( mức cao trong suốt thời gian idle )

Trang 28

3 USART chấp nhận các định dạng khung sau:

1 start bit (luôn có mức logic thấp, gọi là space)

5, 6, 7, 8 hoặc 9 data bits

Không có, hoặc 1 bit parity chẵn/lẻ

1 hoặc 2 stop bit (luôn có mức lôgic cao, gọi là mark)

- Quá trình truyền USART:

Việc truyền dữ liệu nối tiếp ra ngoài thông qua chân TxD.Một quá trình truyền dữ liệu từ MCU đi được khởi tạo bằng việc viết dữ liệu vào thanh ghi đệm dữ liệu UDR, sau đó dữ liệu được chuyển tới thanh ghi dịch bộ phát khi thanh ghi dịch đã sẵn sàng truyền một byte mới Các bit start và stop được bổ sung vào khung dữ liệu trong thanh ghi này với thiết đặt từ thanh ghi điều khiển bộ phát Cũng như vậy bit thứ

9 (nếu có) có thể được thêm vào TXB8 trong thanh ghi UCSRB trước khi byte thấp của ký tự được viết vào UDR Khi thanh ghi dịch dịch hết dữ liệu (đã được điều chế) ra thế giới bên ngoài thông qua chân TxD, nó sẽ sẵn sàng nhận dữ liệu mới nếu nó đang ở trạng thái rỗi hoặc ngay lập tức sau khi bit stop cuối cùng của khung trước đó được truyền đi Lưu ý rằng dữ liệu được dịch ra ngoài với bit LSB trước, cuối cùng là MSB

- Quá trình nhận USART:

Phần mềm cho phép thanh ghi dịch nhận dữ liệu nối tiếp từ thế giới bên ngoài thông qua chân RxD (PD0) Bộ thu bắt đầu tiếp nhận dữ liệu khi dò được một bit Start Sau khi dò được bit Stop đầu tiên (end

Trang 29

vào CPU.

- USART có 5 thanh ghi

a Thanh ghi vào/ra dữ liệu (UDR)

Các thanh ghi đệm dữ liệu của bộ thu và bộ phát của USART cùng chia sẻ vùng địa chỉ I/O được tham chiếu là thanh ghi dữ liệu UDR Khi viết vào UDR thì nó thể hiện như là một bộ đệm truyền, còn khi đọc dữ liệu từ UDR thì nó lại thể hiện như một

bộ đệm nhận Đối với các bit 5,6 và 7, các bit không dùng sẽ bị

bỏ qua bởi bộ đệm truyền và được đọc là 0 bởi bộ đệm nhận

Bộ đệm truyền chỉ có thể được viết khi cờ UDRE trong thanh ghi UCSRA được set Dữ liệu viết vào UDR khi cờ UDRE không được set sẽ bị bỏ qua Khi dữ liệu được viết vào bộ đệm truyền và bộ đệm truyền được enable thì nó sẽ tải dữ liệu vào thanh ghi dịch truyền nếu nó rỗng

Bộ đệm thu gồm hai mức FIFO Hai thanh ghi đệm hoạt động như một bộ đệm vòng FIFO FIFO sẽ thay đổi trạng thái của nó bất cứ khi nào bộ đệm nhận được truy cập Quan trọng là các cờ lỗi (FE và DOR), và bit dữ liệu thứ 9 (RXB8) được đệm cùng với dữ liệu trong bộ đệm nhận Vì vậy các bit trạng thái luôn phải được đọc trước khi thanh ghi UDR được đọc

b Thanh ghi điều khiển và trạng thái A (UCSRA)

• Bit 7 – RXC: USART Receive Complete Bit này được set khi

có dữ liệu không đọc được vào bộ đệm nhận, hay bộ đệm nhận

Ngày đăng: 17/07/2016, 00:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w