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

Báo cáo đề tài vi điều khiển AVR

45 822 0

Đ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

Định dạng
Số trang 45
Dung lượng 1,48 MB

Nội dung

Báo cáo đề tài vi điều khiển AVR

Trang 1

BÁO CÁO ĐỀ TÀI VI ĐIỀU KHIỂN AVR

Nhóm av

GVHD: ThS Lê Hoài Nghĩa

Trang 2

NỘI DUNG

• Tổng quan về vi điều khiển AVR

• Kiến trúc vi điều khiển AVR – Atmega16

• Giới thiệu PWM AVR điều khiển động

cơ DC

• Các công cụ lập trình AVR

Trang 3

&1.Tổng quan về vi điều khiển AVR

• AVR do hãng Atmel chế tạo ra, là họ VĐK 8bit theo công nghệ mới với những tính năng rất mạnh được tích hợp trong trong chip.

• AVR ổn định hơn rất nhiều so với dòng VĐK 8051

• Tính năng mới của họ AVR :

- Giao diện SPI đồng bộ, giao tiếp I2C, USART.

- Các lối vào ra Bộ Timer/Counter 8bit và 16bit

lập trình được.

- Tích hợp bộ biến đổi ADC 10bit.

- Có sẵn các kênh băm xung PWM.

- Bộ nhớ EEPROM.

Trang 4

Lịch sử phát triển AVR

• Ban đầu AVR MCU (Micro Controller Unit) được phát

triển tại một phòng ASIC (Application Specific IC) ở

Trondheim Nauy, đó là nơi mà 2 người sáng lập của

Atmel Nauy làm việc như là sinh viên Và nó được biết đến với tên µRISC (Micro RISC) Khi công nghệ này

được bán cho Atmel, cấu trúc bên trong AVR được phát triển xa hơn bởi Alf và Vegard tại Atmel Nauy, một công

ty con của Atmel được thành lập bởi 2 thành viên trên

• AVR là viết tắt của Advanced Virtual RISC, nhưng cũng

có thể là viết tắt cho 2 người sáng lập: Alf and Vegard [RISC], nhưng Atmel nói rằng AVR chẳng là viết tắt của bất cứ cái gì cả

• Một sản phẩm đầu tiên của AVR là AT90S8515, cũng có đóng gói DIP 40 chân giống như 8051 vậy, nó bao gồm phức hợp địa chỉ các thành phần bên ngoài và data bus Điều khác biệt là chân RESET (8051 RESET tích cực

mức cao, AVR lại tích cực mức thấp), ngoại trừ điểm này, các ngỏ ra đều giống nhau

Trang 5

Ư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

Trang 6

Phân loại AVR

-Mở rộng thiết bị ngoại vi với DACs.

d Application specific AVRs :

-megaAVRs với các thành phần đặc biệt không có trong các sản phẩm khác của AVR như là LCD controller, USB controlller, PWN, CAN, v.v

The New 32-Bit AVRs:

Năm 2006 Atmel tung ra VDK mới, 32 bit, kiến trúc AVR32 Chúng bao gồm tập lệnh SIMD và DSP, cùng với các thành phần xử lý audio và video Dòng VDK 32 bit này được dự định cạnh tranh với VDK ARM Các tập lệnh giống với các nhân RISC khác, nhưng không tương thích với các dòng AVR trước cũng như nhân ARM khác.

Trang 7

Một số 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

Trang 8

&2 Kiến trúc vi điều khiển AVR

Atmega16

• 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

Trang 9

Sơ đồ chân

Trang 10

Sơ đồ khối

Trang 12

CPU

Trang 13

CPU (tt)

• 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.

Trang 14

• 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ụ.

Trang 15

• Atmega 16 có 32 thanh ghi chức

năng chung thực thi nhiều tác vụ

Trang 16

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ỉ đó.

Trang 17

• Bộ nhớ dữ liệu SRAM

Trang 18

• Đâ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ư 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.

Trang 19

• 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.

Trang 20

Quá trình thực thi lệnh

• 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.

Trang 21

&3 Giới thiệu PWM AVR điều

khiển động cơ DC

• PWM là cụm từ Pulse Witdth Modulation là một kỹ

thuật dùng để điều khiển động cơ DC bằng cách điều chỉnh độ rộng của xung Khoảng thời gian mà xung ở mức logic cao sẽ ứng với thời gian có dòng điện qua động cơ và ngược lại PWM sử dụng kỹ thuật đóng mở nguồn cung cấp cho động cơ với những khoảng thời gian giãn cách khác nhau từ đó điều khiển được tốc độ của động cơ.

Trang 22

Cấu tạo động cơ DC

• Động cơ một chiều được ứng dụng rộng rãi trong rất nhiều lĩnh vực điều khiển tự động Cấu tạo của động cơ một chiều gồm có Stato và Roto.

• Stato thường làm bằng nam châm vĩnh cửu hoặc nam châm điện ở những động cơ công suất lớn Roto là những cuộn dây được quấn trên lõi thép Roto thường là bộ phận quay còn Stato thì đứng yên.

• Các đầu ra của cuộn dây Roto được đặt lên bộ cổ góp có các chổi than nhằm đảm bảo từ thông qua cuộn dây Roto là liên tục tức là duy trì lực từ tác dụng quay lên Roto một cách liên tục.

• Động cơ DC có một số loại như Servo, Step,

Encoder…

Trang 23

Thiết kế PWM như thế nào?

• Dùng IC 555 tạo xung:

Trang 24

Thiết kế PWM như thế nào?

• Dùng module PWM tích hợp sẵn của AT Mega 16

• AT Mega 16 có 4 kênh PWM tương ứng với 4 chân là:

Timer 1

Timer 2Timer 0

Trang 25

Sơ đồ khối

• Sơ đồ khối Timer 16 bit:

Trang 26

Các chế độ định thời

• Chế Độ Thông Thường:

Đâ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 bất cứ lúc nào

Trang 27

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

Trang 28

độ phase correct PWM sử dụng hai sườn dốc.

Trang 29

Các chế độ định thời(tt)

• Chế độ Phase correct PWM:

Chế độ này hoạt động dựa trên hai sườn lên xuống.Bộ đếm sẽ đếm liên tục từ giá trị BOTTOM đến giá trị MAX và sau đó từ giá trị MAX đến giá trị 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ầ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ơ

Trang 30

cách set thanh ghi TCCR1A

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

• Step 4: chọn giá trị của thanh ghi OCRn

• Step 5: bắt đầu PWM

Trang 31

Code PWM chế độ Pharse

Correct

• Sử dụng 2 kênh OC1A, O1CB:

– Step1: OC1A, OC1B output:

Trang 32

Một số mạch điều khiển động cơ DC bằng PWM

• Mạch cầu H:

Trang 33

Một số mạch điều khiển động cơ DC bằng PWM(tt)

• Mạch 1 Fet 1 Role

Trang 34

Một số mạch điều khiển động cơ DC bằng PWM(tt)

• Mạch IC 298:

Trang 35

&4.Các công cụ lập trình AVR

• Thiết kế phần cứng

• Lập trình điều khiển

Trang 36

Thiết kế phần cứng

• Thiết kế nguồn 5V cho AVR

– Đây là bước khởi đầu quan trọng và cần thiết, vì nếu không có bộ nguồn ổn định cho con AVR thì

dù có làm mạch nạp đúng, cấu hình đúng các chương trình nạp,… AVR vẫn làm việc không tốt Dẫn đến việc chương trình nạp không đọc được AVR

– Sau đây là sơ đồ nguồn 5V:

Trang 37

Thiết kế phần cứng(tt)

• Sơ đồ mạch nạp qua cổng LPT

Trang 38

Thiết kế phần cứng(tt)

Sơ đồ mạch nạp qua cổng LPT dùng IC đệm 74HC244

Trang 39

Thiết kế phần cứng(tt)

• Mạch nạp qua cổng USB AVR 910

Trang 40

Thiết kế phần cứng(tt)

• KẾT NỐI MẠCH NẠP VỚI AVR

Trang 41

Lập trình điều khiển

• Công cụ lập trình:

– AVR Studio

– CodeVision

Trang 42

Lập trình Input-Output

• 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

Để điều khiển các chân này chúng ta có 2 thanh ghi

->PORTx :giá trị tại từng chân (0 – 1) có thể truy cập tới từng bit PORTx.n

->DDRx : thanh ghi chỉ trạng thái của từng chân , vào hoặc là

ra Giá trị 1 là ra và 0 là vào

Trang 43

Lập trình Input-Output

– Đâ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 PORTx (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 PORTx đượ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 PORTx được định nghĩa là cổng vào.

– Đâ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 Px 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à 0x00.

– Đây là thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được.

Trang 44

Lập trình Input-Output

• Để đọc dữ liệu từ ngoài thì ta phải thực

hiện các bước sau:

Đư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)

– Sau đó 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)

• Để đưa dữ liệu từ vi điều khiển ra các cổng

cũng có các bước hoàn toàn tương tự

– Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng đó….và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx

Trang 45

Thanks so much……

Ngày đăng: 13/08/2016, 20:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w