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

báo cáo thí nghiệm vi xử lab 4 lab 4 1 lập trình sử dụng ngắt

32 2 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 đề Lập Trình Sử Dụng Ngắt
Tác giả Huỳnh Nguyễn Minh Huy, Huỳnh Văn Quỳnh, Huỳnh Quang Lập
Người hướng dẫn GVHD: Đoàn Ngọc
Trường học Đại Học Quốc Gia Tp. Hồ Chí Minh
Chuyên ngành Khoa Điện-Điện Tử
Thể loại báo cáo
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 32
Dung lượng 9,88 MB

Nội dung

BÁO CÁO LAB 4 Lab 4-1: LẬP TRÌNH SỬ DỤNG NGẮTM ỤC TIÊU :  Hiểu và sử dụng được ngắt ngoài, ngắt timer, UART  Quét LED 7 đoạn và LED ma trận sử dụng ngắt timer b Kết nối PC0 vào oscillo

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ

Sinh viên thực hiện Mã số sinh viên

Huỳnh Nguyễn Minh HuyHuỳnh Văn Quỳnh

Võ Huỳnh Quang Lập

2211179 2212885 1913926

Trang 2

BÁO CÁO LAB 4 Lab 4-1: LẬP TRÌNH SỬ DỤNG NGẮT

M ỤC TIÊU :

 Hiểu và sử dụng được ngắt ngoài, ngắt timer, UART

 Quét LED 7 đoạn và LED ma trận sử dụng ngắt timer

b) Kết nối PC0 vào oscilloscope để đo dạng sóng

c) (Lưu ý: tần số xung clock cho CPU trên kit thí nghiệm là 8Mhz)

B ÀI 2

a) Lặp lại bài 1 sử dụng timer 1 ở mode CTC, sử dụng ngắt COMPARE_MATCH, tạo

ra 1 xung với tần số 100 Hz trên chân PC0

b) Cấu hình timer để tạo ra ngắt COMPARE_MATCH sau mỗi 1ms, trong ngắt sử dụng

1 số đếm để đếm số lần xảy ra ngắt và điều khiển chân PC0 để tạo ra xung tần số 100Hz

HD: Mỗi lần xảy ra ngắt cộng số đếm lên 1, nếu số đếm bằng 5 thì đảo PC0 và reset

số đếm về 0

c) Biên dịch chương trình và quan sát oscilloscope để kiểm tra chương trình

B ÀI 3

Trang 3

a) Kết nối các tín hiệu cần thiết để điều khiển khối LED 7 đoạn.

b) Sử dụng ngắt COMPARE_MATCH của timer 1 như ở Bài 2 để xuất số 1-2-3-4 ra 4LED 7 đoạn với tần số quét 50 Hz Để đo tần số quét, đảo chân PC0 mỗi lần chuyểnsang LED kết tiếp và đo xung này trên oscilloscope

(Tham khảo Chương 4, tài liệu hướng dẫn thí nghiệm)

B ÀI 4

a) Kết nối thêm các tín hiệu cần thiết để điều khiển LCD ký tự

b) Kết nối tín hiệu UART ra khối RS232 và kết nối dây USB-Serial

c) Viết chương trình nhận ký tự từ UART sử dụng ngắt, xuất ký tự đó ra LCD ở vị tríđầu tiên bên trái, đồng thời đếm số ký tự nhận được và xuất ra 4 LED 7 đoạn Khinhận được hơn 1000 ký tự thì reset về 0

Hướng dẫn:

Sử dụng ngắt UART để nhận ký tự Trong ngắt UART tăng biến đếm (16 bit), chuyển

số này thành số BCD và ghi vào 4 byte LED7segValue Ví dụ số đếm đang là 500, ta

ghi 0-5-0-0 vào 4 byte này

Phần quét LED giữ nguyên như ở bài 3

Tham khảo chương 4, phần 4.4, tài liệu hướng dẫn thí nghiệm

B ÀI 5

a) Kết nối thêm các tín hiệu I2C vào module RTC Đưa tín hiệu MFP của RTC vào 1chân ngắt ngoài Thêm vào bài 4 các chức năng sau:

b) Khởi động RTC với thời gian hiện hành, xuất tín hiệu MFP tần số 1 Hz

c) Sử dụng ngắt ngoài của AVR, cứ mỗi khi có ngắt thì đọc thời gian giờ:phút:giây từRTC và xuất ra dòng 2 của LCD

Lưu ý: Các chức năng ở bài 4 vẫn được giữ nguyên

B ÀI 6

a) Kết nối các tín hiệu cần thiết để điều khiển LED ma trận (gỡ bỏ các dây nối đếnLCD, Led 7 đoạn, RTC, UART)

Trang 4

b) Sử dụng chương trình mẫu, chỉnh sửa nếu cần thiết để hiển thị chữ ‘A’ lên LED matrận Quét LED ma trận sử dụng ngắt timer với tần số quét 25 Hz.

c) Chỉnh sửa chương trình để đạt tần số quét là 125Hz

d) Viết chương trình để hiển thị Logo Trường ĐH Bách Khoa lên LED ma trận

B ÀI 1

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

a) Với chế độ Normal mode, mỗi khi vào ngắt Overflow ta có phải khởi

động lại thanh ghi đếm hay không?

Trong chế độ Normal mode, khi xảy ra ngắt Overflow, thanh ghi đếm (TCNTx) sẽ tự động được khởi động lại từ giá trị 0 Vì vậy, ta không cần thiếtphải khởi động lại thanh ghi đếm trong ngắt Overflow

b) Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler

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

Trang 6

B ÀI 2

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

a Với chế độ CTC mode, mỗi khi vào ngắt COMPARE_MATCH ta có phảikhởi động lại thanh ghi đếm hay không?

Trong chế độ CTC mode của AVR, khi xảy ra ngắt COMPARE_MATCH thì giá trịcủa thanh ghi đếm sẽ không bị khởi động lại Thay vào đó, thanh ghi đếm sẽ giữnguyên giá trị và bắt đầu đếm lại từ đó

b Điểm tiện lợi của chế độ này so với cách cấu hình ở bài 1 là như thế nào?

- Chế độ CTC mode cho phép đếm thời gian bằng cách so sánh giá trị củathanh ghi đếm với giá trị của thanh ghi so sánh (OCRnx) Chế độ này đơngiản, dễ hiểu và tiết kiệm bộ nhớ hơn chế độ normal mode, vì ta chỉ cần cấuhình một thanh ghi so sánh duy nhất thay vì phải cấu hình hai thanh ghi nhưtrong chế độ normal mode

Trang 7

-Ở chế độ CTC mode, ta có thể sử dụng ngắt COMPARE MATCH hoặc ngắtOVERFLOW để kích hoạt các tác vụ khác nhau Trong khi đó, trong chế độnormal mode, ta chỉ có thể sử dụng ngắt OVERFLOW để kích hoạt ngắt Từ

đó, ở chế độ CTC mode sẽ linh hoạt hơn trong việc chọn cách sử dụng ngắt

- Trong chế độ CTC mode, ta có thể cấu hình thanh ghi đếm để đếm lên hoặcđếm xuống Trong khi đó, trong chế độ normal mode, ta chỉ có thể đếm lên

c Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler

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

.EQU

Trang 8

B ÀI 3

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

a Để đạt được tần số quét 50Hz thì 1 LED sẽ sáng trong bao lâu?

Để đạt được tần số quét 50Hz, thời gian mỗi chu kỳ là 1/50 = 0.02 giây

= 20ms Vậy 1 LED sẽ sáng trong 20ms/4 = 5ms

b Khi đó, chân PC0 (đảo mỗi khi chuyển LED) sẽ có tần số là baonhiêu?

Tần số của chân PC0 sẽ có tần số là 100Hz

c Số lần xảy ra ngắt cần thiết để chuyển LED là bao nhiêu?

Để chuyển LED cần 16 lần ngắt

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

Trang 10

OUT LED7_DR,R16; port A = output

Trang 14

B ÀI 4

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

a Mô tả các kết nối trên kit

Trang 15

b Mô tả cách cấu hình UART

Baud rate 9600, 8 bit data

c Chuyển đổi số đếm thành số BCD để ghi vào bộ đệm hiển thị LEDnhư thế nào?

- Chia số đếm cho 10, lấy phần nguyên và phần dư Phần dư này sẽtương ứng với chữ số cuối cùng của số đếm (hàng đơn vị)

Trang 16

- Tương tự, lấy phần nguyên của kết quả ở bước trước và chia cho 10,lấy phần nguyên và phần dư Phần dư này sẽ tương ứng với chữ số thứhai của số đếm (hàng chục)

- Lặp lại việc lấy phần nguyên và phần dư cho đến khi phần nguyên

Về 0 Những phần dư lấy được trong các lần chia sẻ từ phải sang tráitạo thành số BCD tương ứng với số đếm

- Ghi kết quả các chữ số này vô bộ đệm hiển thị LED theo yêu cầu

Trang 17

LDI R18,0x28 ; 2 dòng font 5x8, 4 bit

LDI R19,0x01 ; clear display

LDI R20,0x0C ; display on, off control

LDI R21,0x06 ; con trỏ dịch phải, địa chỉ DDRAM tăng 1 khi ghi data,màn hình không dịch (06H)

Trang 20

POINTER_SETUP: //DATA: R17PUSH R17

Trang 21

OUT LED,R18

SBI CONT,POS

CBI CONT,POS

LDI ZH,HIGH(TABLE<<1)LDI ZL,LOW(TABLE<<1)ADD ZL,R17

Trang 24

BREQ LZP1POP R21POP R20RET.ORG 0x200TABLE: DB 0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83

B ÀI 5

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

a Mô tả kết nối trên kit

b Để xảy ra ngắt 1s 1 lần thì ngắt ngoài cấu hình như thế nào?

Sử dụng chế độ Normal với độ chia Prescaler được cấu hình sao cho tần sốđếm lên là 1Hz Cấu hình thanh ghi OCR để so sánh với giá trị đếm tươngứng và tạo ra ngắt Sau đó, ta bật cờ ngắt cho ngắt ngoài trên thanh ghiEICRA và set bit EIMSK

c Hiện tượng gì sẽ xảy ra nếu ta cấu hình ngắt ngoài tích cực theo mức thấp?Nếu ta cấu hình ngắt ngoài tích cực theo mức thấp, điều kiện kích hoạtngắt là đầu vào ngắt có mức điện áp thấp (tức là logic 0) Khi ngắt đượckích hoạt, vi điều khiển sẽ ngắt quá trình thực hiện chương trình chính vàthực hiện tác vụ được gắn với ngắt Nếu không có tín hiệu ngắt nào đượcđưa vào ngõ vào ngắt, giá trị mặc định trên đầu vào sẽ là giá trị cao (tức làlogic 1) Trong trường hợp này, ngắt sẽ không được kích hoạt và chươngtrình sẽ tiếp tục thực hiện các lệnh khác trong chương trình chính

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

B ÀI 6

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

a Mô tả kết nối trên kit

Trang 25

b Để có tần số quét 25Hz thì một cột LED sáng trong bao lâu?

Để có tần số quét 25Hz, thời gian giữa hai lần quét liên tiếp là 1/25 =0,04s Vì ma trận LED 8x8 có 8 cột LED, thời gian hiển thị cho mỗi cộtLED sẽ là 0,04 s / 8 = 0,005s = 5ms

c Sự khác nhau khi quét ở tần số 25Hz và 125Hz

Ma trận LED ở tần số 125Hz sẽ quét nhanh hơn làm cho đèn LED hiển thị

Trang 26

.EQU RCLK=2 ; ST-CP // LATCH - A[2] -> RCLK

OUT PORTB,R16 ; B is output - off, tat led

// khai bao PA[2:0] output, kiem soat xuat Ma led theo Cot (colmun) -> dung IC 535

LDI R16,$07

OUT SHIFT_DDR,R16

LDI R16,$00

OUT SHIFT_PORT,R16 ; PA[2:0] is output - off

// cac bien can thiet

LDI R17,$01 ; xac dinh Cot, quet led thu 1 truoc ///MP : $FE -

TN : $01

LDI R18,$00 ; 8 lan quet Cot

// khoi tao Timer 1, mode CTC (4), clk/64

Trang 27

STS TIMSK1,R16 ; enable Ngat OCFA Timer 1

OUT PORTB,R16; tat het cac led

NOP

Trang 31

LAB 4-2 GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TOÁN

M ỤC TIÊU :

 Hiểu và sử dụng được ngắt timer

 Hiểu cách điều khiển và đo tốc độ động cơ

a Viết chương trình điều khiển tốc độ động cơ DC dùng PWM với tần số 1 Khz,

sử dụng timer 0 Điều khiển tốc độ tăng/giảm sử dụng 2 nút nhấn, mỗi lầnnhấn nút tăng/giảm duty cycle 5% Cho phép động cơ chạy/dừng và điềukhiển động cơ quay thuận/ngược bằng 2 switch trên dip switch

● Kết nối động cơ vào kit thí nghiệm

● Kết nối tín hiệu từ 2 switch trên dipswitch vào 2 chân port của AVR

● Kết nối tín hiệu từ 2 nút nhấn vào 2 chân port của AVR

● Kết nối tín hiệu từ chân OC0B ra 1 kênh đo của khối test point

● Kết nối tín hiệu từ 2 chân port điều khiển chiều quay thuận/ngược raled đơn để kiểm tra trạng thái

b. Biên dịch, thực thi và kiểm tra hoạt động của chương trình bằng cách đo dạngsóng trên oscilloscope và quan sát trạng thái các LED khi thay đổi dip switch

Trang 32

LAB 4-2 GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TOÁN

https://doe.dee.hcmut.edu.vn/

Ngày đăng: 13/05/2024, 14:56

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

TÀI LIỆU LIÊN QUAN

w