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ẻ, độ 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 cuả chúng ta ngày càng hiện đại và tiện nghi hơn.
74 trang |
Chia sẻ: tuandn | Lượt xem: 6927 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Vi điều khiển AVR, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỀ TÀI VI ĐIỀU KHIỂN AVR
XXXXXXXXXXXX
Thành viên:
Võ Đình Chinh MSSV: 07520456 KTMT02
Phạm Hoài Phước MSSV: 07520292 KTMT02
Trần Minh Tính MSSV: 07520362 KTMT02
Huỳnh Thanh Long MSSV: 07520588 KTMT02
GVHD: ThS Lê Hoài Nghĩa
Tp Hồ Chí Minh 20/055/2010
LÔØI GIỚI THIỆ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ẻ, độ 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 cuả chúng ta ngày càng hiện đại và tiện nghi hơn.
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ì kiến thức có hạn nên trong nội dung đề tài chắc chắn không tránh khỏi thiếu sót. Nhóm chúng em xin gửi lời cám ơn đến thầy Lê Hoài Nghĩa và sẽ cố gắng hoàn thiện trong những lần báo cáo sau.
Thay mặt nhóm
Võ Đình Chinh
MỤC LỤC
&1 – GIỚI THIỆU AVR MCU ATMEL ……………………………01
I – Tổng quan về AVR …………………………………………………………..01
Giới thiệu ………………………………………………………………….01
Ưu thế của MCU AVR ……………………………………………………01
Một số dòng AVR ………………………………………………………...02
II – Một số dòng AVR phổ biến ………………………………………………..03
&2 – ATMEGA16 – KIẾN TRÚC TỔNG QUAN ……………….05
I – Ưu điểm ………………………………………………………………………05
II – Kiến trúc …………………………………………………………………….05
Sơ đồ chân ………………………………………………………………...05
Sơ đồ khối …………………………………………………………………06
Các port xuất nhập ………………………………………………………...06
Các chân khác ……………………………………………………………..07
III – Các khối chính ……………………………………………………………..07
CPU ……………………………………………………………………….07
Con trỏ ngăn xếp SP ………………………………………………………09
Memory …………………………………………………………………...10
Quá trình thực thi lệnh …………………………………………………….12
&3 – CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA16….13
I – Input & Ouput ……………………………………………………………….13
Giới thiệu ………………………………………………………………….13
Cấu tạo chân ……………………………………………………………….14
Thiết lập truy xuất I/O ………………………………….………………….15
II – Timer & Counter ……………………………………………………………16
Giới thiệu …………………………………………………………………..16
Cấu trúc bộ định thời 8 bit Timer 0 ………………………………………..16
Mô tả chi tiết các thanh ghi của bộ định thời ………………………………19
Sử dụng timer/counter ……………………………………………………..21
Các chế độ hoạt động của Timer 0 …………………………………………21
Các bước sử dụng Timer …………………………………………………..24
III – Interrupt …………………………………………………………………….25
Giới thiệu …………………………………………………………………..25
Ngắt ngoài ATMEGA16 …………………………………………………..26
Các thanh ghi phục vụ ngắt ………………………………………………..27
Thiết lập ngắt ngoài ………………………………………………………..28
IV – ADC …………………………………………………………………………30
Giới thiệu …………………………………………………………………..30
Cấu trúc …………………………………………………………………….30
Các thanh ghi điều khiển ADC …………………………………………….31
Quá trình chuyển đổi ADC ………………………………………………...37
Các bươc lập trình điều khiển ADC ……………………………………….38
V – USART ……………………………………………………………………….39
Giới thiệu …………………………………………………………………..39
Cấu trúc của một USART ………………………………………………….40
Tạo xung clock cho USART ……………………………………………….41
Một số khái niệm liên quan đến USART …………………………………..42
Các thanh ghi điều khiển USART ………………………………………….44
Sử dụng USART …………………………………………………………..49
VI – SPI …………………………………………………………………………..51
Giới thiệu …………………………………………………………………..51
Cấu trúc của một SPI ………………………………………………………54
Các thanh ghi điều khiển SPI ………………………………………………55
Sử dụng SPI ………………………………………………………………..59
VII – TWI-I2C …………………………………………………………………...61
Giới thiệu …………………………………………………………………..61
Cấu trúc của một I2C ………………………………………………………64
Các thanh ghi điều khiển I2C ………………………………………………65
Sử dụng TWI-I2C ………………………………………………………….68
Kết luận …………………………………………………………………………...70
&1. GIỚI THIỆU AVR MCU ATMEL
Tổng quan về AVR:
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 dual-CPU 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í.
Hình vẽ:
Ư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 (features) 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
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).
Một số dòng AVR:
Nhìn chung AVR có các dòng chính sau:
* tinyAVR — the ATtiny series
1–8 kB program memory
6–32-pin package
Limited peripheral set
* megaAVR — the ATmega series
4–256 kB program memory
28–100-pin package
Extended instruction set (Multiply instructions and instructions for handling larger program memories)
Extensive peripheral set
* XMEGA — the ATxmega series
16–384 kB program memory
44–64–100-pin package (A4, A3, A1)
Extended performance features, such as DMA, "Event System", and cryptography support.
Extensive peripheral set with DACs
* Application specific AVR
megaAVRs with special features not found on the other members of the AVR family, such as LCD controller, USB controller, advanced PWM, CAN etc.
Một số dòng AVR phổ biến:
AT90S1200
AT90S2313
AT90S2323 and AT90S2343
AT90S2333 and AT90S4433
AT90S4414 and AT90S8515
AT90S4434 and AT90S8535
AT90C8534
ATtiny10, ATtiny11 and ATtiny12
ATtiny15
ATtiny22
ATtiny26
ATtiny28
ATmega8/8515/8535
ATmega16
ATmega161
ATmega162
ATmega163
ATmega169
ATmega32
ATmega323
ATmega103
ATmega64/128/2560/2561
&2. ATMEGA16 – KIẾN TRÚC TỔNG QUAN
Ư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.5-5.5 .
Kiến trúc:
Sơ đồ chân:
Sơ đồ khối:
Các Port xuất nhập:
Port A:
Port A là bên cạnh là 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:
Là 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:
Là port xuất nhập thông thường 8 bit.
Các chân khác:
VCC, AVCC, AREF, XTAL1, XTAL2, RESET
Các khối chính:
CPU:
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.
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.
Thanh ghi trạng thái:
Đâ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 For signed tests (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ụ.
Thanh ghi chức năng chung:Atmega 16 có 32 thanh ghi chức năng chung thực thi nhiều tác vụ trong đó:
Một 8 bit output toán hạng và một 8 bit cho input kết quả.
Hai 8 bit output toán hạng và một 8 bit cho input kết quả.
Hai 8 bit cho output kết quả và một 16 bit cho input kết quả.
Một 16 bit cho output toán hạng và một 16 bit cho input kết quả.
Con trỏ ngăn xếp SP:
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 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.
Khia 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.
Memory:
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 8KX16.
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. Boot 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. 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ỉ đó.
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.
Phần 2: là phần nằm ngay sau SFR bao gồm 64 thanh ghi IO hay còn gọi là vùng nhớ IO. 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ư S
RAM 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.
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.
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.
&3.CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA 16
Input & Output:
Giới thiệu:Vi điều khiểnATmega16có 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.
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.
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 P 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ểnsẽ có giá trị là 000.
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.
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 uA .
Bảng trạng thái truy xuất I/O:
Giản đồ xung khi truy cập chân:
Thiết lập truy xuất I/O:
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).
Write:
Đư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
Code Example:#include #include #include int main(void){ DDRB=0xFF; //PORTB la output PORT PORTB=0x00; DDRD=0x00; //PORTD la input PORT PORTB=0xFF; while (1){ //vòng lặp vô tận //do nothing } return 0;}
Timer&Counter:
Giới thiệu:Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit/16 bit, Atmega 16 có 4 bộ định thời là Timer 0-Timer 2 8 bit và Timer 1 16 bit dùng để định thời gian và đếm sự kiện với các đặc điểm 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
Cấu trúc bộ định thời 8 bit Timer 0:
Sơ đồ khối:
Các thanh ghi:
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK. Bộ định thời có thể sử dụng xung clock nội thông 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ộ định thời/bộ đếm sẽ dùng 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 (clkT0). Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại chân OC0.
Đơn vị đếm:
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình
được. Cấu trúc của nó như hình dưới đây:
count: tăng hay giảm TCNT0 1
direction: lựa chọn giữa đếm lên và đếm xuống
clear: xóa thanh ghi TCNT0
clkT0: 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ộ định thời đã giảm đến giá trị nhỏ nhất (0)
Đơn vị so sánh ngõ ra:
Bộ so sánh 8 bit liên 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 một ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi. Cờ OCF0 cũng có thể được xóa bằng phần mềm.
Mô tả chi tiết các thanh ghi của bộ định thời:Có 4 thanh ghi được thiết kế riêng cho hoạt động và điều khiển T/C0, đó là:
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 sóng.
Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng. 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 sóng sẽ được sử dụng.
Bit 5:4-COM01:0: 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.
Bit 2:0: CS02:0: Chọn xung đồng hồ
Bảng trạng thái:
Thanh ghi bộ định thời/ đếm TCNT0:
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.
Thanh ghi ngõ ra so sánh OCR:
Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của bộ đếm.
Thanh ghi mặt nạ ngắt TIMSK:
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 tức bit số 0 (bit đầu tiên) trong thanh ghi này là liên quan đến T/C0, bit này có tên là bit cho phép ngắt khi có tràn ở T/C0. Tràn (Overflow) là hiện tượng xảy ra khi bộ giá trị trong thanh ghi TCNT0 đã đạt đến MAX (255) và lại đếm thêm 1 lần nữa.
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:
Là thanh ghi cờ nhớ cho tất cả các bộ T/C. Trong thanh ghi này bit số 0, TOV0 là cờ chỉ thị ngắt tràn của T/C0. Khi có ngắt tràn xảy ra, bit này tự động được set lên 1.
Bit 1-OCF0: Cờ so sánh ngõ ra 0
Bit 0-TOV0: Cờ tràn bộ đếm
Sử dụng timer/Counter:Một số giá trị cần lưu ý khi sử dụng Timer/Counter:
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 (tức 255 trong hệ thập phân), với bộ T/C 16 bit thì MAX bằng 0xFFFF (65535).
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ể thanh đổ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