Tải bản đầy đủ

Bài giảng ngắt ngoài chip 18f420

Bài giảng: Ngắt ngoài
I. Mục tiêu
- Khái niệm về ngắt; ngắt ngoài trên PIC18F4520
- Cách lập trình sử dụng ngắt
II. Nội dung
II.1. Khái niệm về ngắt: Là tạm thời dừng công việc hiện tại và chuyển sang thực
hiện một nhiệm vụ khác sau đó lại quay lại thực hiện tiếp công việc cũ (đang thực
hiện dở).
Ví dụ: Ví dụ khi bạn đang ăn cơm, có một cuộc điện thoại khẩn cấp gọi đến bất ngờ,
bạn phải dừng bữa ăn và nghe xong cuộc điện thoại, sau đó quay lại ăn cơm tiếp.
Tham khảo thêm:
https://tapit.vn/qua-trinh-thuc-hien-ngat-cua-vi-dieu-khien-mcu-interrupt-processing/
https://en.wikibooks.org/wiki/Microprocessor_Design/Interrupts

Như vậy với khối xử lý ngắt, vi điều khiển sẽ trở nên “đa nhiệm” hơn. Ví dụ vừa điều
khiển robot chạy vừa đọc được cảm biến, encoder; vừa hiển thị vừa đọc được dữ liệu
từ thiết bị khác chuyển đến…
Ngắt ngoài trên PIC18F4520: là ngắt gây ra bởi sườn âm hoặc sườn dương đưa đến
chân INT0(RB0) hoặc INT1(RB1) hoặc INT2(RB2).

Sườn âm:


Sườn dương:
II.2. Cách lập trình sử dụng ngắt
Các bit liên quan:


-

-

-

Bit GIE_GIEH: Giống như van tổng. Khi khóa van (GIE_GIEH=0) các van
con khóa hay mở đều không có nước. Khi mở van (GIE_GIEH=1) nếu van con
nào mở thì van đó sẽ có nước. Như vậy để sử dụng ngắt ngoài cần viết lệnh:
INCONbits.GIE_GIEH=1
Các bit INT0IE, INT1IE và INT2IE giống như các van con. Khi GIE_GIEH=1,
nếu muốn cho phép ngắt ngoài INT0 cần viết lệnh: INCONbits.INT0IE=1
Các bit INTEDG0, 1 và 2: Cho phép đặt cách tác động ngắt bằng sườn âm hoặc
dương. Ví dụ muốn tạo ngắt bằng sườn âm trên chân INT0 sẽ viết:
INCON2bits.INTEDG0=0
Các bit INT0IF, INT1IF và INT2IF: Để xác định ngắt đến từ chân nào. Ví dụ
nếu INT0IF=1 nghĩa là ngắt đến từ chân INT0. Để có thể gây ngắt ở các lần 2,
3… các bit này cần xóa ở chương trình con phục vụ ngắt

Lập trình sử dụng ngắt:
1. Copy khung chương trình sử dụng ngắt (trong tài liệu tra cứu)
2. Chèn vào chương trình chính:
-

Khởi tạo các PORT (ADCON1, TRIS)

-

Set (gán bằng 1) bit ngắt toàn cục INTCONbits. GIE_GIEH=1;


-

Set bit cho phép nguồn ngắt tương ứng: INTCONbits.INT0IE hoặc
INTCON3bits.INT1IE hoặc INTCON3bits.INT2IE

-

Chọn ngắt bằng sườn âm bằng cách xóa các bit tương ứng:
INTCON2bits.INTEDG0=0 hoặc INTCON2bits.INTEDG1 =0 hoặc
INTCON2bits.INTEDG2=0

-

Các lệnh theo đề bài

3. Chèn vào CTCPVN:
-

Xóa cờ ngắt tương ứng: INTCONbits.INT0IF=0 hoặc INTCON3bits.INT1IF=0
hoặc INTCON3bits.INT2IF=0

-

Các lệnh theo đề bài
TIPS: Để nhớ được các bit, các thanh ghi như bảng trên là rất khó. Vì vậy cần
nhớ từ khóa và sử dụng “Tài liệu tra cứu”. Các từ khóa cần nhớ bao gồm: GIE,
INT0IE, INT1IE, INT2IE, EDG0, EDG1, EDG2, INT0IF, INT1IF, INT2IF.
Ví dụ muốn tra tên đầy đủ của bit INT0IE là gì và thuộc thanh ghi nào có thể
gõ thừ khóa INT0IE:



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×