Data Memory Map Register File Data Adđress Scace - Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trìnhcho chip phần lớn là truy cập bộ nhớ này và bộ nhó' này gồm cácp
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỀ TÀI VI ĐIỀU KHIỂN AVR
KTMT02KTMT02KTMT02KTMT02GVHD: ThS Lê Hoài Nghĩa
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ểnlắ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, Motorolavớ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, đồnghồ
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 MCƯ 8 bit thì Atmel đã trở nên quá quenthuộc
Thay mặt nhóm
Võ Đình Chinh
Trang 2MỤC LỤC
&1 - GIỚI THIỆU AVR MCU ATMEL 01
• I - Tổng quan về AVR 01
1 Giới thiệu 01
2 ưu thế của MCU AVR 01
&2 - ATMEGA16 - KIÉN TRÚC TỎNG QUAN 05
I - ưu điểm 05
II - Kiến trúc 05
1 Sơ đồ chân 05
2 Sơ đồ khối 06
3 Các port xuất nhập 06
&3 - CÁC MODƯLE ĐIÈƯ KHIẺN TRONG ATMEGA16 13 I - Input & Ouput 13
1 Giới thiệu 13
2 Cấ
u
tạo
14
Trang 33 Thiết lập truy xuất 1/0 15
II - Timer & Counter 16
1 Giới thiệu 16
2 Cấu trúc bộ định thời 8 bit Timer 0 16
3 Mô tả chi tiết các thanh ghi của bộ định thời 19
4 Sử dụng timer/counter 21
5 Các chế độ hoạt động của Timer 0 21
6 Các bước sử dụng Timer 24
III - Interrupt 25
1 Giới thiệu 25
2 Ngắt ngoài ATMEGA16 26
3 Các thanh ghi phục vụ ngắt 27
4 Thiết lập ngắt ngoài 28
IV-ADC 30
1 Giới thiệu 30
2 Cấu trúc 30
3 Các thanh ghi điều khiển ADC 31
4 Quá trình chuyển đổi ADC 37
5 Các bươc lập trình điều khiến ADC 38
V-ƯSART 39
1 Giới thiệu 39
2 Cấu trúc của một USART 40
3 Tạo xung clock cho USART 41
4 Một số khái niệm liên quan đến USART 42
5 Các thanh ghi điều khiển USART 44
6 Sử dụng USART 49
VI-SPI 51
1 Giới thiệu 51
2 Cấu trúc của một SPI 54
Trang 43 Các thanh ghi điều khiển SPI 55
4 Sử dụng SPI 59
VII - TVVI-I2C 61
1 Giới thiệu 61
2 Cấu trúc của một I2C 64
3 Các thanh ghi điều khiển I2C 65
4 Sử dụng TWI-I2C 68
Kết luận 70
Trang 5&1 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ấpcác vi điều khiển phổ biến như 8051, AT91 ARM7, Atmeĩ AVR 8-bitRISC, 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 songsong
AVR là chip vi điều khiến 8 bits với cấu trúc tập lệnh đơn giản RISC(Reduced Instruction Set Computer), một kiểu cấu trúc đang thể
hóa-2 Ưu thế của MCU AVR:
- Ket nối phần cứng cho AVR đơn giản với những linh kiện thông dụngnhư điện trở, tụ điện, thạch anh Dòng ra điều khiến Port lớn vàkhông
Trang 6• Xung Extemal 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)
3 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 (Muĩtiply instructions and instructionsfor handling larger program memories)
Trang 7Extensive peripheral set
* XMEGA — the ATxmega series
• 16-384 kB program memory
• 44-64-100-pin package (A4, A3, AI)
• Extended períbrmance features, such as DMA, "Event System",and cryptography support
• Extensive peripheral set with DACs
* Application specitìc AVR
• megaAVRs with special features not found on the other members ofthe AVR family, such as LCD controller, USB controller, advancedPWM, CAN etc
- AT90S1200
- AT90S2313
- AT90S2323 and AT90S2343
- AT90S2333 and AT90S4433
- AT90S4414 and AT90S8515
- AT90S4434 and AT90S8535
Trang 9- 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ỳ xungclock
- 32x8 thanh ghi đa dụng
- Đạt tốc độ tối đa 16MIPS ở 16Mhz xung clock
- Dung luợng bộ nhớ: 16Kb Flash, 512 EEPROM, lkb Internal SRAm
- Khả năng ghi và xóa có thể đạt đến 10000 lần, lưu trữ trong thờigian
dài trên 20 năm/85°C-100 năm 25°c.
- Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit
- 2 bộ Timer 16 bit, 1 bộ timer 16 bit
FAO (ADCO) FA1 (ADC1) FA2 (ADC2) RS.3 (ADC3) F%4 (ADC4) FA5 (ADC5.I PA3 (ADC6) FA7 (ADC7) AREF GND AVCC
PC7 (TOSC2) PG5 (TOSC1) PC5 (TDI) PC4 (TDO) PC3 (TMS)
TQFP/QFN/MLF
II I _
^53 5 8 0 0 0ặặặạặigĩ522
o.Q.Q.ũ.Q.O>o.a.ũ.o.
PA4 (ADC4) PA6 (ADC6) AREF GND AVCC PC7 (TOSC2) PC5 (TDI) PC4 (TDO)
Trang 102 Sơ đồ khối:
POO - PCT
3 Các Port xuất nhập:
a 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
b Port B:
- Là port xuất nhập thông thường 8 bit
c Port C:
Trang 117 6 5 4 3 2 1 0
Read;Write m R/W R/W m m R/W R/W R/
WInitial Value 0 0 0 0 0 0 0 0
Block Diagram of the AVR MCU Architecture
AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (datamemory bus) và đường truyền cho bộ nhớ chương trình (program memorybus)
được tách riêng Data memory bus chỉ có 8 bit và được kết nối với hầu hếtcá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
được chia làm 3 loại: đại số, logic và theo bit
b 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ínhsố
• 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
c 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đó:
9
Figure 4 AVR CPU General Purpose VVorking Registers
X-register Low Byte X-register High Byte Y-register Low Byte Y-register High Byte Z-register Low Byte Z-register High Byte
- 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ả
SPH SPL
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ếtlập
Trang 123 Memory:
a Bộ nhớ chương trình Flash:
Figure 8 Program Memory Map
$000 0
Trang 13b Bộ nhớ dữ liệu SRAM:
Figure 9 Data Memory Map
Register File Data Adđress Scace
- Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trìnhcho chip phần lớn là truy cập bộ nhớ này và bộ nhó' này gồm cácphầ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ácthanh ghi 8 bits Tất cả các chip trong họ AVR đều bao gồm 32 thanhghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F Mỗithanh 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 ghinày được đặt tên theo thứ tự là R0 đến R31 Chúng được chia thành2
phần, phần 1 bao gồm các thanh ghi từ R0 đến RI5 và phần 2 là cácthanh ghi RI6 đến R31
• Phần 2: là phần nằm ngay sau SFR bao gồm 64 thanh ghi 10 hay còn
gọi là vùng nhớ 10 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ớ ỉ/o có thê được truy cập như s
Trang 140x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghi 1/0 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,
c Bộ nhớ dữ liệu EEPROM:
- ATmegaló 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 bytemột EEPROM được tách riêng và có địa chỉ tính từ OxOOOOH
4 Quá trình thực thi lệnh:
Figure 7 Single Cycle ALU Operation
^CPUTotal Execution Time Register Operands Fetch
ALU Operation Execute Result Write Back
T
I T4
\
- Các instruction được chứa trong bộ nhớ chương trình Flash memorydưới dạng các thanh ghi 16 bit Bộ nhớ chương trình được truy cậptrong mỗi chu kỳ xung clock và 1 instruction chứa trong programmemory sẽ được load vào trong instruction register, instructionregister
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 (Programcounter)
Trang 15PORTxn (in SFIOR)PUD ƯO Comment
0 0 X Input Noĩíi-state (Hi-Z)
Pxn will source current if ext pulled low.
0 1 1 Input NoTri-state (Hi-Z)
&3.CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA 16
I Input & Output:
1 Giói thiệu:
Vi điều khiếnATmegalócó 32 đường vào ra chia làm bốn Port: PORTB-PORTC-PORTD mỗi Port 8bit có thể tương tác điều khiển từng bitmộ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 takhô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ởicác bô thanh ghi sau: thanh ghi dữ liệu cống PORT, thanh ghi dữ liệu điềukhiến cống DDR và cuối cùng là địa chỉ chân vào của cống PIN
PORTA-a 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).Neu
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 đượcset
thì bit tương ứng trên PORT được định nghĩa là cống vào
b 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ếubit
14
- Đâ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 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 (01) 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ó 2trạ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 1/0:
Table 20 Port Pin Coníigurations
- Giản đồ xung khi truy cập chân:
Figure 24 Synchronization when Reading an Extemally Applied Pin Value
Trang 163 Thiết lập truy xuất 1/0:
a Read:
- Đua dữ liệu ra thanh ghi điều khiển DDRxn đế đặt cho PORTx (hoặc bitn
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ỉ PlNxn (trong đó x: là cổng và n là bit)
đế định thời gian và đếm sự kiện với các đặc điếm sau:
Trang 17- Ngõ ra của khối chọn xung clock được xem là xung clock của bộ địnhthời
(clkTO) Thanh ghi OCRO luôn được so sánh với giá trị của bộ địnhthời/bộ
đếm Ket quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổitần
số ngõ ra tại chân oco.
c Đơn vị đếm:
Trang 181 0 1clk),<yi024 (From prescaler)
1 1 0External clock sounce on TO pin Ctock on íalling edge.
1 1 1External clock sounce on TO pin Clock on rising edge.
• count: tăng hay giảm TCNTO 1
• direction: lựa chọn giữa đếm lên và đếm xuống
• clear: xóa thanh ghi TCNTO
• 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ộ định thời đã giảm đến giá trị nhỏ nhất (0)
d Đon vị so sánh ngõ ra:
Figure 29 Output Compare Unit Block Diagram
DATA BUS
WGMn1:0 COMn1:0
- Bộ so sánh 8 bit liên tục so sánh giá trị TCNTO với giá trị trong thanh ghi
so sánh ngõ ra (OCRO) Khi giá trị TCNTO bằng với OCRO, 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 (OCFO) lên1
vào chu kỳ xung clock tiếp theo Neu được kích hoạt (OCIEO=1), còOCFO
3 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/CO, đó là:E :
ReadíW r t e
Im 5 Va
- Bit 7-FOCO: So sánh ngõ ra bắt buộc Bit này chỉ tích cực khi bitWGM00 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 đếmthứ 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
Note: 1 The CTCO and PVVMO bit deíìnition names are now obsolete Use the WGM01:0 deíinitions.
However the íunctionality and location of these bits are compatible with previous versions of
Table 42 ClDCk Select Bit Description
b Thanh ghi bộ định thời/ đếm TCNTO:
- Là 1 thanh ghi 8 bit chứa giá trị vận hành của T/CO Thanh ghi nàycho
phép đọc và ghi giá trị một cách trực tiếp,
c 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
d 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 TOIEO tú’c bit số 0 (bit đầu tiên) trong thanh ghi này làliên
quan đến T/CO, bit này có tên là bit cho phép ngắt khi có tràn ở
Tràn (Overflow) là hiện tượng xảy ra khi bộ giá trị trong thanh ghiTCNTO đã đạt đến MAX (255) và lại đếm thêm 1 lần nữa
• Bit 1-OCIEO: Cho phép ngắt báo hiệu so sánh
• Bit O-TOIEO: Cho phép ngắt tràn bộ đếm
e 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,
TO VO là cò chỉ thị ngắt tràn của T/CO Khi có ngắt tràn xảy ra, bit nàytự
động được set lên 1
• Bit 1-OCFO: Cờ so sánh ngõ ra 0
• Bit O-TOVO: Cờ tràn bộ đếm
4 Sử dụng timer/Counter:
Một số giá trị cần lun ý 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àyluôn
Trang 19- Đây là chế độ hoạt động đơn giản nhất của Timer Bộ đếm sẽ liên tục đếmtăng lên cho đến khi vượt quá giá trị lớn nhất TOP và sau đó sẽ đượckhở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.Giá trị trong Timer có thế được viết vào bất
b Chế Độ So Sánh (CTC):
Figure 31 CTC Mode, Timing Diagram
- Đây là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trongthanh ghi ORC Khi giá trị trong Timer bằng giá trị trong thanh ghiORC
thì giá trị trong Timer sẽ bị xoá đi Giá trị trong ORC đóng vai trò là giátrị TOP cho bộ đếm Chế độ này cũng cho phép tạo ra tần số so sánh ởđầu ra.Tuy nhiên trong chế độ này nếu giá trị mới ghi vào thanh ghiORC
mà nhỏ hơn giá trị tức thời của bộ đếm thì thì 1 so sánh sẽ bị lỡ, khi đóbộ
Trang 204—s + 7H
- Cho phép tạo ra sóng với tần số cao Sự khác biệt co bản giữa Fast PWMvới các loại PWM khác là nó chỉ sử dụng l sườn dốc Bộ đếm sẽ đếm từBottom đến Max sau đó khởi động lại từ bottom Trong chế độ khôngđảo
đầu ra của chân so sánh OCx sẽ bị xoá khi có phép toán so sánh giữaTCNTx và thanh ghi ORC là bằng nhau Và sẽ được sét lên l khi giá trịđạt Bottom Trong chế độ đảo ,đầu ra đảo sẽ được set lên l khi sự sosánh
giữa thanh ghi ORC và giá trị trong Timer bằng nhau và sẽ bị xoá khigiá
Trang 21trị BOTTOM Trong chế độ so sánh không đảo chân so sánh (OCx) sẽ bịxóa khi giá trị TCNTx bằng giá trị OCRx trong quá trình đếm lên và sẽđược set bằng 1 khi giá trị so sánh xuất hiện trong quá trình đếm xuống.Chế độ so sánh đảo thì các giá trị là ngược lại.
- Với hoạt động hai sườn xung này thì chế độ này không tạo ra được tầnsố
nhỏ như chế độ một sườn xung Nhung do tính cân đối của hai sườnxung
thì nó tốt hơn cho điều khiển động cơ Chế độ phase correct PWM hoạtđộng cố định là 8 bit Trong chế độ này bộ đếm sẽ tăng cho đến khi đạtgiá trị MAX ,khi đó nó sẽ đối chiều đếm
6 Các bưóc sử dụng Timer:
- Step 1: Set pin Timer là output bằng cách set giá trị trong thanh ghiDDRn.X