1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo thực tập tốt nghiệp - Vi điều khiển

43 933 15
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Vi điều khiển
Tác giả Lê Hải Đăng
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Điện tử-Viễn thông
Thể loại Báo cáo thực tập
Định dạng
Số trang 43
Dung lượng 0,92 MB

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

Nội dung

báo cáo thực tập môn vi điều khiển

Trang 1

Báo cáo thực tập tốt nghiệp

Lời giới thiệu

Vi điều khiển là 1 lĩnh vực khá lý thú đối với chuyên ngành Điện tử-Viễn thông.Cùng với sự phát triển của ngành điện tử thì nhiều họ vi điều khiển lần lượt được cáchãng sản xuất chip cho ra đời như: Z80 của Zilog, AT89 của Atmel, PIC củaMicrochip, AVR của Atmel

Họ vi điều khiểnAVR của Atmel Corp là 1 bước phát triển trên nền của Vi điềukhiển AT89 đã khá quen thuộc Nếu như AT89 là vi điều khiển có CPU CISC thì AVR

là RISC, với kiến trúc Harvard do vậy tốc độ sẽ nhanh hơn (tốc độ tối đa là 16 triệulệnh/giây) Ngoài ra AVR cũng tích hợp sẵn ngay trong chip mạch ADC, PWM, cũngnhư hỗ trợ các chuẩn giao tiếp thông dụng như UART/USART, I2C, 2-wires, nênviệc thiết kế và thực hiện phần cứng cho những ứng dụng rất thuận tiện, nhanh chóng,nhỏ gọn

Về ngôn ngữ lập trình cho AVR thì có rất nhiều: assembly, C, Basic, Pascal Trong

đó những phần mềm miễn phí do chính Atmel cung cấp, hay những hãng khác là rấtnhiều: avrasm, winasm (hợp ngữ), CodeVisionAVR, Win-GCC(ngôn ngữ C),BASCOM (ngôn ngữ Basic).v.v

Hơn thế việc mô phỏng, debug cũng được hỗ trợ các từ A-Z, nhiều phần mềmsimulator, emulator như: AVRStudio (miễn phí của Atmel), Proteus,

Trong phạm vi cuốn báo cáo này chỉ nghiên cứu về vi điều khiển ATmega16, phầnmềm mô phỏng mạch điện Proteus 7.0 và sử dụng Proteus để thiết kế máy phát trải phổ Trong quá trình viết báo cáo, người viết có tham khảo datasheet của ATmega16 từtrang web của hãng Atmel (www.atmel.com) và một số tài liệu khác

Trang 2

Báo cáo thực tập tốt nghiệp

Mục lục

Phần 1 Vi điều khiển ATmega16 4

Chương 1 Giới thiệu chung 5

Chương 2 Cấu trúc nhân AVR 7

2.1.Cấu trúc tổng quát 7

2.2 ALU 7

2.3 Thanh ghi trạng thái 8

Chương 3 Cấu trúc bộ nhớ 11

3.1 Bộ nhớ chương trình (Bộ nhớ Flash) 11

3.2 Bộ nhớ dữ liệu SRAM 11

3.3 Bộ nhớ dữ liệu EEPROM 12

Chương 4 Các cổng vào ra (I/O) 13

4.1 Thanh ghi DDRx 13

4.2.Thanh ghi PORTx 13

4.3 Thanh ghi PINx 13

Chương 5 Bộ định thời 15

5.1 Các thanh ghi 15

5.2 Đơn vị đếm 16

5.3 Đơn vị so sánh ngõ ra 16

5.4 Mô tả các thanh ghi 17

5.4.1 Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0 17

5.4.2 Thanh ghi bộ định thời/bộ đếm 17

5.4.3 Thanh ghi so sánh ngõ ra-OCR0 18

5.4.4 Thanh ghi mặt nạ ngắt 18

5.4.5 Thanh ghi cờ ngắt bộ định thời 18

Chương 6 USART 19

6.1 Tạo xung clock 20

6.2 Định dạng khung truyền 20

6.3 Khởi tạo USART 21

6.4 Truyền thông dữ liệu-bộ truyền USART 21

6.4.1 Truyền khung 5 đến 8 bit dữ liệu 21

6.4.2 Truyền khung 9 bit dữ liệu 22

6.5 Nhận dữ liệu-bộ nhận USART 22

6.5.1 Nhận khung với 5 đến 8 bit dữ liệu 22

6.5.2 Nhận khung với 9 bit dữ liệu 23

Chương 7 Bộ biến đổi A/D 24

7.1 ADMUX: Multiplexer select register 25

7.2 ADCSR-ADC control and status register 26

7.2.1 Bit 7-ADEN:ADC enable 26

7.2.2 Bit 6-ADSC: ADC start conversion 26

7.2.3 Bit 5-ADATE :ADC Auto Trigger enable 26

7.2.4 Bit 4-ADIF: ADC interrupt Flag 26

7.2.5 Bit 3-ADIE:ACD interrupt Enable 26

7.2.6 Bit 2.1.0-ADPS2…ADPS0: Bit lựa chọn xung nhịp(Tốc độ) 26

7.3 Thanh ghi dữ liệu ACDH và ADCL 27

7.4 Nguyên tắc hoạt động và lập trình điều khiển 27

Phần 2 Phần mềm mô phỏng mạch điện Proteus 7.0 29

Chương 1 Giới thiệu chung 30

Trang 3

Báo cáo thực tập tốt nghiệp

1 Giới thiệu về Proteus 30

2 Các ưu điểm 30

3 Khả năng ứng dụng 31

4 Khả năng phân tích 31

Chương 2 Mô phỏng và phân tích mạch nguyên lý 32

Phần 3 Thiết kế máy phát trải phổ 37

1 Biến đổi A/D 37

2 Nhân tín hiệu 39

3 Tạo chuỗi PN và tạo dữ liệu vào 39

Trang 4

Báo cáo thực tập tốt nghiệp Chương 1 Giới thiệu chung

Phần 1 Vi điều khiển ATmega16

Chương 1 Giới thiệu chung

ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC Với khả năng thực hiệnmỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc độ 1MIPStrên mỗi MHz (1 triệu lệnh/s/MHz)

Dưới đây là sơ đồ khối của ATmega16

Trang 5

Báo cáo thực tập tốt nghiệp Chương 1 Giới thiệu chung

Hình 1.1 Sơ đồ cấu trúc ATmega16

ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khighi, 512 byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao tiếpnối tiếp 2 dây, 8 kênh ADC 10 bit,

ATmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trìnhdịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,

Trang 6

Chương 2 Cấu trúc nhân AVR

Chương 2 Cấu trúc nhân AVR

CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương trình

Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điềukhiển các thiết bị ngoại vi và quản lý ngắt

2.1.Cấu trúc tổng quát

Hình 2.1 Sơ đồ cấu trúc CPU của ATmega16

AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và

dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trìnhđược lưu trong bộ nhớ Flash

2.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 đượcthự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

2.3 Thanh ghi trạng thái

Đây là thanh ghi trạng thái có 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 7

Chương 2 Cấu trúc nhân AVR

Hình 2.2 Thanh ghi trạng thái SREG

C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)

Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)

N: Negative Flag (Nếu kết quả của phép toán là âm)

V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2)

V, For signed tests (S=N XOR V)S: N

H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau)

T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chunggian 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 bitnày ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)

2.4 Các thanh ghi chức năng chung

Hình 2.3 Thanh ghi chức năng chung

2.5 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 Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớRAM là $5E) Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp

Trang 8

Chương 2 Cấu trúc nhân AVR

Hình 2.4 Thanh ghi con trỏ ngăn xếp

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vàongăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽ giảm 1 khithực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 vàkhi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngănxếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chươngtrình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp ít nhấtcũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi

2.6 Quản lý ngắt

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

xà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,hợ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 đó chơ tới khi gặp lệnh RETI (return frominterrup) 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ướckhi 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ộtlú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 ưutiên Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp.Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ Còn nó mà cómức ưu tiên thấp hơn thì nó sẽ bị bỏ qua

Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên Để truy nhậpvào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theokiểu ngăn xếp thì ta dùng con trỏ SP Con trỏ này là một thanh ghi 16 bit và được truynhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) vàSPH:0x3E/0x5E

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vàongăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khithực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 vàkhi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngănxếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chươngtrình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp ít nhấtcũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi

Ví dụ:

char cSREG;

cSREG = SREG; /* store SREG value */

/* disable interrupts during timed sequence */

CLI();

EECR |= (1<<EEMWE); /* start EEPROM write */

Trang 9

Chương 2 Cấu trúc nhân AVR

EECR |= (1<<EEWE);

SREG = cSREG; /* restore SREG value (I-bit) */

Trang 10

Hình 3.1 Bản đồ bộ nhớ chương trình

3.2 Bộ nhớ dữ liệu SRAM

1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ

dữ liệu SRAM nội Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộnhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội

Trang 12

Báo cáo thực tập tốt nghiệp Chương 4.Các cổng vào ra

Chương 4 Các cổng vào ra (I/O)

Vi điều khiểnATmega16có 32 đường vào ra chia làm bốn nhóm 8 bit một Cácđường vào ra này có rất nhiều tính năng và có thể lập trình được Ở đây ta sẽ xét chúng

là các cổng vào ra số Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra haichiều có thể định hướng theo từng bit Và chứa cả điện trở pull-up (có thể lập trìnhđược) Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra

số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau Chúng ta có thanhghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA,PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB, DDRC,DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC, PIND)

4.1 Thanh ghi DDRx

Đâ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 trongthanh 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 địnhnghĩa là cổng vào

4.2.Thanh ghi PORTx

Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệucủ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ộtbit lên thanh ghi này thì chân tương ứng trên port đó cũng có cùng mức logic Trongtrườ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

4.3 Thanh ghi PINx

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

Tóm lại:

1 Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:

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)

2 Để đư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

Ví dụ:

unsigned char i;

Trang 13

Báo cáo thực tập tốt nghiệp Chương 4.Các cổng vào ra

/* Define pull-ups and set outputs high */

/* Define directions for port pins */

Trang 14

Báo cáo thực tập tốt nghiệp Chương 5.Bộ định thời

Sơ đồ cấu trúc của bộ định thời:

Hình 5.1 Sơ đồ cấu trúc bộ định thời

Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm Kết quả sosá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

5.2 Đơ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:

Trang 15

Báo cáo thực tập tốt nghiệp Chương 5.Bộ định thời

Hình 5.2 Đơn vị đếm

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)

5.3 Đơn vị so sánh ngõ ra

Hình 5.3 Sơ đồ đơ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ánhngõ 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ếptheo 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ầnmềm

Trang 16

Báo cáo thực tập tốt nghiệp Chương 5.Bộ định thời

Hình 5.4 Thanh ghi điều khiển bộ định thời

5.4.1.1 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

5.4.1.2 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

5.4.1.3 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

5.4.1.4 Bit 2:0: CS02:0: Chọn xung đồng hồ

Ba bit này dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm

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

Hình 5.5 Thanh ghi bộ định thời

Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộđếm 8 bit

5.4.3 Thanh ghi so sánh ngõ ra-OCR0

Hình 5.6 Thanh ghi so sánh ngõ ra

Trang 17

Báo cáo thực tập tốt nghiệp Chương 5.Bộ định thời

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

5.4.4 Thanh ghi mặt nạ ngắt

Hình 5.7 Thanh ghi mặt nạ ngắt TIMSK

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

5.4.4.2 Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm

5.4.5 Thanh ghi cờ ngắt bộ định thời

5.4.5.1 Bit 1-OCF0: Cờ so sánh ngõ ra 0

5.4.5.2 Bit 0-TOV0: Cờ tràn bộ đếm

Bit TOV0 được đặt lên 1 khi bộ đếm bị tràn và được xóa bởi phần cứng khi vector ngắt tương ứng được thực hiện Bit này cũng có thể được xóa bằng phần mềm

Trang 18

Báo cáo thực tập tốt nghiệp Chương 6 USART

 Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit stop

 Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số

 Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận

Sơ đồ khối của bộ USART như sau:

Hình 6.1 Sơ đồ khối bộ USART

USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Các thanhghi điều khiển được sử dụng chung giữa các phần này

6.1 Tạo xung clock

Trang 19

Báo cáo thực tập tốt nghiệp Chương 6 USART

Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ nhận USART

hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền đồng

bộ master và truyền đồng bộ slave Sơ đồ khối của bộ tạo xung clock như sau:

Hình 6.2 Đơn vị tạo xung clock

.

txclk: xung đồng hộ bộ truyền

rxclk: xung đồng hồ bộ nhận

xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master

xcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng

 5, 6, 7, 8, hoặc 9 bit dữ liệu

 1 hoặc 2 bit stop

Một khung truyền bắt đầu với một bit start, theo sau đó là bit có trọng số thấp nhất(LSB) của dữ liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB) vàbit stop

Hình 6.3 Định dạng khung truyền

St: bit start (mức thấp)

Trang 20

Báo cáo thực tập tốt nghiệp Chương 6 USART

Sp: bit stop (mức cao)

IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)

6.3 Khởi tạo USART

Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập định dạngkhung và kích hoạt bộ truyền và bộ nhận

Ví dụ dưới đây thiết lập hoạt động truyền bất động bộ sử dụng polling (không dùngngắt) và định dạng khung truyền là cố định Tốc độ baud là một tham số của hàm

void USART_Init( unsigned int baud )

{

/* Set baud rate */

UBRRH = (unsigned char)(baud>>8);

UBRRL = (unsigned char)baud;

/* Enable receiver and transmitter */

UCSRB = (1<<RXEN)|(1<<TXEN);

/* Set frame format: 8data, 2stop bit */

UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

}

6.4 Truyền thông dữ liệu-bộ truyền USART

Bộ truyền USART được kích hoạt bằng cách thiết lập bit TXEN trong thanh ghiUCSRB Khi bộ truyền được kích hoạt, chân TxD hoạt động như ngõ ra của bộ truyềnnối tiếp Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được thiết lậptrước khi thực hiện truyền dữ liệu

6.4.1 Truyền khung 5 đến 8 bit dữ liệu

Việc truyền dữ liệu được thiết lập bằng cách nạp dữ liệu truyền vào bộ đệm truyền

Dữ liệu trong bộ đệm sẽ được đưa vào thanh ghi dịch khi thanh ghi dịch đã sẵn sàng gửimột khung mới

Ví dụ dưới đây là một hàm truyền USART dựa trên việc kiểm tra cờ UDRE

void USART_Transmit( unsigned char data )

{

/* Wait for empty transmit buffer */

while ( !( UCSRA & (1<<UDRE)) )

;

/* Put data into buffer, sends the data */

UDR = data;

}

6.4.2 Truyền khung 9 bit dữ liệu

Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải được ghi vào bit TXB8 trong thanh ghiUCSRB trước khi byte còn lại được ghi vào UDR

Ví dụ:

Trang 21

Báo cáo thực tập tốt nghiệp Chương 6 USART

void USART_Transmit( unsigned int data )

{

/* Wait for empty transmit buffer */

while ( !( UCSRA & (1<<UDRE))) )

6.5.1 Nhận khung với 5 đến 8 bit dữ liệu

Bộ nhận bắt đầu nhận dữ liệu khi nó phát hiện một bit start hợp lệ Mỗi bit theo saubit start sẽ được lấy mẫu tại tốc độ baud hoặc tốc độ đồng hồ XCK, và được dịch vàotrong thanh ghi dịch của bộ nhận cho đến khi phát hiện một bit stop đầu tiên Nội dungcủa thanh ghi dịch sau đó được đưa vào bộ đệm Bộ đệm của bộ nhận có thể được đọcbằng cách đọc UDR

Ví dụ sau đây là một hàm nhận USART dựa trên việc kiểm tra cờ kết thúc truyền(RXC)

unsigned char USART_Receive( void )

{

/* Wait for data to be received */

while ( !(UCSRA & (1<<RXC)) )

;

/* Get and return received data from buffer */

return UDR;

}

6.5.2 Nhận khung với 9 bit dữ liệu

Nếu nhận dữ liệu 9 bit, bit thứ 9 phải được đọc từ bit RXB8 trong thanh ghi UCSRBtrước khi đọc các bit thấp trong UDR

Ví dụ sau đây là một hàm nhận dữ liệu 9 bit

unsigned int USART_Receive( void )

Ngày đăng: 17/01/2014, 09:46

HÌNH ẢNH LIÊN QUAN

Hình 2.1. Sơ đồ cấu trúc CPU của ATmega16 - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 2.1. Sơ đồ cấu trúc CPU của ATmega16 (Trang 5)
Hình 2.3. Thanh ghi chức năng chung - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 2.3. Thanh ghi chức năng chung (Trang 6)
Hình 2.2. Thanh ghi trạng thái SREG - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 2.2. Thanh ghi trạng thái SREG (Trang 6)
Hình 3.1. Bản đồ bộ nhớ chương trình - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 3.1. Bản đồ bộ nhớ chương trình (Trang 9)
Hình 3.2. Bản đồ bộ nhớ dữ liệu SRAM - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 3.2. Bản đồ bộ nhớ dữ liệu SRAM (Trang 10)
Hình 5.1. Sơ đồ cấu trúc  bộ định thời - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 5.1. Sơ đồ cấu trúc bộ định thời (Trang 13)
Hình 5.2. Đơn vị đếm - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 5.2. Đơn vị đếm (Trang 14)
Hình 5.4. Thanh ghi điều khiển bộ định thời 5.4.1.1. Bit 7-FOC0: So sỏnh ngừ ra bắt buộc - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 5.4. Thanh ghi điều khiển bộ định thời 5.4.1.1. Bit 7-FOC0: So sỏnh ngừ ra bắt buộc (Trang 15)
Hỡnh 5.6. Thanh ghi so sỏnh ngừ ra - Báo cáo thực tập tốt nghiệp - Vi điều khiển
nh 5.6. Thanh ghi so sỏnh ngừ ra (Trang 15)
Hình 5.5. Thanh ghi bộ định thời - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 5.5. Thanh ghi bộ định thời (Trang 15)
Hình 5.7. Thanh ghi mặt nạ ngắt TIMSK 5.4.4.1. Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 5.7. Thanh ghi mặt nạ ngắt TIMSK 5.4.4.1. Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh (Trang 16)
Hình 6.1. Sơ đồ khối bộ USART - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 6.1. Sơ đồ khối bộ USART (Trang 17)
Hình 6.2. Đơn vị tạo xung clock . - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 6.2. Đơn vị tạo xung clock (Trang 18)
Hình 7.1. Sơ đồ bộ biến đổi A/D - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 7.1. Sơ đồ bộ biến đổi A/D (Trang 22)
Hình 7.2. Thanh ghi ADMUX - Báo cáo thực tập tốt nghiệp - Vi điều khiển
Hình 7.2. Thanh ghi ADMUX (Trang 23)

TỪ KHÓA LIÊN QUAN

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

w