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

Đề tài vi điều khiển AVR - ĐH quốc gia TP Hồ Chí Minh

75 421 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Tiêu đề Đề tài vi điều khiển AVR - ĐH quốc gia TP Hồ Chí Minh
Tác giả Vũ Đình Chính
Người hướng dẫn ThS Lờ Hoài Nghĩa
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại đề tài vi điều khiển
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 75
Dung lượng 17,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHÔ HỖ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

| Huỳnh Thanh Long MSSV: 07520588 KTMT02

GVHD: ThS Lê Hoài Nghĩa

`2

Trang 2

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 xuat 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

Trang 3

MỤC LỤC

&1 — GIỚI THIEU AVR MCU ATMEL 01

T— Tong quan vé AVR 0.00 cee ce eccceccccce cece ccccceccenetsnseeeeeceecccecesenseeasd 01

1 Giới thiỆU S2 nQTSn HH n TS TT KT kg kh nên 01

2 Ưu thế của MCU AVR L1 2222211112221 111 15112111111 01

3 M6t s6 dong AVR .cccccccccesccecssseeceeceeeeesecceeeessseeeeeeeeeeeeesaes 02

II— Một số dòng AVR pho bién oo cece ceeceeeeeceeeseneneass 03

&2 —- ATMEGA16 - KIÊN TRÚC TỎNG QUAN 05

I— Ưu điểm . - Q Q00 2Q 2122212121211 111 111111 HS n ng x1 xxy 05

3 Thiết lập truy xuất I/O -Lc cSSSSS S99 S2 92555115551511 11111 ke nhe 15

Trang 4

TE — Timer & Counfer .c.ccĂ Sky 16

TL GiGi 8 16

2 Céu trúc bộ định thời 8 bit Timer Ú 2222511122222 c+ssssxe l6

3 Mô tả chỉ tiết các thanh ghi của bộ định thời . ccc c5: 19

4 Sử dụng timer/COUn€T -.- c2 S222 S3 vs vs 21

5 Các chế độ hoạt động của Time ( cc + csssts+ S2 21

6 Các bước sử dụng TImer cà Set 24

2 Ngắt ngoài ATMEGAI6 L 22 222111112211 1111521111111 1xe 26

3 Các thanh ghi phục vụ ngắt 1111111 Enn vn xsg 27

4 Thiết lập ngắt ngoài .-LL TQ 02022222 222222211 1111111 nn ng 22x 28 TV_— ADC 22 00000 2222111111 1221111111011 1 111 1111 1xx key 30

DL GiGi 8 30 bo 4(Ả 30

3 Các thanh ghi điều khiển ADC - S11 SE SSS S222 555111 111112 31

4 Qua trinh chuyén d6i ADC 0.00.0 cc ccccceccc eee ccceceeeccceteesseeeeeeeeeeeesues 37

5 Cac bwoc lập trình điều khién ADC 0.0.0 cece ceeeccceceeeeeeneessseeeeeeeees 38 V~USART 2 200002 22201011 1122111111111 1111151111111 1xx 39

2 Cấu trúc của một USART - 2222111212211 1 1115511111555 x32 40

3 Tạo xung clock cho USART cc St sưn 41

4 Một số khái niệm liên quan đến USART ccccccccs‡cse2 42

5 Các thanh ghi điều khiển USART - 52222111 2222211122 44

6 Sử dụng USART 22.2.0001 012202011111111 1111118111111 18111 111g 49

VI A= SPI Q20 1220111111221 111112111111 1201 1111111201111 1 1111k re 51 Ám‹ 8n 51

2 Cấu trúc của một SPI +21 1122222111132 1111555111112 54

3 Các thanh ghi điều khiển SPH 522222222221 55

Trang 5

4 Sử dụng SPI nọ HS nh HT KT nh nh nhờn 59 VID = TWI-I2C Q.2 002201111211 11 1121115211112 1111011111111 1 1x ra 61

2 Cấu trúc của một I2C . + 11112222231 11111221 1111551111111 xx2 64

3 Các thanh ghi điều khiển I2C .- <2 1E 11s nsS S322 65

4 Sử dụng TWI-I2C - c1 2111 12221111211 1120111111111 5 1111k 68

Trang 6

&1 GIỚI THIỆU AVR MCU ATMEL

I Tổng quan về AVR:

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, AT9I 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 la 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ẽ:

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 (features) sau:

Trang 7

© Xung External OSC lên đến 16Mhz và Internal OSC 8Mhz e_ 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 Portxuất nhập

e 8 bits, 16 bits timer/counter tich hop PWM

e Cac bé chuyén déi Analog — Digital phân giải 10 bits

e Analog comparator

© Giao diện nối tiếp USART (tương thích chuan ndi tiép RS-232) e_ 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

e 1-8 kB program memory

e 6-32-pin package

e Limited peripheral set

* megaAVR — the ATmega series

e 4-256 kB program memory

e 28-100-pin package

e Extended instruction set (Multiply instructions and instructions for handling larger program memories)

Trang 8

e Extensive peripheral set

* XMEGA — the ATxmega series

e 16-384 kB program memory

e 44-64-100-pin package (A4, A3, Al)

e Extended performance features, such as DMA, "Event System", and cryptography support

e Extensive peripheral set with DACs

* Application specific AVR

e megaAVRs with special features not found on the other members of

the AVR family, such as LCD controller, USB controller, advanced

PWM, CAN etc

IL M6t sé dong AVR phé bién:

AT90S1200

AT90S2313

AT90S2323 and AT90S2343

AT90S2333 and AT90S4433

AT90S4414 and AT90S8515

AT90S4434 and AT90S8535

Trang 10

&2 ATMEGA16 — KIEN TRUC TONG QUAN

I Uu diém:

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

— Kién tric 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 da 16MIPS & 16Mhz xung clock

— Dung lugng bo nho: 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/85°C-100 năm 25°C

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

— 2b6 Timer 16 bit, 1 b6 timer 16 bit

— 4kénh PWM

— 8 kênh ADC 10 bít

— 32 port xuat nhập

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

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

(INTZ/AINO) PB2 C] 3 38 PA2 (ADC2)

(OCW/AIN1) PB3 LÍ 4 37 PA3 (ADC3)

(ŠŠ) PB4 CỊ 5 36 1 P44 (ADC4)

(mos!) P85 LÍ 6 35 B PAS (ADCS)

(MISO) PBS C] 7 34 B Pas (ADCS)

(SCK) PB7 C 8 33 |) PA7 (ADC7) fees cl Be aoc oss q 9 ` B AREF (sck) p87 fas (ADCS)

XTAL1 CÍ 13 2s b Pcs (rosc+) XTAL+ CỈ B Fer crosce)

(exo) Poo | B Pos (rose:

Gxo) Por {is 26 B pes FOO) nto) poz i) 658 ca 5 cs (r00)

(INTO) PD2 CJ 16 25 | PC3 (MS) (428 914'516171 8! 9207 "22

(INT1) PD3 LÍ 17 24 B PC2 (TCK) UUUUUUUUUUU

©C1B) PD4 CỈ 18 23 PC! (SDA) ⁄

(OCIA) PDS C19 22 B PCo (SCL) Nore: ous

CP1) PDS CỈ 20 21D PD7 (OC2) be soldered to ground

Trang 11

— Port A la 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

Trang 12

—._ 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

1 CPU:

Block Diagram of the AVR MCU Architecture

pons —| Counter l | and Control |

Memory

Interrupt Instruct: instruction Công Xem Lon eral _

a ALU:

—mm——————————————

7

Trang 13

— 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 va theo bit

b Thanh ghi trang thai:

— Day la 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

The AVR Status Register- SREG - is defined as:

e Z: Zero Flag >Co zero

© N: Negative Flag > két qua phép toán âm

e V: Two’s complement overflow > co bu 2

¢ S For signed tests (S=N XOR V) > kiém tra 2 cd N va V

e _H: Half Carry Flag > được sử dụng trong BCD cho một số toán hạng

e T: Transfer bit used by BLD and BST instructions>dugc sử dụng làm nơi trung gian trong các lệnh BLD,BST

e1: 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ụ

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

đó:

Trang 14

Figure 4 AVR CPU General Purpose Working Registers

7 0 Ader

soo Sot

$02

$0D SOE SOF

$10 sit

General Purpose Working Registers

R26 SIA X-register Low Byte

Ra $18 X-register High Byte R28 sic Yeregister Low Byte Rao $ip Y-register High Byte Ra) sie Zregister Low Byte Rat SIF register High Byte

— Một § bit output toán hạng và một 8 bit cho input két qua

— Hai 8 bit output toán hạng và một 8 bit cho input két qua

— Hai 8 bit cho output két qua và một 16 bit cho input két qua

— Mét 16 bit cho output toán hạng và một 16 bit cho input kết quả

2 Con trồ ngăn xếp SP:

— _ 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 voi lệnh PUSH và hai khi có Subroutine hoặc Interrupt được gọi Con trỏ tăng địa chỉ lên I 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

a

9

Trang 15

Bộ nhớ Flash I6KB của ATmegal6 dùng để lưu trữ chương trình với độ

rộng l6 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 phan la 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ỉ đó

10

Trang 16

b Bộ nhớ dữ liệu SRAM:

Figure 9 Data Memory Map

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 phan, 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 con gọi là vùng nhớ IO Vùng nhớ T/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 sit dung instruction truy xuất SRAM dé truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ

11

Trang 17

0x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghỉ 1/O thì dia chỉ của chúng đựơc tinh từ 0x0000 đến 0x003F

e_ Phần3: 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

— _ ATmegaló6 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, va đượ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

Register Operands Fetch ——< —>———————————

Result Write Back : <>

'

— _ 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 vao 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

12

Trang 18

&3.CAC MODULE DIEU KHIEN TRONG ATMEGA 16

I Input & Output:

1 Giới thiệu:

Vi điều khiểnATmegal6có 32 đường vào ra chia làm bốn Port: PORTA- PORTB-PORTC-PORTD mỗi Port §bit 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

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) Nếu như một bit trong thanh ghi này được set thi 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

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ế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

c Thanh ghi PIN:

13

Trang 19

—_ Đâ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

2 Cấu tạo chân:

Figure 22 /O Pin Equivalent Schematic

— Bảng trạng thái truy xuất I/O:

Table 20 Port Pin Configurations

DDxn | PORTxn | (in ee vo Pull-up | Comment

0 0 xX Input No Tri-state (Hi-Z)

Pxn will source current if ext pulled

1 0 Input Yes low

1 1 Input No Tri-state (Hi-Z)

0 x Output No Output Low (Sink)

4 1 xX Output No Output High (Source)

14

Trang 20

— Giản đồ xung khi truy cập chân:

Figure 24 Synchronization when Reading an Externally Applied Pin Value

SYSTEM CLK INSTRUCTIONS

SYNC LATCH PINxn r17

Figure 25 Synchronization when Reading a Software Assigned Pin Value

— Đư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 đữ liệu từ địa chỉ PINxn (trong đó x: là công và n là bit)

Trang 22

—_ 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

Trang 23

Figure 28 Counter Unit Block Diagram

TOVn (int Req.)

© count: tang hay giam TCNTO 1

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

e clear: xóa thanh ghi TCNT0

e clkT0: xung clock của bộ định thời

e TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất

se BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)

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 I vào chu kỳ xung clock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0

sé tao ra mot ngat 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

18

Trang 24

3 Mô tả chỉ 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à:

a Thanh ghi điều khiến bộ định thời/bộ đếm TCCRO0:

[Foco | wamoo | como: | comoo | wamo: | CS02 | CS01 | CS00 | TCCRO

— Bit 7-FOCO: So sánh ngõ ra bắt buộc Bit nay chi tích cực khi bit

WGM00 chi định chế độ làm việc không có PWM Khi dat bit nay 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-WGM0I: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

Table 38 Waveform Generation Mode Bit Description'”’

Mode | (CTC0) | (PWM0) | ofOperation TOP OCRO Set-on

0 L) 0 Normal OxFF Immediate | MAX

1 oO 1 PWM, Phase Correct OxFF TOP BOTTOM

4 0 CTC OCRO | Immediate | MAX

1 1 Fast PWM OxFF BOTTOM MAX

Note: 1 The CTCO and PWMO bit definition names are now obsolete Use the WGM01:0 definitions

However, the functionality and location of these bits are compatible with previous versions of the timer

— Bit 5:4-COMO01:0: Chế độ báo hiệu so sánh ngõ ra Các bit này dié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 OCO0 sẽ hoạt động

— Bit 2:0: CS02:0: Chon xung déng hé

19

Trang 25

— Bang trang thai:

Table 42 Clock Select Bit Description

cso2 cso1 €§00 | Description

0 0 0 No clock source (Timer/Counter stopped)

0 1 0 clk,,o8 (From prescaler)

0 1 1 clk,;o84 (From prescaler)

1 0 1 clk,,o/1024 (From prescaler)

1 1 0 External clock source on TO pin Clock on falling edge

1 1 1 External clock source on TO pin Clock on rising edge

b Thanh ghi bộ định thời/ đếm TCNTO:

— 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 bít 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

20

Trang 26

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

e_ Bit I-OCIE0: Cho phép ngắt báo hiệu so sánh

e Bit 1-OCFO: Cờ so sánh ngõ ra 0

¢ Bit 0-TOVO: Cờ tràn bộ đếm

4 Sử dụng timer/Counter:

Một số giá trị cần lưu ý khi sử đụng Timer/Counter:

— BOTTOM: la giá trị thấp nhất mà một T/C có thể đạt được, giá trị này luôn

là 0

— MAX: la gid 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 bít 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ố lon 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 qua một số thanh ghi

5 Các chế độ hoạt động của Timer 0:

a Normal Mode:

21

Trang 27

Đâ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ị lớn nhất 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.Giá trị trong Timer có thé được viết vào bat

Đây là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trong thanh ghi ORC Khi giá trị trong Timer bang giá trị trong thanh ghi ORC 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 ghi ORC

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ộ

đếm sẽ đếm đến giá trị lớn nhất sau đó rơi xuống giá trị 0 trước khi so

sánh tiếp theo xuất hiện

22

Trang 28

OCRn Update and TOVn Interrupt Flag Set

(COMn1:0 = 2)

giữa thanh ghi ORC và giá trị trong Timer bằng nhau và sẽ bị xoá khi giá

trị đạt Bottom

Trong cả hai trường hợp này tần số của chế đô Fast PWM đều gấp đôi so với chế độ phase correct PWM sử dụng hai sườn dốc Với tần số cao này chế độ độ Fast PWM rất tốt cho các ứng dụng như ADC hay chỉnh lưu.Ngoài ra với tần số cao giúp làm giảm kích thước của thiết bị ngoài như cuộn dây tụ từ đó giúp làm giảm toàn bộ chỉ phí cho hệ thống

23

Trang 29

Với hoạt động hai sườn xung này thì chế độ này không tạo ra được tần số nhỏ như chế độ một sườn xung Nhưng do tính cân đối của hai sườn xung 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 đạt giá trị MAX ,khi đó nó sẽ đổi chiều đếm

6 Các bước sử dụng Tỉmer:

Step 1: Set pin Timer là output bằng cách set giá trị trong thanh ghi DDRn.X

Step 2: chọn chế độ Timer bằng cách set thanh ghi TCCRX

Step 3: chọn xung clock bằng cách set thanh ghi TCCRX

Step 4: chọn giá trị của thanh ghi OCRX-TCNTX

Step 5: bắt đầu Timer

24

Trang 30

while (1){ //vong lap v6 tan //do nothing

— Ngat la 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ỏ

25

Trang 31

tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lai lay 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:

Table 18 Reset and Interrupt Vectors

Program

Vector No | Address'2' Source Interrupt Definition

1 $000"? RESET External Pin, Power-on Reset, Brown-out

Reset, Watchdog Reset, and JTAG AVR Reset

2 $002 INTO External Interrupt Request 0

3 $004 INT1 External Interrupt Request 1

4 $006 TIMER2 COMP | Timer/Counter2 Compare Match

5 $008 TIMER2 OVF Timer/Counter2 Overflow

6 §00A TIMER1 CAPT | Timer/Counter1 Capture Event

7 §00C TIMER1 COMPA | Timer/Counter1 Compare Match A

8 §00E TIMER1 COMPB | Timer/Counter1 Compare Match B

9 $010 TIMER1 OVF Timer/Counter1 Overflow

10 $012 TIMERO OVF Timer/Counter0 Overflow

11 $014 SPI, STC Serial Transfer Complete

12 $016 USART, RXC USART, Rx Complete

13 $018 USART, UDRE_ | USART Data Register Empty

14 SO1A USART, TXC USART, Tx Complete

15 §01C ADC ADC Conversion Complete

17 $020 ANA_COMP Analog Comparator

18 $022 Ti Two-wire Serial Interface

19 $024 INT2 External Interrupt Request 2

20 $026 TIMERO COMP | Timer/Counter0 Compare Match

21 $028 SPM_RDY Store Program Memory Ready

2 Ngắt ngoài Atmega 16:

a Quá trình ngắt:

Atmegal6 có 3 ngắt ngoài INT0(PORTD.2) INTI(PORTD.3) và

TNT2(PORTB.2) Khi xảy ra một trong các sự kiện đối với các chân này :

26

Trang 32

Low level - Điện áp ở chân ngắt xuống mức logic 0 V Any change - Bat ki sy 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ó l sườn điện áp lên (0V->5V)

Sau đó 1 cờ ngắt sẽ đựng 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

3 Cac thanh ghi phuc vụ ngắt:

a MCUCR-—MCU Control Register:

Tnterrupt Sense Control (ISC) trong đó 2 bit ISC1 1:ISC10 dùng cho INT1

và 2 bít ISC01:ISC00 dùng cho INTO Bang chan tri cho cac bit ISCO1, ISCO00 hoàn toàn tương tự

Table 34 Interrupt 1 Sense Control

1 The rising edge of INT1 generates an interrupt request

27

Trang 33

Table 35 Interrupt 0 Sense Control

C01 ISC00 | Description

0 0 The low level of INT0 generates an interrupt request

0 1 Any logical change on INTO generates an interrupt request

1 0 The falling edge of INTO generates an interrupt request

1 1 The rising edge of INTO generates an interrupt request

b _MCUCSR-—MCU Control and Status Register:

[sro | isc2 | - | JTRP | WORF | BORF | EXTRF | PORF | MCUCSR

Initia! Valve 9 9 9 See Bit Description

— Bit 6 —ISC2: Interrupt Sense Control 2: 1a bit quan trong nhat trong thanh ghi này dùng ghi và xóa cờ ngắt INT2

c GICR-— General Interrup Control Register:

— Thanh ghi cờ ngắt chung — GIFR (General Interrupt Flag Register) có 2

bit INTF1 va INTFO la cac bit trang thai (hay bit cờ - Flag) của 2 ngắt INT1 va INTO Néu cé 1 su kién ngat phù hợp xảy ra trên chân INTI, bit INTF1 dugc tu dong set bang 1 (tương tự cho trường hợp cua INTFO), 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

4 Thiết lập ngắt ngoài:

— Step 1: chon ché dé ngắt trong than ghi MCUCR

28

Trang 34

—._ Step 2: cho phép ngắt toàn cục trên thanh ghi GICR

—. Step 3: cho phép ngắt trong thanh ghi trang thai SREG

Trang 35

tự sang số được sử dụng nhiều trong các hệ thống điều khiến

— Atmega 16 tích hợp sẵn Module ADC được input ở PORTA Đây là bộ ADC với những đặc điểm sau:

Độ phân giải 10 bit Sai số tuyến tính: 0.5LSB

Độ chính xác +/-2LSB Thời gian chuyên đôi:65-260us

8 Kênh đầu vào có thể được lựa ch

Có hai chế độ chuyên đổi free run

Có nguồn báo ngắt khi hoàn thành

Loại bỏ nhiễu trong chế độ ngủ

2 Cấu trúc:

30

Trang 36

3 Các thanh ghi diéu khién ADC:

Có 4 thanh trong b6 ADC trén AVR trong đó có 2 thanh ghi data chứa dữ liệu sau khi chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC

a ADMUX (ADC Multiplexer Selection Register):

Là 1 thanh ghi 8 bit điều khiển việc chọn điện áp tham chiếu, kênh và chế

độ hoạt động của ADC

e Bit 7:6- REFS1:0 (Reference Selection Bits): 1a cac bit chon dién ap tham chiếu cho ADC, 1 trong 3 nguồn điện áp tham chiếu có thê được chọn là: điện áp ngoài từ chân VREF, điện áp tham chiếu nội 2.56V

31

Trang 37

hoặc điện áp AVCC Bảng 2 tóm tắt giá trị các bit và điện áp tham chiếu

tương ứng

Table 83 Voltage Reference Selections for ADC REFS1 | REFSO | Voltage Reference Selection

0 0 AREF, Internal Vref turned off

0 1 AVCC with external capacitor at AREF pin

về phía trái trong khi cũng có trường hợp người dùng muốn kết quả nằm

về phía phải Bit ADLAR sẽ quyết định vị trí của 10 bít kết quả trong 16 bit của 2 thanh ghi data Nếu ADLAR=0 kết quả sẽ được hiệu chỉnh về phía phải (thanh ghi ADCL chứa trọn 8 bit thấp và thanh ghi ADCH chứa 2 bit cao trong 10 bit kết quả), và nếu ADLAR=I thì kết quả được hiệu chỉnh trái (thanh ghi ADCH chứa trọn 8 bít cao nhất, các bit từ 9

đến 2, và thanh ADCL chứa 2 bit thấp nhất trong 10 bit kết quả (bạn

xem hình cách bố trí 2 thanh ghi ADCL và ADCH bên dưới đẻ hiểu rõ

hơn)

e Bits 4:0-MUX4:0 (Analog Channel and Gain Selection Bits): là 5 bit cho phép chọn kênh, chế độ và cả hệ số khuyếch đại cho ADC Do bộ ADC trên AVR có nhiều kênh và cho phép thực hiện chuyển đổi ADC kiểu so sánh (so sánh điện áp giữa 2 chân analog) nên trước khi thực hiện chuyên đổi, chúng ta cần set các bit MUX để chọn kênh và chế độ cần sử dụng Bảng 3 tóm tắt các chế độ hoạt động của ADC thông qua

32

Ngày đăng: 22/05/2014, 17:02

HÌNH ẢNH LIÊN QUAN

Hình  vẽ: - Đề tài vi điều khiển AVR - ĐH quốc gia TP Hồ Chí Minh
nh vẽ: (Trang 6)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w