1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lab 3 1 giao tiếp serial port, eeprom, rtc

31 0 0
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 đề Giao Tiếp Serial Port, Eeprom, Rtc
Tác giả Nguyễn Quang Khang, Nguyễn Thị Kim Liên, Phan Phúc Lâm
Thể loại Lab Report
Định dạng
Số trang 31
Dung lượng 1,43 MB

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

Nội dung

MỤC TIÊU: ➢ Hiểu và sử dụng được các ngoại vi UART, I2C, SPI ➢ Hiểu cách giao tiếp với RTC, EEPROM b Kết nối dây USB-Serial vào kit thí nghiệm c Setup chương trình Hercules với baudra

Trang 1

TÊN MSSV

Trang 2

MỤC TIÊU:

➢ Hiểu và sử dụng được các ngoại vi UART, I2C, SPI

➢ Hiểu cách giao tiếp với RTC, EEPROM

b) Kết nối dây USB-Serial vào kit thí nghiệm

c) Setup chương trình Hercules với baudrate 9600, 8 bit data, no parity, 1 stop, no handshake

Trang 3

d) Sử dụng các ví dụ mẫu trong tài liệu thí nghiệm, viết chương trình khởi động UART0 với các thông số như trên, chờ nhận một byte từ UART0 và phát ngược lại UART0

Trang 5

BÀI 2

a) Kết nối các tín hiệu SDA và SCL của AVR vào các tín hiệu tương ứng trên module RTC Kết nối 1 chân port vào tín hiệu MFP Kết nối LCD 16x2 vào 1 port của AVR

Trang 6

b) Viết chương trình con khởi động RTC với thời gian hiện hành, cấu hình xung MFP tần số

1Hz Sau đó cứ mỗi cạnh lên của MFP, đọc các giá trị ngày tháng năm giờ phút giây của

Trang 7

LDI R18,$28 ;Function set 2 d?ng font 5x8,mode 4 bit

LDI R19,$01 ;Clear display

LDI R20,$0C ;display on,con tr? off

Trang 14

EXIT_MSG:

RET

; - CURS_POS:

CBI LCD,RS

MOV R17,R18 ;R18=Function set

RCALL OUT_LCD ;ghi 1 byte data ra LCD

MOV R17,R19 ;R19=Clear display

Trang 16

a) Kết nối các tín hiệu MOSI, SCK của port SPI từ AVR đến tín hiệu SDI và CLK của khối

thanh ghi dịch Kết nối 2 chân port khác vào tín hiệu nCLR và LATCH Kết nối ngõ ra

của thanh ghi dịch vào Bar LED

Trang 17

b) Kết nối các tín hiệu UART như ở bài 1

c) Viết chương trình nhận 1 giá trị từ UART và xuất ra Bar Led sử dụng SPI

Trang 18

ii) call USART_SendChar

jj) CBI PORTB,SS ; CHO PHEP

qq) ; Enable transmitter and receiver

rr) ldi r16, (1 << RXEN0) | (1 << TXEN0)

Trang 19

ttt) lds r16, UDR0 ;get data

uuu) out porta,r16

Trang 20

b) Kết nối các tín hiệu UART như ở bài 1

c) Kết nối 1 port vào Bar LED

d) Viết chương trình đếm số ký tự nhận được từ UART và xuất ra Bar Led, cứ mỗi lần có 1

byte nhận được, số đếm tăng lên 1 và được ghi vào EEPROM Khi vi xử lý mất điện và có

lại, số đếm được đọc ra từ EEPROM và lấy làm giá trị bắt đầu

e) EQU OUTPORT=PORTA

f) EQU OUTPORT_DDR=DDRA

g) EQU WIP=0 ; BIT BAO BAN

h) EQU WREN=$06 ; MA LENH CHO PHEP GHI BO NHO

i) EQU RDSR=$05 ; MA LENH DOC TT BO NHO

j) EQU WRSR=$01 ;MA LENH GHI TT BO NHO

k) EQU SPI_RD=$03 ; MA LENH DOC BO NHO

l) EQU SPI_WR=$02 ; MA LENH DOC TT BO NHO

Trang 21

ee) OUT PORTA,R20

ff) ; Replace with your application code

ss) LDI R16,WREN ; ma lenh cho phep ghi bo nho

tt) CBI PORTB,SS ; CHO PHEP truyen spi

uu) RCALL SPI_TRANS

vv) SBI PORTB,SS ; chot lenh cho phep ghi

ww) LDI R16,SPI_WR ; ma lenh ghi bo nho

xx) CBI PORTB,SS ; CHO PHEP truyen SPI

yy) RCALL SPI_TRANS

eee) RCALL SPI_TRANS

fff) MEM_WR: ; GHI DATA RA BO NHO

ggg) call USART_ReceiveChar

hhh) call USART_SendChar

iii) RCALL SPI_TRANS1

jjj) SBI PORTB,SS ; KTHUC TRUYEN SPI

kkk) WR_FIN: ;DOC TGHI STATUS KTRA BIT WIP=0 BAO BO NHO ROI~ lll) LDI R16,RDSR ; DOC TGHI STATUS

mmm) CBI PORTB,SS

nnn) RCALL SPI_TRANS

ooo) SBRC R18,WIP ; WIP=0 bo nho roi~

ppp) RJMP WR_FIN ; ko thi cho`

qqq) SBI PORTB,SS; KET THUC TRUYEN SPI

rrr) ;;; DOC BO NHO TU DIA CHI MEM_BYTE

sss) LDI R16,SPI_RD

ttt) CBI PORTB,SS

uuu) RCALL SPI_TRANS

vvv) LDI R16,MEM_BYTE3

Trang 22

www) RCALL SPI_TRANS

xxx) LDI R17,HIGH(MEM_BYTE21)

yyy) RCALL SPI_TRANS

zzz) LDI R17,LOW(MEM_BYTE21)

aaaa) RCALL SPI_TRANS

bbbb) MEM_RD: ;DOC DATA TU BO NHO

cccc) LDI R16,$00 ;DATA "GIA"

mmmm) ; Enable transmitter and receiver

nnnn) ldi r16, (1 << RXEN0) | (1 << TXEN0)

Trang 23

a) Kết nối các tín hiệu UART như ở bài 1

b) Kết nối 1 port vào Bar LED

c) Viết chương trình đếm số ký tự nhận được từ UART và xuất ra Bar Led, cứ mỗi lần có 1

byte nhận được, số đếm tăng lên 1 và được ghi vào EEPROM nội của AVR Khi vi xử lý

mất điện và có lại, số đếm được đọc ra từ EEPROM nội và lấy làm giá trị bắt đầu

Trang 25

eee) RET

Trang 26

BÀI 1

1 Trả lời các câu hỏi

a Với tần số là 8Mhz, baudrate thực tế sẽ sai lệch với mong muốn là 9600 như thế nào?

Với f = 8Mhz, tốc độ baud là 9600 và giả sử ta cho U2Xn =0:

=> X = (2 𝑈2𝑋𝑛.𝑓)/16.(𝑡ố𝑐 độ 𝑏𝑎𝑢𝑑) – 1 = 51.08

Ta lấy X là số nguyên nên chọn X = 51 Tốc độ baud thực tế : (2 𝑈2𝑋𝑛.𝑓)/16.( 51.08) – 1 ≈ 9615 Sai số(%) = [ 𝑇ố𝑐 độ 𝑏𝑎𝑢𝑑 𝑡ℎự𝑐 𝑡ế 𝑇ố𝑐 độ 𝑏𝑎𝑢𝑑 𝑚𝑜𝑛𝑔 𝑚𝑢ố𝑛 − 1]x100% = 0.156% < 2%

=> Sai số chấp nhận được

b Cờ UDRE dùng để làm gì?

Cờ UDREn = 1 khi bộ đệm phát đang trống và sẵn sàng nhận dữ liệu mới UDREn được tự động xóa khi ghi dữ liệu mới vào thanh ghi UDRn Khi cho phép ngắt toàn cục I = 1 và bit UDRIEn = 1, cờ UDREn = 1 sẽ tạo ra tín hiệu ngắt hanh ghi dữ liệu trống (data register empty interrupt).Khi reset hệ thống, UDREn = 1( bộ đệm phát trống)

c Sự khác nhau giữa hardware UART và software UART (bit-banging UART) + Hardware UART là một phần cứng được tích hợp sẵn trên vi điều khiển và được thiết kế để truyền và nhận dữ liệu thông qua các chân đầu vào/ra cụ thể được chỉ định cho mục đích đó Hardware UART có khả năng xử lý dữ liệu nhanh hơn và hiệu quả hơn so với Software UART + Software UART (bit- banging UART) là một phần mềm được thực hiện trên vi điều khiển để truyền

và nhận dữ liệu thông qua các chân đầu vào/ra được thiết lập để đóng vai trò như một phần cứng UART Phần mềm này sẽ đọc hoặc viết dữ liệu trực tiếp

từ các chân đầu vào/ra, sử dụng các thủ tục phần mềm để đảm bảo chuẩn xác

Trang 27

và đồng bộ hóa dữ liệu Tuy nhiên, phần mềm UART yêu cầu thời gian và tài nguyên tính toán để xử lý dữ liệu, do đó hiệu suất của nó thấp hơn so với phần cứng UART

d Chân TxD0 và chân RxD0 của UART0 là chân port nào?

Chân TXD0 ứng với chân PD1 và chân RXD0 ứng với chân PD0

e Atmega324 có bao nhiêu phần cứng UART?

Atmega324 có 2 phần cứng UART gồm Bộ thu(Receiver) và Bộ truyền (Transmitter)

2 Mã nguồn chương trình với chú thích

9 LDI R16, 6; 8 BIT KHONG XET CHAN LE , 1 STOP BIT

10 STS UCSR0C,R16 ; 1 STOP BIT KHONG XET CHAN LE

16 LDI R16,HIGH (RAMEND)

17 OUT SPH,R16 ; SET STACK

18 LDI R16, LOW (RAMEND)

26 SBRS R16,UDRE0 ; KIEM TRA CO TRONG KHONG

27 RJMP PHAT ; NEU CHUA TRONG THI TIEP TUC KIEM TRA LAI

28 STS UDR0,R18 ; KHI TRONG THI CHEP DU LIEU VAO UDR0

Trang 28

BÀI 2

1 Trả lời các câu hỏi

a Các chân SCL, SDA là chân nào của AVR?

b Vẽ hình mô tả kết nối trong bài thí nghiệm

2 Mã nguồn và chú thích

BÀI 3

1 Trả lời các câu hỏi

a Theo datasheet của 74HC595, tần số cao nhất của xung nhịp đưa vào 74595

Trang 29

42 ; Enable transmitter and receiver

43 ldi r16, (1 << RXEN0) | (1 << TXEN0)

44 sts UCSR0B, r16

45 ; Set frame format: 8 data bits, no parity, 1 stop bit

46 ldi r16, (1 << UCSZ01) | (1 << UCSZ00)

Trang 30

69 sbrs r17, RXC0 ;check USART Receive Complete bit

1 Trả lời các câu hỏi

a Dung lượng của EEPROM 25AA1024 là bao nhiêu?

Dung lượng của EEPROM 25AA1024 là 1 Megabit (128 Kilobytes)

b Theo datasheet, tần số nhanh nhất của xung CK đưa vào EEPROM này là bao nhiêu?

Theo datasheet, tần số nhanh nhất của xung CK đưa vào EEPROM này là

10 MHz

2 Mã nguồn và chú thích

Trang 31

BÀI 5

1 Trả lời các câu hỏi

a Atmega324PA có dung lượng EEPROM là bao nhiêu?

b Liệt kê sự khác nhau giữa SRAM và EEPROM

c Liệt kê sự khác nhau giữa Flash và EEPROM

2 Mã nguồn chương trình với chú thích

Ngày đăng: 04/11/2024, 15:45

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

TÀI LIỆU LIÊN QUAN

w