Bài giảng: Ngắt I Mục tiêu - Khái niệm ngắt; ngắt ngồi PIC18F4520 - Cách lập trình sử dụng ngắt II Nội dung II.1 Khái niệm ngắt: Là tạm thời dừng công việc chuyển sang thực nhiệm vụ khác sau lại quay lại thực tiếp công việc cũ (đang thực dở) Ví dụ: Ví dụ bạn ăn cơm, có điện thoại khẩn cấp gọi đến bất ngờ, bạn phải dừng bữa ăn nghe xong đ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ới khối xử lý ngắt, vi điều khiển trở nên “đa nhiệm” Ví dụ vừa điều khiển robot chạy vừa đọc cảm biến, encoder; vừa hiển thị vừa đọc liệu từ thiết bị khác chuyển đến… Ngắt PIC18F4520: ngắt gây sườn âm sườn dương đưa đến chân INT0(RB0) INT1(RB1) 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 van tổng Khi khóa van (GIE_GIEH=0) van khóa hay mở khơng có nước Khi mở van (GIE_GIEH=1) van mở van có nước Như để sử dụng ngắt cần viết lệnh: INCONbits.GIE_GIEH=1 Các bit INT0IE, INT1IE INT2IE giống van Khi GIE_GIEH=1, muốn cho phép ngắt INT0 cần viết lệnh: INCONbits.INT0IE=1 Các bit INTEDG0, 2: Cho phép đặt cách tác động ngắt sườn âm dương Ví dụ muốn tạo ngắt sườn âm chân INT0 viết: INCON2bits.INTEDG0=0 Các bit INT0IF, INT1IF INT2IF: Để xác định ngắt đến từ chân Ví dụ INT0IF=1 nghĩa ngắt đến từ chân INT0 Để gây ngắt lần 2, 3… bit cần xóa chương trình phục vụ ngắt Lập trình sử dụng ngắt: Copy khung chương trình sử dụng ngắt (trong tài liệu tra cứu) Chèn vào chương trình chính: - Khởi tạo PORT (ADCON1, TRIS) - Set (gán 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 INTCON3bits.INT1IE INTCON3bits.INT2IE - Chọn ngắt sườn âm cách xóa bit tương ứng: INTCON2bits.INTEDG0=0 INTCON2bits.INTEDG1 =0 INTCON2bits.INTEDG2=0 - Các lệnh theo đề Chèn vào CTCPVN: - Xóa cờ ngắt tương ứng: INTCONbits.INT0IF=0 INTCON3bits.INT1IF=0 INTCON3bits.INT2IF=0 - Các lệnh theo đề TIPS: Để nhớ bit, ghi bảng khó Vì cần nhớ từ khóa 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 đủ bit INT0IE thuộc ghi gõ thừ khóa INT0IE: ... cách tác động ngắt sườn âm dương Ví dụ muốn tạo ngắt sườn âm chân INT0 viết: INCON2bits.INTEDG0=0 Các bit INT0IF, INT1IF INT2IF: Để xác định ngắt đến từ chân Ví dụ INT0IF=1 nghĩa ngắt đến từ chân... INT0IF=1 nghĩa ngắt đến từ chân INT0 Để gây ngắt lần 2, 3… bit cần xóa chương trình phục vụ ngắt Lập trình sử dụng ngắt: Copy khung chương trình sử dụng ngắt (trong tài liệu tra cứu) Chèn vào chương... (ADCON1, TRIS) - Set (gán 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 INTCON3bits.INT1IE INTCON3bits.INT2IE - Chọn ngắt sườn âm cách xóa bit