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

NGHIÊN CỨU THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐO TỐC ĐỘ VÀ HƯỚNG GIÓ KỸ THUẬT SỐ

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 (3.6 MB, 55 trang )

LỜI CẢM ƠN

Em xin chân thành cảm ơn tới các thầy cô giáo trong khoa Điện tử viễn
thông – trường Đại học hàng hải, đã định hướng, giúp đỡ, tạo mọi điều kiện
thuận lợi cho em trong quá trình nghiên cứu. Đặc biệt em xin cảm ơn thầy Ngô
Xuân Hường và thầy Vũ Xuân Hậu đã trược tiếp hướng dẫn, chỉ bảo em để có
thể hoàn thành tốt đồ án này.
Em xin chân thành cảm ơn tới các chú, các anh kỹ thuật viên trong Xưởng
điện tử, thuộc công ty cổ phần điện tử hàng hải đã nhiệt tình chỉ bảo, tạo điều
kiện cho em được tìm hiểu, tiếp xúc với các thiết bị thực tế đồng thời có thể thực
nghiệm, đo lường với các thiết bị, máy móc tại Xưởng.

i


LỜI CAM ĐOAN

Em xin cam đoan đây là công trình nghiên cứu của bản thân, dưới sự
hướng dẫn trực tiếp của thầy Ngô Xuân Hường và thầy Vũ Xuân Hậu. Các kết
quả nghiên cứu đưa ra trong đồ án này do em tự tìm hiểu, phân tích và thực
nghiệm và không sao chép bất kì công trình nghiên cứu của tác giả nào khác.
Nội dung đồ án có sử dụng một số thông tin, tài liệu tham khảo và được trích
dẫn rõ ràng tên tác giả, tên công trình, thời gian và địa điểm công bố, và được
liệt kê trong danh mục tài liệu tham khảo.

ii


MỤC LỤC
PHẦN MỞ ĐẦU...................................................................................................1
CHƯƠNG 1:GIỚI THIỆU VỀ HỆ THỐNG ĐO GIÓ..........................................2


1.1.KHÁI NIỆM................................................................................................2
1.2.CẤU TẠO CỦA MỘT HỆ THỐNG ĐO GIÓ............................................2
1.2.1. Khối sensor..........................................................................................2
1.2.2. Khối Display........................................................................................4
1.3.ỨNG DỤNG CỦA HỆ THỐNG ĐO GIÓ..................................................4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT......................................................................6
2.1. ENCODER.................................................................................................6
2.1.1. Khái quát chung về encoder................................................................6
2.1.2. Encoder tuyệt đối.................................................................................7
2.1.3. Encoder tương đối...............................................................................9
2.2. VI ĐIỀU KHIỂN ATMEGA8..................................................................10
2.2.1. Tổng quan về vi điều khiển Atmega8................................................10
2.2.2. Cấu trúc chung của vi điều khiển Atmega8.......................................11
2.2.3. Điều khiển vào ra I/O........................................................................14
2.2.4. Timer/counter....................................................................................15
2.2.5. Truyền thông nối tiếp USART..........................................................18
2.3. CHUẨN GIAO TIẾP NMEA 0183..........................................................21
2.3.1. Khái niệm..........................................................................................21
2.3.2. Đặc điểm kỹ thuật..............................................................................21
2.3.3. Câu lệnh NMEA của hệ thống đo gió...............................................22
CHƯƠNG 3: THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐO GIÓ..............................23
3.1. Ý TƯỞNG VÀ PHƯƠNG ÁN THIẾT KẾ..............................................23
3.1.1. Xác định bài toán thiết kế..................................................................23
3.1.2. Ý tưởng thiết kế.................................................................................23
3.1.3. Phương án thiết kế.............................................................................23
3.2. THIẾT KẾ KHỐI CẢM BIẾN.................................................................24
3.2.1. Cảm biến tốc độ gió...........................................................................24
3.2.2. Cảm biến hướng gió..........................................................................26
3.3. THIẾT KẾ KHỐI HIỂN THỊ...................................................................27
3.3.1. Thiết kế mạch....................................................................................27

3.3.2. Lập trình cho vi điều khiển Atmega8................................................33
KẾT LUẬN VÀ KIẾN NGHỊ.............................................................................35
1. Kết luận.......................................................................................................35
2. Kiến nghị.....................................................................................................35
TÀI LIỆU THAM KHẢO...................................................................................37
PHỤ LỤC............................................................................................................38

iii


MỘT SỐ TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỒ ÁN
ENCODER
ALU
VĐK
USART
RAM
ROM
EPROM
GPS

Cảm biến góc quay
Arithmetic Logic Unit – Khối xử lý toán học
Vi điều khiển
Truyền thông nối tiếp
Random Access Memory – Bộ nhớ ghi/đọc
Read Only Memory – Bộ nhớ chỉ đọc
Aerraseble programmable ROM – Bộ nhớ Rom lập trình được
Global Position System – hệ thống định vị toàn cầu

DANH MỤC CÁC BẢNG


iv


Số bảng

Tên bảng

Trang

2.1

Lựa chọn xung clock cho bộ timer/counter 0

15

2.2

Cách thức kiểm tra parity

19

2.3

Độ dài dữ liệu truyền

20

DANH MỤC CÁC HÌNH VẼ
v



Số hình

Tên hình

Trang

1.1

Cảm biến đo gió WALKER 2050

2

1.2

Cảm biến đo gió YOUNG 05103

3

1.3

Màn hình chỉ báo của máy đo gió WALER 2050

4

2.1

Cấu tạo của encoder


6

2.2

Cấu tạo encoder tuyệt đối

8

2.3

Đĩa quay encoder tuyệt đối

8

2.4

Đĩa quay của encoder tương đối

9

2.5

Vi điều khiển Atmega8

10

2.6

Sơ đồ chân của Atmega8


10

2.7

Cấu trúc vi điều khiển Atmega8

11

2.8

Bộ nhớ chướng trình của Atmega8

12

2.9

Cấu trúc bộ nhớ dữ liệu

14

3.1

Cấu tạo mô hình cảm biến tốc độ gió

24

3.2

Cảm biến hướng gió


25

3.3

Sơ đồ mạch Encoder trong cảm biến đo tốc độ gió

25

3.4

Cấu tạo mô hình cảm biến hướng gió

26

3.5

Cảm biến hướng gió

27

3.6

Sơ đồ layout mạch vi điều khiển

31

3.7

Mạch vi điều khiển


31

3.8

Sơ đồ layout mạch hiển thị Led

32

3.9

Mạch hiển thị Led

32

vi


PHẦN MỞ ĐẦU

Trong lịch sử phát triển của mình, từ xa xưa, con người đã biết tới nguồn
năng lượng gió và ảnh hưởng của nó đến đời sống. Ngưởi ta lợi dụng sức gió để
đẩy thuyền buồm ra khơi, để chế tạo cối xay gió hay để làm máy phát điện,..
Tuy nhiên sức gió cũng có thể gây ra những ảnh hưởng tiêu cực như làm lệch
hướng di chuyển của tàu thuyền, ảnh hưởng tới độ vững chắc của các tòa nhà
cao tầng, hay những cơn gió to gây thiệt hại tới tài sản và tính mạng con ngưởi.
Do đó việc “đo” được sức gió, nghĩa là nắm được những thông số như hướng
gió, tốc độ gió, áp suất gió là rất quan trọng, và những chiếc máy đo gió ra đời.
Tong quá trình tìm hiểu, chuẩn bị đề tài tốt nghiệp cùng với sự định
hướng của thầy Ngô Xuân Hường và thầy Vũ Xuân Hậu, em đã lựa chọn đề tài
tốt nghiệp “NGHIÊN CỨU THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐO TỐC ĐỘ

VÀ HƯỚNG GIÓ KỸ THUẬT SỐ”. Đây là những ý tưởng của em về việc thiết
kế một hệ thống đo gió, kết hợp với việc tìm hiểu các hệ thống đo gió hiện nay,
cùng với sự hướng dẫn, chỉ bảo của các thầy. Tuy nhiên do kiến thức của em
còn hạn chế, nên đồ án còn nhiều sai sót. Em rất mong nhận được sự góp ý, bổ
sung của các thầy để bản đồ án của em được hoàn thiện hơn đồng thời là cơ hội
để em hoàn thiện hơn những kiến thức và hiểu biết của bản thân.

1


CHƯƠNG 1:GIỚI THIỆU VỀ HỆ THỐNG ĐO GIÓ

1.1.

KHÁI NIỆM
Hệ thống đo gió (anemometer), là một thiết bị dùng để đo tốc độ, hướng

gió và áp suất của gió. Hiện nay, các hệ thống đo gió chủ yếu gồm hai chức
năng là đo tốc độ và hướng gió.
1.2.

CẤU TẠO CỦA MỘT HỆ THỐNG ĐO GIÓ

1.2.1. Khối sensor

Hình 1.1. Cảm biến đo gió WALKER 2050
Khối cảm biến bao gồm cảm biến tốc độ gió (wind speed sensor) và cảm
biến hướng gió (direction indicator sensor). Tùy theo cấu tạo và hình dạng của
cảm biến tốc độ gió, ta có 2 loại hệ thống đo gió:
Dạng máy đo gió hình chén, được phát minh bởi tiến sĩ John Thomas

Romney Robinson (1846), đây là một trong những thiết bị đo gió đầu tiên và
hiện nay vẫn được sử dụng khá rộng rãi.
Cấu tạo của máy gồm 3 hoặc 4 tay đòn đặt vuông góc với nhau. Ở đầu
mỗi tay đòn có gắn một chén hình bán cầu. Có một trục đứng ở giữa nằm ở giao
2


điểm các tay đòn là tâm mà các chén quay xung quanh và một bộ truyền động
thực hiện đếm số vòng mà trục quay được, và từ số vòng quay được đó trong
một khoảng thời gian ta sẽ tính ra được vận tốc gió.
Các chén được đặt đối xứng với nhau, do đó gió luôn thổi vào phía trong
của chén. Mặc dù phía ngoài của chén cũng có gió thổi vào nhưng áp suất gió rất
nhỏ, do đó chén sẽ bị đẩy đi theo 1 hướng, kết hợp với hiện tượng quán tính, lần
lượt các chén liên tục bị đẩy sinh ra hiện tượng quay vòng.
Máy đo gió dạng cối xay gió: trục quay nằm song song với hướng gió ,
với cánh quạt được gắn ở đầu, do đó nó nằm ngang, khi gió đổi chiều thì trục
quay cũng thay đổi.

Hình 1.2. Cảm biến đo gió YOUNG 05103

3


1.2.2. Khối Display

Hình 1.3. Màn hình chỉ báo của máy đo gió WALER 2050
Khối Display nhận tín hiệu từ cảm biến cho phép hiển thị tốc độ gió bằng
số, và hướng gió thể hiện bằng vị trí đèn led sáng hay chỉ báo bằng hướng mũi
tên trên màn hình LCD.
Ngoài việc hiển thị trên màn hình, hệ thống đo gió còn cho phép xuất tín

hiệu ra để đưa vào một máy tính để xử lý hay ghép nối tới các thiết bị khác (ví
dụ như trong hàng hải, tín hiệu đo gió được ghép nối tới hộp đen, hải đồ điện
tử,..). tín hiệu ra là các câu lệnh theo chuẩn giao tiếp NMEA.
1.3.

ỨNG DỤNG CỦA HỆ THỐNG ĐO GIÓ
Hệ thống đo gió được lắp đặt tại các trạm khí tượng thủy văn, cho phép

xác định các thông số về hướng gió, cường độ gió (cấp gió) và áp suất gió, là
những thông tin quan trọng trong việc phân tích tình hình thời tiết và đưa ra các
bản tin dự báo, cảnh báo thời tiết.
Trong hàng hải, đặc biệt là với tàu thuyền lưu thông trên biển, việc nắm
được các thông tin về hướng và cường độ gió rất quan trọng, giúp cho người
điều khiển tàu chỉnh góc lái phù hợp tránh hiện tượng tàu bị trôi dạt lệch khỏi
hướng hành trình. Hệ thống đo gió là một trong những nghi khí dẫn đường hàng
hải quan trọng.
4


Ngoài ra hệ thống đo gió cũng được ứng dụng trong các lĩnh vực nông
nghiệp, xây dựng, thể thao,…

5


CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. ENCODER
2.1.1. Khái quát chung về encoder
a. Khái niệm Encoder

Encoder là một loại cảm biến vị trí, cho phép xác định thông tin về góc
quay một cách chính xác dưới dạng số. Tín hiệu ra của encoder là các bit nhị
phân, với số lượng bit tương ứng với độ phân giải của encoder.
b. Phân loại encoder
Encoder được phân làm 2 loại chính, bao gồm:
- Encoder tuyệt đối: sử dụng đĩa theo mã nhị phân, mã Gray hoặc mã
BCD
- Encoder tương đối: gồm có loại 1 kênh, loại 2 kênh.
c. Cấu tạo và nguyên lý hoạt động

Hình 2.1. Cấu tạo của encoder
Cấu tạo của encoder gồm 1 đĩa tròn xuay quanh trục. Trên đĩa có
khoét các lỗ (rãnh). Một bên mặt đĩa đặt một led phát hồng ngoại và bên
kia đặt một transitor thu quang thẳng hàng. Với mạch thu phát như hình
6


trên, khi đĩa quay, chỗ có lỗ, ánh sáng hồng ngoại sẽ chiếu vào transistor
thu quang, transistor sẽ dẫn và ta thu được tín hiệu ra mức “0” và ngược
lại, chỗ không có lỗ, ánh sáng hồng ngoại sẽ không chiếu vào transistor
được, transistor không dẫn và ta thu được tín hiệu ra mức “1”. Giả sử rằng
trên đĩa quay ta khoét một lỗ duy nhất thì khi ta nhận được một xung tín
hiệu ra nghĩa là đĩa đã quay được một vòng. Đây chính là nguyên lý cơ
bản của encoder.
d. Ứng dụng của Encoder
Trong thực tế, encoder thường được dùng để:
- Đo tôc độ động cơ, điều khiển tốc độ động cơ.
- Xác định góc dịch chuyển, hướng dịch chuyển.
- Đo khoảng dịch chuyển của vật, vận tôc của vật thông qua đo tốc
độ vòng quay.

- Ứng dụng nhiều trong các lĩnh vực tự động công nghiệp, robot,
hàng không,..
2.1.2. Encoder tuyệt đối
Đĩa quay của encoder tuyệt đối gồm nhiều vòng tròn đồng tâm tạo thành
những “dải băng” có xẻ rãnh theo quy luật mã nhị phân hay mã Gray. Encoder
tuyệt đối có nhiều bộ thu phát hồng ngoại, tương ứng với số “dải băng”, mỗi bộ
thu phát hồng ngoại cho ra một bit tín hiệu. Số bit tín hiệu ra (n) cũng tương ứng
với số “dải băng”, mã hóa được 2n trạng thái góc quay.

7


Hình 2.2. Cấu tạo encoder tuyệt đối

Hình 2.3. Đĩa quay encoder tuyệt đối
Ta thấy ở hình trên là một đĩa quay encoder tuyệt đối với ba “dải băng”
tương ứng với 8 trạng thái góc được mã hóa. Với 3 bộ thu phát hồng ngoại ta thu
được tín hiệu ra gồm 3 bit, tương ứng theo chiều ngược kim đồng hồ sẽ là: 000,
001, 010, 011, 100, 101, 110, 111. Độ chính xác về góc quay trong trường hợp
8


này là 40o. Khi số “dải băng” tăng lên, ta có thể mã hóa được nhiều trạng thái
góc hơn, tương ứng với độ chính xác về góc tăng lên đáng kể.
2.1.3. Encoder tương đối

Hình 2.4. Đĩa quay của encoder tương đối
Encoder tương đối về cơ bản có cấu tạo như encoder tuyệt đối, nhưng đĩa
quay chỉ có một dải băng trên đó có các lỗ (rãnh) phân bố đều nhau. Giả sử đĩa
encoder có 8 lỗ như hình trên, khi ta đọc được 8 xung nghĩa là đĩa đã quay được

một vòng.
Tuy nhiên, đôi khi do tác động của nhiễu có thể làm thay đổi số lượng
xung thu được, nếu hoạt động lâu dài, sai số này sẽ tích lũy dẫn đến sai số lớn.
Để khắc phục điều này, người ta đục thêm một lỗ định vị để đếm số vòng đã
quay của encoder. Bằng việc đối chiếu 2 tín hiệu thu được, ta có thể kiểm soát
và khắc phục được sự sai lệch.

9


2.2. VI ĐIỀU KHIỂN ATMEGA8
2.2.1. Tổng quan về vi điều khiển Atmega8
Atmega8 là vi điều khiển thuộc họ AVR do hãng Intel sản xuất. Đây là
loại chip thuộc dòng AVR mới nhất, nó có kích thước nhỏ gọn nhưng đầy đủ các
tính năng của một AVR.

Hình 2.5. Vi điều khiển Atmega8
Sơ đồ chân của Atmega8 như sau:

Hình 2.6. Sơ đồ chân của Atmega8
Các thông số cơ bản:
• Tốc độ tối đa: 16MHz.
• Bộ nhớ chương trình: 8 KB
• Bộ nhớ RAM: 1 KB
• Bộ nhớ EPROM: 512 Byte
10


• Bộ nhớ chương trình có khả năng ghi 10.000 lần, bộ nhớ EEPROM có thể
ghi 100.000 lần. Hỗ trợ bootloader, có khả năng tự ghi vào bộ nhớ chương

trình, cập nhật chương trình cho chip mà không cần mạch nạp.
• 23 cổng I/O
• Timer 8 bit: 2
• Timer 16 bit: 1
• ADC: 6 kênh, 10 bit
• Giao tiếp: TWI (I2C), USART, SPI
• Điện áp hoạt động:

Atmega8L: 2.7V – 5.5V.
Atmega8: 4.5V – 5.5V.

2.2.2. Cấu trúc chung của vi điều khiển Atmega8

Hình 2.7. Cấu trúc vi điều khiển Atmega8

11


Để tối ưu hóa hiệu suất và tốc độ xử lý, Atmega8 có cấu trúc Harvard,
trong đó đường truyền cho bộ nhớ dữ liệu và bộ nhớ chương trình được tách
riêng.
ALU (Arithmetic Logic Unit) được xem như CPU của Atmega8. 32 thanh
ghi trong Register File được kết nối trực tiếp với ALU bằng hai đường, do đó
trong 1 chu kì xung nhịp ALU có thể truy xuất trực tiếp 2 thanh ghi RF cùng
một lúc.
Các instruction được chứa trong bộ nhớ chương trình (Flash memory)
dưới dạng các thanh ghi 16 bit. Trong mỗi chu kì xung nhịp, instruction chứa
trong bộ nhớ chương trình sẽ được load vào trong instruction register,
instruction register tác động và chọn register file cũng như RAM cho ALU thực
thi. Trong quá trình thực thi chương trình, địa chỉ của dòng lệnh đang thực thi

được quyết định bởi bộ đếm chương trình (Program counter).
Cấu trúc bộ nhớ Atmega8 bao gồm bộ nhớ chương trình và bộ nhớ dữ
liệu.
Bộ nhớ chương trình (program memory) là 8KB bộ nhớ Flash lập trình
được. Do các lênh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ chương trình
được sắp xếp theo kiểu 4Kx16. Bộ nhớ chương trình gồm Application Flash
Section và trong chip AVR mới ta có thêm phần Boot Flash setion. Application
Flash Section bao gồm 2 phần : phần chứa các mã lệnh (instruction) và phần
chứa các vector ngắt (interrupt vectors). Các vector ngắt nằm ở phần đầu của bộ
nhớ chương trình từ 0x000 đến 0x012, tiếp ngay sau đó là phần chứa các
instruction.

12


Hình 2.8. Bộ nhớ chướng trình của Atmega8
Bộ nhớ dữ liệu (data memory) là phần chứa các thanh ghi quan trọng của
chip. Bộ nhớ dữ liệu gồm:
Phần đầu của bộ nhớ dữ liệu bao gồm 32 thanh ghi từ R0 đến R31 trong
register file có địa chỉ tuyệt đối từ 0x0000 đến 0x001F có các đặc điểm:
- Được truy nhập trực tiếp trong quá trình thực thi chương trình.
- Register file được kết nối trực tiếp tới ALU.
- Các phép toán thực hiện trên thanh ghi chỉ trong 1 xung clock.
- Chúng là nguồn chứa các số hạng trong phép toán và là đích chứa kết
quả trả lại của phép toán.
- Các thanh ghi từ R26 tới R31 ngoài chức năng thông thường nó còn
từng đôi một tạo thành các thanh ghi 16 bit X, Y, Z được dùng làm con trỏ trỏ
tới bộ nhớ chương trình và bộ nhớ dữ liệu .Thanh ghi con trò X, Y có thể dùng
làm con trỏ trỏ tới bộ nhớ dữ liệu, còn thanh ghi Z có thể dùng làm con trỏ trỏ
tới bộ nhớ chương trình.

Vùng nhớ I/O (I/O registers) nằm ngay sau register file, gồm 64 thanh ghi
nhập/xuất. Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Tất
cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây.
Vùng nhớ I/0 có địa chỉ từ 0x0020 đến 0x005F
RAM tĩnh, nội (internal SRAM), là vùng chứa các biến trong lúc thực thi
chương trình. Ram tĩnh có địa chỉ từ 0x0060 đến 0x045F.
13


512 byte bộ nhớ EEPROM (Electrically Ereasable Programmable ROM),
bộ nhớ này không bị xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất
thích hợp cho các ứng dụng lưu trữ dữ liệu. Phần bộ nhớ EEPROM được tách
riêng biệt và có địa chỉ từ 0x0000.

Hình 2.9. Cấu trúc bộ nhớ dữ liệu
2.2.3. Điều khiển vào ra I/O
Atmega8 có 23 chân xuất nhập chia làm 3 cổng vào ra là cổng A, cổng B
và cổng C. Việc cấu hình, điều khiển các cổng được thực hiện thông qua 3
thanh ghi: DDRx, PORTx và PINx. Các thanh ghi này có thể truy xuất từng bit
để có thể điều khiển từng chân của mỗi cổng.
-

DDRx: quy định chiều của chân, nếu DDRx=1: chân được cấu hình làm

đầu ra, nếu DDRx=0 chân được cấu hình làm đầu vào.
-

PORTx: nếu PORTx=1 khi chân được cấu hình làm đầu vào thì sẽ kích

hoạt điện trở treo dương tại chân tương ứng. Để vô hiệu hóa trở treo này thì

PORTx phải được gán 0 hoặc chân được cấu hình làm đầu ra (DDRx=1).
Nếu chân được cấu hình làm đầu ra (DDRx=1): Nếu PORTx=1 thì chân tương
ứng sẽ được đưa lên mức cao, ngược lại nếu PORTx=0 thì chân tương ứng sẽ
được đưa xuống mức thấp.

14


-

PINx: Đọc dữ liệu từ chân VĐK, độc lập với cấu hình chiều của chân,

trạng thái của chân có thể được đọc thông qua các bit của thanh ghi PINx.
2.2.4. Timer/counter
Vi điều khiển Atmega8 được thiết kế với 3 bộ Timer/Counter là
Timer/counter 0, timer/counter 1 và timer/counter 2. Các bộ timer/counter được
sử dụng cho các chức năng định thời, đếm sự kiện, tạo xung điều rộng PWM,
hoặc sử dụng như các bộ căn chỉnh thời gian trong các ứng dụng thời gian thực
(chỉ có ở timer/counter 2). Trong nội dung đồ án này, ta sẽ tìm hiểu 2 bộ
timer/counter 0 và timer/counter 1.
a. Timer/counter 0
Đây là một bộ định thời có độ dài 8bit, liên tục đếm từ 0-255 và tràn khi
đạt 256 lúc này bộ đếm trở về 00H và cờ tràn TOV0 được set lên 1, có thể xảy
ra 1 ngắt nếu có khai báo ngắt timer này.
Các thanh ghi phụ trách điều khiển Timer/counter 0:
- Thanh ghi TCCR0: Là thanh ghi điều khiển quá trình hoạt động của bộ
timer/counter 0

Tuy là thanh ghi 8 bit nhưng chỉ có 3 bit được sử dụng, có tác dụng chọn
xung clock cho bộ timer/counter 0, cứ mỗi xung clock là bộ đếm tăng lên 1 đơn

vị.
CS02 CS01 CS00

Miêu tả chức năng

0

0

0

Không có xung clock - Timer/counter 0 Stop

0

0

1

Fosc/1 - Bằng xung nhịp đưa vào chip

0

1

0

Fosc/8 - Tần số thạch anh chia 8

0


1

1

Fosc/64 - Tần số thạch anh chia 64

1

0

0

Fosc/256 - Tần số thạch anh chia 256

1

0

1

Fosc/1024 - Tần số thạch anh chia 1024

1

1

0

Đếm sự kiện bên ngoài ở chân T0 cạnh xuống

15


1

1

1

Đếm sự kiện bên ngoài ở chân T0 cạnh lên

Bảng 2.1. Lựa chọn xung clock cho bộ timer/counter 0
- Thanh ghi TIMSK: Là thanh ghi mặt nạ ngắt, ta chỉ quan tâm tới bit
TOIE0, nếu set bit này lên 1 thì sẽ có ngắt tràn xảy ra khi bộ đếm tràn.

- Thanh ghi TIFR: Là thanh ghi lưu trạng thái cờ tràn của tất cả các timer,
ở timer/counter 0 chỉ có bit TOV0 là cờ tràn và cũng là cờ chỉ thị ngắt.

- Thanh ghi TCNT0: Là thanh ghi chứa giá trị đếm của timer/counter 0, ta
sẽ ghi dữ liệu khởi tạo timer vào đây, mặc định là 00H.
b. Timer/counter 1
Timer/counter 1 là bộ timer/counter 16 bit đa với các chức năng như định
thời, đếm sự kiện, tạo xung PWM, Clear Timer on Compare Match (xóa timer
nếu xảy ra bằng trong so sánh),…
Do là bộ timer/counter 16 bit, trong khi bộ nhớ dữ liệu của Atmega8 là 8
bit, nên ta sẽ bắt gặp những cặp thanh ghi chứa byte cao và byte thấp của giá trị
16 bit:
- Thanh ghi TCNT1H và TCNT1L: 2 thanh ghi này tạo thành 1 thanh ghi
16 bit TCNT1, là thanh ghi chứa giá trị đếm của timer/counter 1.


- Thanh ghi TCCR1A và TCCR1B: đây không phải là dạng byte cao và
byte thấp của 1 thanh ghi 16 bit mà là 2 thanh ghi độc lập điều khiển hoạt động
của timer/counter 1

16


Ta để ý thấy thanh ghi TCCR1B có 3 bit là CS12, Cs11 và CS10. Ba bit
này để chọn xung nhịp cho timer/counter 1, với các giá trị và chức năng giống
hệt với timer/counter 0.
- Thanh ghi ICR1: Trong quá trình timer/counter 1 hoạt động, giá trị trong
thanh ghi TCNT1 sẽ tăng dần, khi có một sự kiện trên chân ICP1, thanh ghi
ICR1 sẽ bắt giá trị của TCNT1 và có thế xảy ra 1 ngắt. Đây gọi là chế độ Input
Capture.
- Thanh ghi OCR1A và OCR1B: dùng trong chế độ so sánh. Cụ thể, trong
quá trình timer/counter 1 hoạt động, giá trị TCNT1 tăng dần và được so sánh
độc lập và liên tục với 2 thanh ghi này. Khi giá trị so sánh bằng nhau thì sẽ xảy
ra 1 ngắt hoặc 1 sự thay đổi nào đó trên chân OC1A hoặc OC1B.
- Thanh ghi TIMSK: thanh ghi này cũng được sử dụng cho timer/counter
1 do các bộ timer/counter dùng chung thanh ghi mặt nạ ngắt.

Có 4 bit được sử dụng cho timer/counter 1 là:
• TOIE1: cờ tràn và cũng là cờ chỉ thị ngắt cho timer/counter 1
• OCIE1B: cho phép ngắt khi TCNT1=OCR1B
• OCIE1A: cho phép ngắt khi TCNT1=OCR1A
• TICIE1: cho phép ngắt trong trường hợp Input Capture
- Thanh ghi TIFR: thanh ghi cờ nhớ cho các bộ timer/counter. Các bit từ 2
đến 5 là danhg cho timer/counter 1.

17



2.2.5. Truyền thông nối tiếp USART
Bộ truyền thông nối tiếp trên Atmega8 có thể hoạt động ở nhiều chế độ, ở
đây ta chỉ xét chế độ bất đồng bộ. Chuẩn truyền thông USART sử dụng 2 mức
logic theo chuẩn TTL – mức logic 0 tương ứng 0V, mức logic 1 tương ứng từ 35V.
Khi sử dụng bộ truyền thông nối tiếp trên Atmega8, ta chỉ cần quan tâm
đến 2 chân Tx và Rx. Tx là chân truyền dữ liệu đi còn Rx là chân nhận dữ liệu
về.
Các thanh ghi tham gia điều khiển:
- Thanh ghi UDR: là thanh ghi dữ liệu. Đây là thanh ghi 8 bit chứa giá trị
phát đi cũng như giá trị nhận về của USART. Ta cũng có thế coi nó là 2 thanh
ghi bộ đệm nhận và bộ đệm truyền có cùng địa chỉ.

- Thanh ghi UCSRA : là thanh ghi trạng thái của USART.

Các bit trạng thái:
• RXC: báo quá trình nhận kết thúc
• TXC: báo quá trình ngắt kết thúc
• UDRE: báo thanh ghi dữ liệu trống và sẵn sàng ghi dữ liệu truyền
đi
• FE: báo lỗi khung truyền
• DOR: báo tràn dữ liệu
• PE: báo lỗi pariry
• U2X: bit set nhân đôi tốc đọ truyền. Khi U2X=1, tốc độ truyền
được nhân đôi

18



• MPCM: bit chọn chế độ hoạt động đa xử lý
- Thanh ghi UCSRB : là thanh ghi mặt nạ ngăt và điều khiển USART

Ý nghĩa các bit:
• RXCIE: cho phép ngắt nhận dữ liệu.
• TXCIE: cho phép ngắt truyền dữ liệu.
• UDRIE: cho phép ngắt khi thanh ghi dữ liệu UDR trống.
• RXEN: cho phép nhận dữ liệu trên chân RX.
• TXEN: cho phép truyền dữ liệu trên chân TX.
• UCSZ2: bit này kết họp với 2 bit trong thanh ghi UCSRC quy định
độ dài dữ liệu.
• RXB8: là bit 8 trong chế độ truyền dữ liệu 9 bit của Atmega8
• TXB8: là bit 8 trong chế độ nhận dữ liệu 9 bit của Atmega8.
• Thanh ghi UCSRC: thanh ghi quy định khung truyền và chế độ
truyền.

Ý nghĩa các bit:
• URSEL: bit chọn thanh ghi, do 2 thanh ghi UCSRC và UBRRH
(thanh ghi cao quy định tốc độ baud) có cùng địa chỉ. Khi
URSEL=1 thanh ghi này là UCSRC, khi URSEL=0 thanh ghi này
là UBRRH.
• UMSEL: lựa chọn giữa chế độ truyền đồng bộ và không đồng bộ.
• UPM1 và UPM0: 2 bit lựa chọn cách thức kiểm tra Parity.
UPM1
0
0

UPM0
0
1


Chế độ parity
Không sử dụng parity
Không sử dụng
19


×