1. Trang chủ
  2. » Thể loại khác

documen site ngat la mot tin hieu goi den bo xu li yeu cau bo xu li tam ngung cac

19 4 0

Đ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

Ngắt gì? Ngắt tín hiệu gởi đến xử lí, yêu cầu xử lí tạm ngừng hoạt động để nhảy đến nơi khác thực nhiệm vụ Chương trình với ngắt gọi trình dịch vụ ngắt ISR (Interrupt Service Routine) hay gọi trình quản lý ngắt (Interrupt handler) Các tín hiệu dẫn đến ngắt xuất phát từ : 1.Thiết bị bên chip (ngắt báo đếm timer/counter tràn, ngắt báo trình gởi liệu RS232 kết thúc…) Các tác nhân bên ngồi (ngắt báo có button nhấn, ngắt báo có gói liệu nhận 3… BẢNG VECTOR NGẮT Đối với ngắt phải có trình phục vụ ngắt ISR Khi ngắt đựợc gọi vi điều khiển chạy trình phục vụ ngắt Đối với ngắt có vị trí cố định nhớ để giữ địa ISR Nhóm vị trí nhớ dành riêng để gửi địa ISR gọi bảng véc tơ ngắt Các bước hoạt động ngắt Vi điều khiển kết thúc lệnh thực lưu địa lệnh vào ngăn xếp • ● • ● Nó • ● Bộ • ● Khi nhảy đến vị trí cố định nhớ gọi bảng véc tơ ngắt nơi lưu giữ địa trình phục vụ ngắt vi điều khiển nhận địa ISR từ bảng véc tơ ngắt nhảy tới Nó bắt đầu thực trình phục vụ ngắt lệnh cuối ISR RETI (trở từ ngắt) thực lệnh RETI vi điều khiển quay trở nơi bị ngắt Trước hết nhận địa đếm chương trình PC từ ngăn xếp cách kéo hai byte đỉnh ngăn xếp vào PC Sau bắt đầu thực lệnh từ địa THỨ TỰ ƯU TIÊN NGẮT Một vec tơ ngắt có địa thấp nhớ chương trình có mức độ ưu tiên cao Chẳn hạn ngắt ( INT0 ) có mức độ ưu tiên cao ngắt ( INT1 ) THỨ TỰ ƯU TIÊN NGẮT • Khi AVR thực trình phục vụ ngắt thuộc ngắt lại có ngắt khác kích hoạt Trong trường hợp ngắt có mức ưu tiên cao ngắt ngắt có mức ưu tiên thấp hơn.Lúc ISR ngắt có mức ưu tiên cao thực thi (*) • Khi thực xong ISR ngắt có mức ưu tiên cao quay lại phục vụ tiếp ISR ngắt có mức ưu tiên thấp trước trở chương trình Đây gọi ngắt ngắt Sơ đồ ngắt lồng External Interrupt – Ngắt Đây loại ngắt độc lập với thiết bị ngoại vi chip, ngắt khác thường gắn với hoạt động thiết bị Timer/Counter ,ADC… ATmega128 có ngắt ngồi từ INT0 đến INT7 ( chưa kể tới ngắt reset ).Tám ngắt tương ứng với chân MCU INT0 ,INT1, …, INT7 tương ứng với PIN Atmega128 Có ghi liên quan đến ngắt ngồi : 1.Thanh ghi EIMSK (External Interrupt Mask Register) Thanh ghi EICRA (External Interrupt Control Register A) Thanh ghi EICRB (External Interrupt Control Register B) 4.Thanh ghi EIFR(External Interrupt Flag Register) 1.Thanh ghi EIMSK • Thanh ghi bit, cho phép ngắt Bit có giá trị 1: cho phép ngắt 0: khơng cho phép ngắt Khi cho phép ngắt toàn cục ( set bit I ghi SREG thành ) ngắt chưa thể thực thi, để ngắt thực thi ta cần phải cho phép nó, bit ghi EIMSK định ngắt ngồi tương ứng ( từ INT7 INT0 ) có cho phép hay không Khi số bit ( từ INT7 INT0 ) set thành ngắt tồn cục cho phép ngắt ngồi tương ứng cho phép Cịn tín hiệu ngắt mức hay cạnh ghi EICRA EICRB qui định Thanh ghi EICRA Tám bit ghi EICRA điều khiển kiểu bắt mẫu cho ngắt INT3, INT2, INT1, INT0 Bảng điều khiển ý nghĩa ngắt: Kiểu bắt mẫu ISCn1 ISCn0 0 Mức thấp tạo yêu cầu ngắt Dự trữ Cạnh xuống ( Falling ) tạo yêu cầu ngắt 1 Cạnh lên ( Rising ) tạo yêu cầu ngắt n = 0, 1, Ví dụ: cho phép sử dụng ngắt số (INT6), cần phải khởi tạo cho ghi EIMSK giá trị là: 01000000b tương ứng EIMSK=0x40 Thanh ghi EICRB ghi bit, điều khiển ngắt từ INT -> INT7 Ví dụ: Khởi tạo CPU cho phép ngắt số phát sinh ngắt có tác động mức thấp EIMSK= 0x40 // cho phép ngắt số EICRB = 0x00 // tác động mức thấp Bảng điều khiển ý nghĩa ngắt: 4.Thanh ghi EIFR • • Bits – INTF7 - INTF0: External Interrupt Flags – : Đây tám cờ ngắt tương ứng với tám ngắt ngồi INT7 INT0 Khi có tín hiệu u cầu ngắt ngồi cờ ngắt tương ứng set thành 1, ngắt tương ứng cho phép MCU nhảy tới bảng véc tơ ngắt, cờ ngắt xóa chương trình phục vụ ngắt ( ISR ) thực thi • Ngồi ta có đặt hay xóa cờ ngắt cách ghi trực tiếp giá trị logic vào chương trình phục vụ ngắt • • • • • • • • • • • • • • • • • • • • • • #include // Khai báo biến toàn cục (nếu cần) // Khai báo hàm khởi tạo CPU, PORT // Khai báo hàm phục vụ ngắt #pragma interrupt_handler : void (void) { // Thực thi yêu cầu ngắt } // Khai báo hàm // Đoạn chương trình void main (void) { CPU_init (); PORT_init (); while(1) { // Các lệnh thực thi yêu cầu // Gọi hàm } } ... đến ngắt xu? ??t phát từ : 1.Thiết bị bên chip (ngắt báo đếm timer/counter tràn, ngắt báo trình gởi li? ??u RS232 kết thúc…) Các tác nhân bên ngồi (ngắt báo có button nhấn, ngắt báo có gói li? ??u nhận... điều khiển ý nghĩa ngắt: Kiểu bắt mẫu ISCn1 ISCn0 0 Mức thấp tạo yêu cầu ngắt Dự trữ Cạnh xu? ??ng ( Falling ) tạo yêu cầu ngắt 1 Cạnh lên ( Rising ) tạo yêu cầu ngắt n = 0, 1, Ví dụ: cho phép sử... A) Thanh ghi EICRB (External Interrupt Control Register B) 4.Thanh ghi EIFR(External Interrupt Flag Register) 1.Thanh ghi EIMSK • Thanh ghi bit, cho phép ngắt ngồi Bit có giá trị 1: cho phép

Ngày đăng: 11/12/2022, 17:52

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w