Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
288,38 KB
Nội dung
Bộ định thời ngắt (tiếp) TS Nguyễn Hồng Quang Electrical Engineering Khái niệm ngắt • Khái niệm định nghĩa Electrical Engineering 7.2.1 Hệ thống kích hoạt theo kiện (Event-drive System) • Là hệ thống có khả đáp ứng lại với kiện xảy hệ • Các công việc mà hệ thống đáp ứng lại kiện gọi dịch vụ cho kiện (event service) Electrical Engineering 7.2.1 Hỏi vòng • Ví dụ hệ thống điều khiển kiện – Vòng lặp Polling: Electrical Engineering int main (void) { sys_init(); while (TRUE) { if (event_1) service_event_1(); if (event_2) service_event_2(); if (event_n) service_event_n(); } } 4 7.2.1 Khái niệm ngắt – Hỏi vòng • Một số đặc điểm hỏi vòng (polling): – Cấu trúc hệ thống đơn giản – Các kiện bình đẳng, không phân cấp bậc – Thời gian phản ứng kiện phụ thuộc nhiều yếu tố – Nếu kiện thêm vào, thời gian vòng quét dài Electrical Engineering 5 7.2.2 Định nghĩa Ngắt Vi điều khiển • Ý tưởng: Sự xuất kiện làm “ngắt” tiến trình thực chương trình chính, dừng lại thực tiến trình khác • Chương trình gọi chương trình dịch vụ ngắt – Interrupt Service Routine (ISR) • ISR sau kết thúc, điều khiển lại trở chương trình Electrical Engineering 7.2.2 Chu trình ngắt Giản đồ thực thi chương trình: a) Không dùng ngắt; b) Có dùng ngắt Electrical Engineering 7 7.2.2 Đặc điểm ngắt • Ngắt làm chương trình có tính ưu tiên • Ngắt giúp hệ thống phản ứng nhanh với kiện • Ngắt làm song song hóa tác vụ chươngg trình • Ngắt làm chương trình phức tạp Electrical Engineering 8 7.2.3 Các nguyên nhân gây ngắt • Nguyên nhân ngắt: nguồn ngắt • Ngắt cứng: nguồn ngắt từ bên đưa tới – Ví dụ: Tín hiệu chuyển từ -> đưa chân vi điều khiển (nút bấm) • Ngắt g mềm: nguồn g ngắt g từ thiết bịị ngoại g vi bên vi điều khiển – Ví dụ: tín hiệu báo tràn định thời Electrical Engineering 7.2.3 Các kiện xảy ngắt • • • • • Timer tràn (ngắt mềm) Timer tràn (ngắt mềm) Truyền nhận tín hiệu nối tiếp (ngắt mềm) Sự kiện (ngắt cứng) P3.2 Sự kiệ kiện ài (ngắt ( cứng) ứ ) P3 P3.33 Electrical Engineering 10 7.2.3 Bảng Vector ngắt Nguồn ngắt Cờ ngắt Địa vector Resett hệ R thống RST 0000H Ngắt IE0 0003H Bộ định thời TF0 000BH Ngắt goà IE1 0013H 00 Bộ định thời TF1 001BH Cổng nối tiếp TI RI 0023H • Đối với ngắt phải có trình phục vụ ngắt ISR (Interrupt service routine) • Đối với ngắt có vị trí cố định nhớ để giữ địa ISR Nhóm vị trí nhớ đ dành dà h riêng iê để gửi ửi địa ISR gọi bảng véc tơ ngắt 11 Electrical Engineering 7.2.3 Các bước thực ngắt Thực nốt lệnh dang dở Cất nội dung PC vào Stack Lưu trạng thái hành ngắt Các ngắt chặn lại mức ngắt Nạp địa vector ngắt vào PC Thực thi ISR Electrical Engineering 12 7.2.3 Thanh ghi điều khiển ngắt Electrical Engineering 13 7.2.4 Ví dụ lập trình ngắt cho định thời • Khi cờ TF đặt lên 1, lệnh chờ “JNB TF, đích” Vấn đề với ới phương h pháp há này, vii điều điề khiển khiể không khô thể làm việc khác • Sử dụng ngắt cờ TF bật lên vi điều khiển bị ngắt nhảy tới bảng véc tơ ngắt để phục vụ ISR • Bằng cách vi điều khiển làm công việc khác thông báo định thời quay tràn Electrical Engineering 14 7.2.4 Ví dụ Viết chương trình để tạo sóng vuông tần số 50Hz chân P1.2 XTAL = 11.0592MHz 15 Electrical Engineering 7.2.4 ISR có kích thước lớn ORG 0000H LJMP MAIN ;vector ngắt Reset hệ thống ;nhảy đế đến chương h trình ì h hí h ORG 00xxH ;00xxH vector ngắt LJMP ISR ;nhảy đến chương trình ORG 0030H ; địa bắt đầu chương trình MAIN: ;chương trình bắt đầu - ISR: ;chương trình dịch vụ ngắt RETI Electrical Engineering ;trở chương trình 16 16 7.2.5 Ưu tiên ngắt • Thanh ghi IP sét lập mức ưu tiên ngắt ắ • Bít D7 D6 hay IP.7 IP.6 - chưa dùng • Bít D5 hay IP.5 bít ưu tiên ngắt Timer2 (dùng cho 8052) • Bít D4 hay IP.4 bít ưu tiên ngắt cổng nối tiếp • Bít D3 hay IP.3 IP bít ưu tiên ngắt Timer1 • Bít D2 hay IP.2 mức ưu tiên ngắt • Bít D1 hay IP.1 mức ưu tiên ngắt Timer • Bít D0 hay IP.0 mức ưu tiên ngắt 17 Electrical Engineering 7.2.5 Ví dụ • Mức ưu tiên ngắt thiết lập lệnh – “MOV IP, #0000 1100B” • Lệnh “MOV IP, #0000 1100B” lập ngắt (INT1) ngắt Timer1 (TF1) có mức ưu tiên cao ngắt khác – – – – Mức ưu tiên cao nhất: Ngắt (INT1) Ngắt Timer (TF1) Ngắt (INT0) Ngắt ắ Timer0 i (TF0) ( 0) • Mức ưu tiên thấp nhất: Ngắt cổng truyền thông nối tiếp (RI + RT) Electrical Engineering 18 7.2.5 Ngắt ngắt • Không ngắt ưu tiên bị dừng thực • Ngắt ưu tiên cao xảy ngắt ưu tiên thấp thực • Ngắt ưu tiên thấp xảy ngắt thực • Nếu Nế ngắt ắ ù xảy ả ra, ngắt ắ ưu tiên iê cao sẽẽ thực trước, hai có mức ưu tiên, ngắt đến trước thực trước 19 Electrical Engineering 7.2.5 Ví dụ Electrical Engineering 20 10 7.2.6 Ngắt cứng • 8051 có hai ngắt phần cứng INT0 INT1 • Tương ứng với chân P3.2 P3.3 địa chúng bảng véc tơ ngắt 0003H 0013H • Có hai h i mức ứ kí kíchh hoạt h t cho h ngắt phần hầ cứng ngoài: Ngắt theo mức ngắt theo sườn Electrical Engineering 21 7.2.6 Ngắt theo mức • Chân INT0 INT1 bình thường mức cao tín hiệu mức thấp đặt vào thực ngắt • Tín hiệu mức thấp chân INT phải trước lệnh cuối trình phục vụ ngắt RETI • Nếu không ngắt khác lại tạo Hay nói cách khác, khác tín hiệu ngắt mức thấp không lấy ISR kết thúc ngắt khác Electrical Engineering 22 11 7.2.6 Ví dụ Electrical Engineering 23 7.2.6 Ngắt theo sườn • Thanh thi TCON giữ bít cờ IT0 IT1 xác ị chế độ ộ ngắt g theo sườn hay y ngắt g theo mức định ngắt ắ phần ầ cứng IN0 IN1 bít D0 D2 ghi TCON tương ứng • Khi bật lại nguồn TCON.0 (IN0) TCON.2 (IN1) mức thấp (0) nghĩa ngắt phần cứng chân INT0 INT1 ngắt theo mức thấp • Bằng Bằ việc iệ chuyển h ể bít bí TCON.0 TCON vàà TCON.2 TCON lên lê cao qua lệnh “SETB TCON.0” “SETB TCON.2” ngắt phần cứng INT0 INT1 trở thành ngắt theo sườn Electrical Engineering 24 12 7.2.6 Thanh ghi TCON • Bít TF1 hay TCON.7 cờ tràn Timer1 Nó lập phần cứng đếm/ định thời tràn, xoá phần cứng xử lý đến trình phục vụ ngắt • Bít TR1 hay TCON.6 bít điều ề khiển ể hoạt động Timer1 Nó thiết lập xoá phần mềm để bật/ tắt Timer1 • Bít TF0 hay TCON.5 tương tự TF1 dành cho Timer0 • Bít TR0 hay TCON.4 tương tự TR1 dành cho Timer0 • Bít IE1 hay TCON.3 cờ ngắt theo sườn Nó thiết lập CPU sườn ngắt (chuyển từ cao xuống thấp) phát Nó xóa CPU ngắt xử lý Lưu ý: Cờ không chốt ngắt theo mức thấp • Bít IT1 hay TCON.2 TCON bít điều khiển kiểu ngắt ngắt Nó thiết lập xoá phần mềm để xác định kiểu ngắt theo sườn xuống hay mức thấp • Bít IE0 hay TCON.1 tương tự IE1 dành cho ngắt • Bít IT0 hay TCON.0 tương tự bít IT1 dành cho ngắt 25 Electrical Engineering 7.2.6 Lưu ý • • Khi trình phục vụ ngắt ISR kết thúc (nghĩa ghi thực lệnh RETI) Các bít (TCON.1 TCON 3) TCON.3) đ xoáá để báo bá ằ ngắt đ hoàn h tất vàà 8051 sẵn sàng đáp ứng ngắt khác chân Để ngắt khác nhận tín hiệu chân phải trở lại mức cao sau nhảy xuống thấp để phát ngắt theo sườn Trong thời gian trình phục vụ ngắt thực chân INTn bị làm ngơ không quan tâm đến có lần chuyển dịch từ cao xuống thấp TCON.1 TCON.3 bị xoá lệnh RETI lệnh cuối ISR Do vậy, không báo cần đến lệnh xoá bít “CLR TCON.1” hay “CLR TCON.3” trước lệnh RETI trình phục vụ ngắt ngắt cứng INT0 INT1 Electrical Engineering 26 13 7.2.7 Các lệnh dùng bảo vệ PUSH ACC PUSH PSW POP PSW POP ACC Các ghi cần bảo vệ •PSW •DPTR (DPH/DPL) •PSW •ACC •B •Registers R0-R7 Electrical Engineering 27 7.2.7 Bảo vệ ghi xảy ngắt • CLR C ;Clear carry MOV A,#25h ;Load the accumulator with 25h ADDC A,#10h ;Add 10h, with carry • Ngắt làm thay đổi giá trị ghi Electrical Engineering 28 14 7.2.7 Các lỗi sử dụng ngắt • Quên không bảo vệ ghi • Quên không trả lại giá trị sau kết thúc ngắt • Trả ngắt dùng ret thay dùng reti Electrical Engineering 29 15