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

Điều khiển tốc độ động cơ DC sử dụng 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 (1.24 MB, 45 trang )

Đồ án học phần 1D
MỤC LỤC

1


Đồ án học phần 1D

LỜI MỞ ĐẦU
Từ khi công nghệ chế tạo loại vi mạch lập trình ra đời đã đem đến các kỹ thuật điều
khiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạch điều khiển lắp ráp
bằng các linh kiện rời như kích thước nhỏ, giá thành rẻ, khả năng làm việc tin cậy, công
suất tiêu thụ nhỏ. Hàng loạt nhà sản xuất MCU ra đời như Atmel, Philip, Motorola với
hàng loạt chip với nhiều tính năng vô cùng phong phú và đa dạng. Ngày nay, lĩnh vực
điều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản phẩm phục vụ cho nhu cầu
sinh hoạt hàng ngày của con người như máy giặt, đồng hồ báo giờ….. đã giúp cho đời
sống của chúng ta ngày càng hiện đại và tiện nghi hơn. Bên cạnh đó, động cơ servo với
nhiều kiểu dáng và kích thước cũng ngày càng được ứng dụng trong những thiết bị yêu
cầu có độ chính xác cao về tốc độ và số vòng quay, hoạt động linh hoạt với nhiều chức
năng khác nhau như trong những cánh tay rôbốt trong công nghiệp, rôbốt dò phá bom
mìn trong quân đội, các động cơ trong mô hình xe hơi, máy bay, máy CNC …
Trong số những nhà sản xuất MCU 8 bit thì Atmel đã trở nên quá quen thuộc với
giới sinh viên, kỹ thuật Việt Nam. Nhóm chúng em tìm hiểu đề tài về MCU AVR – một
trong những MCU được sử dụng rất rộng rãi trong kỹ thuật điều khiển vì vậy nhóm em
xin chọn đề tài: “ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG VI ĐIỀU
KHIỂN AVR”. Vì thời gian và kiến thức có hạn nên trong nội dung đề tài chúng em chỉ
dừng lại đến việc điều khiển tốc độ động cơ ở chế độ không tải bằng cách tăng giảm thời
gian TON của xung PWM, đảo chiều quay, hãm động cơ và hiển thị các thông số này trên
LCD

2




Đồ án học phần 1D

LỜI CẢM ƠN

Trong quá trình thực hiện đồ án chúng em đã nhận được sự hướng dẫn và giúp đỡ
tận tình của thầy HOÀNG ĐÌNH KHÔI. Chúng em xin chân thành cảm ơn thầy cùng
toàn thể thầy cô trong Khoa Điện.
Đồng thời tôi cũng xin chân thành cảm ơn các bạn trong lớp ĐHĐI5B đã đóng góp ý
kiến và cung cấp một số tài liệu giúp đỡ chúng em.
Dù đã cố gắng rất nhiều, nhưng do đây là lần đầu tiên làm Đồ Án vì vậy trong quá
trình làm còn có những thiếu sót. Nên nhóm chúng em rất mong nhận được sự góp ý của
quý thầy cô và toàn thể các bạn.

3


Đồ án học phần 1D
Nhận xét
(Của giáo viên hướng dẫn)
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
TPHCM, ngày … tháng … năm 2014
Giáo viên hướng dẫn

Nhận xét
(Của giáo viên phản biện)
4


Đồ án học phần 1D
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
TPHCM, ngày … tháng … năm 2014
Giáo viên phản biện

5


Đồ án học phần 1D
PHẦN 1. VI ĐIỀU KHIỂN AVR
I. GIỚI THIỆU AVR MCU ATMEL
1. Giới thiệu:
AVR là một họ vi điều khiển do hãng Atmel sản xuất. Atmel cung cấp các vi điều
khiển phổ biến như 8051, AT91, ARM7, Atmel AVR 8-bit RISC, và mới đây là DSP dualCPU AT57. Atmel AVR32 là một vi điều khiển lai DSP với 7 tầng pipeline và khả năng
thực thi song song. AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa –
RISC (Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế
trong các bộ xử lí.


Atmel ATMEGA16
2. Ưu thế của MCU AVR
Kết nối phần cứng cho AVR đơn giản với những linh kiện thông dụng như điện
trở, tụ điện, thạch anh. Dòng ra điều khiển Port lớn và không cần dùng điện trở kéo.
Thiết kế mạch nạp cho AVR khá đơn giản giao tiếp qua cổng LPT, COM, USB. Hỗ
trợ ISP lập trình trực tiếp trên mạch. Hỗ trợ lập trình trên nền ngôn ngữ ASM, C với
nhiều công cụ hỗ trợ như CodeVision, AVR Studio.
Hầu hết các chip AVR có những tính năng sau:
-

Xung External OSC lên đến 16Mhz và Internal OSC 8Mhz.
Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn
có thể ghi và xóa trên 1000 lần. Bên cạnh đó bộ nhớ EEPROM có thể lập trình

-

được.
32 Port xuất nhập.
8 bits, 16 bits timer/counter tích hợp PWM.
Các bộ chuyển đối Analog – Digital phân giải 10 bits
6


Đồ án học phần 1D
-

Analog comparator.
Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232).
Giao diện nối tiếp Two -Wire -Serial (tương thích chuẩn I2C) Master và Slaver.
Giao diện nối tiếp Serial Peripheral Interface (SPI).

3. Một số dòng AVR phổ biến

- AT90S1200; AT90S2313
- AT90S2323; AT90S2343; AT90S2333; AT90S4433
- AT90S4414; AT90S8515; AT90S4434; AT90S8535
- ATtiny10; ATtiny11; ATtiny12; ATtiny15; ATtiny22; ATtiny26
- ATmega8/8515/8535; ATmega16;

ATmega161; ATmega162;

ATmega163;

ATmega169; ATmega32; ATmega323; ATmega103; ATmega64/128/2560/2561
II. ATMEGA16 – KIẾN TRÚC TỔNG QUAN
1. Ưu điểm:
-

Tốc độ xử lý cao, tiêu thụ điện năng thấp

-

Kiến trúc 131 tập lệnh thưc thi hầu hết trong mỗi chu kỳ xung clock

-

32x8 thanh ghi đa dụng

-

Đạt tốc độ tối đa 16MIPS ở 16Mhz xung clock


-

Dung lượng bộ nhớ: 16Kb Flash, 512 EEPROM, 1kb Internal SRAm

-

Khả năng ghi và xóa có thể đạt đến 10000 lần, lưu trữ trong thời gian dài trên
20 năm/85oC-100 năm 25oC.

-

Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit

-

2 bộ Timer 16 bit, 1 bộ timer 16 bit, 4 kênh PWM

-

8 kênh ADC 10 bit, 32 port xuất nhập

-

Hỗ trợ gioa tiếp I2C, USART, SPI

-

Hoạt động tốt ở hiệu điện thế 4.5V - 5.5 V


7


Đồ án học phần 1D
2. Cấu trúc Atmega16
2.1 Sơ đồ chân

8


Đồ án học phần 1D
2.2 Sơ đồ khối:
2.3 Các PORT xuất nhập:
PORT
L

A:

à

PORT

xuất nhập thông
thường 8 bit còn
được thiết kế cho

bộ

ADC chuyển đổi
tương


tự

số.

PORT A thiết kế
với

điện trở nội treo

lên ở

mức cao.
PORT B:

PORT



xuất nhập thông
thường 8 bit.
PORT C: Là PORT

xuất

nhập
thường

thông
8


bit.

Bên

cạnh đó PORT C

còn

có một số chân

giao

tiếp JTAG PC5-

TDI,

PC3-TMS, PC2 –

TCK.
PORT D:
PORT



xuất nhập thông
thường 8 bit.
Các chân khác:

VCC, AVCC, AREF,


9

XTAL1, XTAL2, RESET


Đồ án học phần 1D
3. Các khối chính:
3.1 CPU:

10


Đồ án học phần 1D
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data
memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được
tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại
vi, với register file. Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục
vụ cho instruction registers.
3.2 ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán được
thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3 loại: đại số,
logic và theo bit.
3.3 Thanh ghi trạng thái SREG
Đây là thanh ghi 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và
logic.

-

C: Carry Flag cờ nhớ.

Z: Zero Flag Cờ zero.
N: Negative Flag kết quả phép toán âm.
V: Two’s complement overflow cờ bù 2.
S: Sign bit (S=N XOR V) kiểm tra 2 cờ N và V.
H: Half Carry Flag được sử dụng trong BCD cho một số toán hạng.
T: Transfer bit used by BLD and BST instructions được sử dụng làm nơi trung

-

gian trong các lệnh BLD, BST.
I: Global Interrupt Enable/Disable Flag đây là bit cho phép toàn cục ngắt. Nếu bit
này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.

11


Đồ án học phần 1D
3.4 Thanh ghi chức năng chung

-

Liên quan trực tiếp đến hoạt động thực hiện lệnh của CPU
Được đặt ở 32 vị trí đầu tiên trong bộ nhớ dữ liệu từ địa chỉ 00H đến 31H và không

-

nằm trong vùng địa chỉ dành cho bộ nhớ SRAM.
Các thanh ghi R26 đến R31 ngoài chức năng thông thường còn có thêm chức năng
dùng làm con trỏ 16 bít trong chế độ truy cập địa chỉ gián tiếp vào bộ nhớ dữ liệu.
3.5 Con trỏ ngăn xếp Stack Pointer:


Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức
năng đặc biệt 8 bit dùng để lưu trữ biến trong quá trình tính toán. Stack được hiểu
12


Đồ án học phần 1D
như là 1 “tháp” dữ liệu, dữ liệu được chứa vào stack ở đỉnh “tháp” và dữ liệu cũng
được lấy ra từ đỉnh. Kiểu truy cập dữ liệu của stack gọi là LIFO.
Khai báo SP tại một vùng nhớ trong SRAM với địa chỉ của SP thiết lập >$60. Con
trỏ giảm địa chỉ xuống 1 khi dữ liệu được đưa vào Stack với lệnh PUSH và hai khi có
Subroutine hoặc Interrupt được gọi. Con trỏ tăng địa chỉ lên 1 khi có lệnh POP dữ liệu
thực hiện và lên hai khi trả dữ liệu về cho chương trình con.
4. Bộ nhớ - Memory:

4.1 Bộ nhớ chương trình Flash
Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình với độ rộng 16
bit. Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo
kiểu 8K x 16.
Bộ nhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưng trong
các chip AVR mới chúng ta có thêm phần Boot Flash section. Thực chất, application
section bao gồm 2 phần: phần chứa các instruction và phần chứa interrupt vectors.
13


Đồ án học phần 1D
Các vector ngắt nằm ở phần đầu của application section từ địa chỉ 0x0000 và dài đến
bao nhiêu tùy thuộc vào loại chip và phần chứa instruction nằm liền sau đó. Các
chương trình được viết sau địa chỉ đó.
4.2 Bộ nhớ dữ liệu SRAM:


Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho chip
phần lớn là truy cập bộ nhớ này và bộ nhớ này gồm các phần sau:
Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu bao gồm 32 thanh General
Purpose Rgegister – GPR. Tất cả các thanh ghi này đều là các thanh ghi 8 bits. Tất cả
các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ
0x0000 đến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá
trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này
được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao
gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31.
14


Đồ án học phần 1D
Phần 2: là phần nằm ngay sau SFR bao gồm 64 thanh ghi I/O hay còn gọi là
vùng nhớ I/O. Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Vùng
nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O. Nếu sử dụng
instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính
từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của
chúng đựơc tính từ 0x0000 đến 0x003F.
Phần 3: Internal SRAM là vùng không gian cho chứa các biến trong lúc thực thi
chương trình.
4.3 Bộ nhớ dữ liệu EEPROM
ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, 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 tách riêng
và có địa chỉ tính từ 0x0000H.
5. Quá trình thực thi lệnh:
Giản đồ xung:

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. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock
và 1 instruction chứa trong program memory sẽ được load vào trong instruction
register, instruction register tác động và lựa chọn register file cũng như RAM cho ALU
thực thi. Trong lúc 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 một bộ đếm chương trình – PC (Program counter). Hầu hết các
instruction đều được thực thi trong 1 chu kỳ xung clock.

15


Đồ án học phần 1D
III. CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA 16
1. Input & Output
1.1 Giới thiệu
Vi điều khiển ATmega16 có 32 đường vào ra chia làm bốn PORT: PORTA –
PORTB – PORTC – PORTD mỗi PORT 8bit có thể tương tác điều khiển từng bit một. Các
cổng ra có điện trở nội kéo lên nên khi dùng chức năng Input ta không cần dùng điện
trở kéo lên ở bên ngoài. Các PORT được điều khiển bởi các bộ thanh ghi sau: thanh ghi
dữ liệu cổng PORT, thanh ghi dữ liệu điều khiển cổng DDR và cuối cùng là địa chỉ chân
vào của cổng PIN.
1.2 Thanh ghi DDR
Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác
dụng điều khiển hướng cổng PORT (tức là cổng ra hay cổng vào). Nếu như một bit
trong thanh ghi này được set thì bit tương ứng đó trên PORT được định nghĩa như
một cổng ra. Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORT
được định nghĩa là cổng vào.
1.3 Thanh ghi PORT
Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ
liệu của cổng PORT và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi
ta ghi một bit lên thanh ghi này thì chân tương ứng trên PORT đó cũng có cùng 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 lại
mang dữ liệu điều khiển cổng. Cụ thể 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 hi-Z. Thanh ghi này sau khi khởi động Vi điều khiển
sẽ có giá trị là 000.
1.4 Thanh ghi PIN
Đây là thanh ghi 8 bit chứa dữ liệu vào của PORT (trong trường hợp PORT
được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được.

16


Đồ án học phần 1D

2. Cấu tạo chân
Cấu trúc chân của AVR có thể phân biệt rõ chức năng (vào ra) trạng thái (0 1) từ
đó ta có 4 kiểu vào ra cho một chân của AVR. Khác với 89 là chỉ có 2 trạng thái duy
nhất (0 1) . Đặc biệt nguồn từ chân của AVR đủ khoẻ để điều khiển Led trực tiếp (mA)
còn 89 chỉ là vài μA .
Bảng trạng thái truy xuất I/O:

3. Thiết lập truy xuất I/O:
3.1 Read
- Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trong
port) đó là đầu vào (xóa thanh ghi DDRx hoặc bit).
- Kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx (bit).
- Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit).
3.2 Write

17



Đồ án học phần 1D
- Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trong
port) đó là đầu ra (xóa thanh ghi DDRx hoặc bit).
- Xuất giá trị ra Port.
4. INTERRUPT – Ngắt
4.1 Giới thiệu
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn
sàng cho đổi dữ liệu của mình.Ví dụ: Khi bộ truyền nhận UART nhận được một byte nó
sẽ báo cho CPU biết thông qua cờ RXC, hoặc khi nó đã truyền được một byte thì cờ TX
được thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị
trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc
vụ ngắt và thức hiện chương trình phục vụ ngắt đó cho tới khi gặp lệnh RETI (Return
from Interrupt) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình
mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu
cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo
mức ưu tiên.
Atmega 16 có các ngắt sau:

18


Đồ án học phần 1D
4.2 Ngắt ngoài – External Interrupts
Atmega16 có 3 ngắt ngoài INT0 (PORTD.2), INT1 (PORTD.3) và INT2 (PORTB.2).
Khi xảy ra một trong các sự kiện đối với các chân này:
-


Low level - Điện áp ở chân ngắt xuống mức logic 0 V
Any change - Bất kì sự thay đổi điện áp từ chân ngắt
Falling Edge - Khi có 1 sườn điện áp xuống (5V → 0V)
Rising Edge - Khi có 1 sườn điện áp lên (0V → 5V)

Sau đó 1 cờ ngắt sẽ được đưa lên 1 và báo cho biết có ngắt, nhảy đến chương trình
con thực hiện ngắt.
4.3 Các thanh ghi phục vụ ngắt
4.3.1 MCUCR – MCU Control Register.

Thanh ghi MCUCR chứa các bit cho phép chúng ta chọn 1 trong 4 MODE trên cho
các ngắt ngoài. MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài,
chúng ta chỉ quan tâm đến 4 bit thấp của nó (4 bit cao dùng cho Power manager và
Sleep Mode). Bốn bit thấp là các bit Interrupt Sense Control (ISC) trong đó 2 bit ISC11:
ISC10 dùng cho INT1 và 2 bit ISC01: ISC00 dùng cho INT0. Bảng chân trị cho các bit
ISC01, ISC00 hoàn toàn tương tự.

19


Đồ án học phần 1D
4.3.2 MCUCSR – MCU Control and Status Register

Bit 6 – ISC2: Interrupt Sense Control 2: là bit quan trọng nhất trong thanh ghi
này dùng ghi và xóa cờ ngắt INT2.
4.3.3 GICR – General Interrup Control Register

GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 3 bit cao (bit 5, 6 và bit 7) là được sử
dụng cho điều khiển ngắt. Bit 7 – INT1 gọi là bit cho phép ngắt (Interrupt Enable), set
bit này bằng 1 nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 và INT2

điều khiển ngắt INT0 và INT2.
4.3.4 GIFR – General Interrupt Flag Register

Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) có 2 bit
INTF1 và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT và INT0. Nếu có
1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1
(tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này để nhận ra
các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì
vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài.
5. TIMER – COUNTER
Timer – Counter (T/C) là các module độc lập với CPU. Chức năng chính của các
bộ T/C, như tên gọi của chúng, là định thì (tạo ra một khoảng thời gian, đếm thời gian…)
và đếm sự kiện. Trên các chip AVR, các bộ T/C còn có thêm chức năng tạo ra các xung
20


Đồ án học phần 1D
điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số T/C còn được
dùng như các bộ canh chỉnh thời gian (calibration) trong các ứng dụng thời gian thực.
Cụ thể trên chip Atmega16 có 2 bộ Timer 8 bit (T/C0 và T/C2) và 1 bộ 16 bit
(T/C1) có các chức năng sau:
-

Bộ đếm một kênh
Xóa bộ định thời khi trong mode so sánh (tự động nạp)
PWM
Tạo tần số
Bộ đếm sự kiện ngoài
Bộ chia tần 10 bit
Nguồn ngắt tràn bộ đếm và so sánh

Trước khi sử dụng các bộ T/C của AVR, có một số định nghĩa quan trọng cần

được đề cập đến:
- BOTTOM: là giá trị thấp nhất mà một T/C có thể đạt được, giá trị này luôn là 0.
- MAX: là giá trị lớn nhất mà một T/C có thể đạt được, giá trị này được quy định
bởi bởi giá trị lớn nhất mà thanh ghi đếm của T/C có thể chứa được. Ví dụ với một bộ
T/C 8 bit thì giá trị MAX luôn là 0xFF (255), với bộ T/C 16 bit thì MAX bằng 0xFFFF
(65535). Như thế MAX là giá trị không đổi trong mỗi T/C.
- TOP: là giá trị mà khi T/C đạt đến nó sẽ thay đổi trạng thái, giá trị này không
nhất thiết là số lớn nhất 8 bit hay 16 bit như MAX, giá trị của TOP có thể thay đổi bằng
cách điều khiển các bit điều khiển tương ứng hoặc có thể nhập trừ tiếp thông qua một số
thanh ghi.

21


Đồ án học phần 1D
5.1 Timer – Counter 0
5.1.1 Sơ đồ khối

5.1.2 Các thanh ghi của Timer – Counter 0
TCNT0 (Timer/Counter Register): Là 1 thanh ghi 8 bit chứa giá trị vận hành của
T/C0. Thanh ghi này cho phép đọc và ghi giá trị một cách trực tiếp.

TCCR0 (Timer/Counter Control Register): Là thanh ghi 8 bit điều khiển hoạt động
của Timer – Counter 0

22



Đồ án học phần 1D
- FOC0: Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc
không có PWM
- WGM00 và WGM01: Các bit này cho phép lựa chọn 1 trong 4 chế độ hoạt
động của T/C0 theo bảng sau:

- COM01 và 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 một hoặc cả hai bit COM01:0 được đặt lên 1, ngõ ra
OC0 sẽ hoạt động.
- CS02, CS01 và CS00: Các bit này quy định nguồn xung nhịp cấp cho T/C0
như bảng sau:

OCR0 (Output Compare Register): Thanh ghi dữ liệu so sánh chứa một giá trị 8
bít. Giá trị này sẽ được so sánh liên tiếp với giá trị đếm trong thanh ghi TCNT0. Một sự
kiện so sánh có thể gây ra một ngắt hoặc sinh ra xung ở đầu ra OC0

23


Đồ án học phần 1D
TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ cho
ngắt của tất cả các T/C trong Atmega 16, trong đó chỉ có bit TOIE0 và OCIE0 trong
thanh ghi này là liên quan đến T/C0
- OCIE0: Cho phép ngắt báo hiệu so sánh
- TOIE0: Cho phép ngắt tràn bộ đếm
TIFR
(Timer/Counter Interrupt Flag Register): Là thanh ghi cờ nhớ cho tất cả các bộ T/C.
Trong thanh ghi này bit TOV0 và OCF0 có liên quan đến T/C0
- OCF0: Cờ so sánh ngõ ra 0
- TOV0: Cờ tràn bộ đếm


5.1.3 Các chế độ làm việc của Timer – Counter 0
5.1.3.1 Normal mode
Đây là chế độ hoạt động đơn giản nhất của Timer. Bộ đếm sẽ liên tục đếm tăng lên
cho đến khi vượt quá giá trị TOP và sau đó sẽ được khởi động lại tại giá trị BOTTOM.
Trong các hoạt động thông thường thì cờ tràn sẽ được thiết lập khi giá trị trong Timer đạt
giá trị không và không bị xoá đi. Tuy nhiên nếu mà ngắt tràn được chấp nhận thì cờ ngắt
sẽ tự động bị xoá khi ngắt được thực hiện.
5.1.3.2 Chế độ so sánh (CTC)
Trong chế độ CTC, thanh ghi OCR0 được sử dụng để điều khiển (điều khiển bằng
tay – do người lập trình thực hiện) độ phân giải của bộ đếm. Trong chế độ CTC bộ đếm
bị xóa bằng 0 mỗi khi giá trị đếm trong thanh ghi TCNT0 bằng với giá trị của thanh ghi
OCR0. OCR0 định nghĩa giá trị TOP của bộ đếm cũng có nghĩa đó là độ phân giải của
nó. Chế độ này cho phép điều khiển tốt hơn tần số của đầu ra so sánh khớp. Nó cũng đơn
giản hóa hoạt động đếm sự kiện ngoài.
Ngoài ra, Timer – Counter 0 còn có 2 chế độ hoạt động nữa là Fast PWM và Phase
Correct PWM
24


Đồ án học phần 1D
5.2 Timer – Counter 2:
ATmega 16 còn có bộ Timer – Counter 2 hoạt động giống như bộ Timer – Counter
0. Ngoài ra, T/C2 còn có khả năng hoạt động không đồng bộ với chip thông qua việc
thiết lập thanh ghi ASSR (Asynchronous Status Register)

AS2: Khi AS2 = 0, T/C2 được cấp xung nhịp từ nguồn xung nhịp của hệ thống. Khi AS2
= 1, T/C2 được cấp xung nhịp từ bộ dao động bên ngoài thông qua chân TOSC1
TCN2UB: Khi T/C2 hoạt động ở chế độ không đồng bộ, bít này sẽ bằng 1. Khi
TCNT2 đã được cập nhật từ thanh ghi dữ liệu tạm thời, bít này sẽ tự động xóa bởi phần

cứng. TCR2UB = 0 nghĩa là thanh ghi TCNT2 đang sẵn sàng để có thể cập nhật một giá
trị mới.
OCR2UB: Tương tự như bit TCN2UB nhưng đối với OCR2
TCR2UB: Khi T/C2 hoạt động ở chế độ không đồng bộ, bít này sẽ bằng 1. Khi
TCCR2 đã được cập nhật từ thanh ghi dữ liệu tạm thời, bít này sẽ tự động xóa bởi phần
cứng. TCR2UB = 0 nghĩa là thanh ghi TCCR2 đang sẵn sàng để có thể cập nhật một giá
trị mới.
5.3 Timer – Counter 1
Timer – Counter 1 là bộ T/C 16 bit và có 5 chế độ hoạt động. Ngoài các chức năng
định thì thông thường, T/C 1 rất lý tưởng trong việc lập trình và đo lường vì có độ phần
giải cao (16 bit) và còn có khả năng tạo xung PWM dùng để điều khiển động cơ

25


×