Sử dụng nhiều ngắt trong Pic
Chào mọi người.
Mình đang học lập trình với Pic, có một thắc mắc về ngắt trong Pic, mong mọi người chỉ giúp. Mình định dùng nhiều ngắt trong 1 chương trình, kiểu như là đang move dữ liệu từ chuyển đổi ADC sang 1 bộ đệm trung gian thì có ngắt truyền tin chẳng hạn. Mình có đọc ở đâu đó trên diễn đàn nói về vấn đề này (không nhớ cụ thể ở đâu, nội dung là: trong 1 ngắt mà cho vẫn phép các ngắt khác (set GIE = 0) thì các giá trị đã lưu của ngắt cũ sẽ bị đè lên bởi ngắt mới và chương trình không thể quay trở lại chương trình chính khi đã thoát ngắt ---> ctr bị lỗi. Vậy thì không có cách nào để thực hiện ngắt trong ngắt được, đúng không? |
1 Attachment(s)
sư huynh xem lại phần ưu tiên ngắt thử coi, thứ tự cho phép các ngắt
tài liệu này hi vọng giúp đuợc huynh |
Trích:
Ý mình muốn hỏi là không dùng kiểu hỏi vòng đó mà vẫn đáp ứng được ngắt ưu tiên cao khi đang thực hiện một ngắt ưu tiên thấp hơn? |
Tìm trên dientuvietnam.net thấy có bài nói về cái này của bác CHIBANG nhưng đọc mà vẫn chưa hiểu:
http://dientuvietnam.net/forums/show...p?t=831&page=3 Cho 3 ngắt 1,2,3; làm thế nào để nếu đang thực hiện ngắt i mà có ngắt j <i xẩy ra thì phải phục vụ ngắt j ngay, CHIBANG cho đáp án là: Trong hàm ngắt, viết như sau: Ngắt_1() { //Chèn mã lệnh: disable ngắt 1,2,3 tại đây GIE=1; //Chèn mã lệnh trình phục vụ ngắt 1 } Ngắt_2() { //Chèn mã lệnh: disable ngắt 2,3 tại đây GIE=1; //Chèn mã lệnh trình phục vụ ngắt 2 } Ngắt_3() { //Chèn mã lệnh: disable ngắt 3 tại đây GIE=1; //Chèn mã lệnh trình phục vụ ngắt 3 } Như ở trong ngắt 1, đầu tiên cấm ngắt 1,2,3; sau đó cho phép tất cả các ngắt (GIE = 1), rồi thực hiện ngắt 1. Nếu đang thực hiện ngắt 1 mà có ngắt 2 hoặc 3 nhảy vào thì điều j sẽ xảy ra??? Mong các cao thủ chỉ cho con đường sáng! Lưu ý là áp dụng cho Pic16 mọi người nhé! |
Trời!
Không ai vào chỉ giúp mình ah? |
Trích:
Tất nhiên là kỹ thuật này được đưa ra để giải quyết vấn đề ưu tiên ngắt cho các PIC 8-bit (kể cả PIC18, vì chúng cũng chỉ có 2 mức ưu tiên, nên vẫn xảy ra trường hợp có nhiều ngắt cùng mức cần được phân biệt xử lý). Thân, |
Em đang định viết chương trình điều khiển đèn led nháy nhiều chế độ dùng 1 button nhưng mà chưa biết làm thế nào? Có phải phải dùng ngắt ngoài không?
Ai biết thì cho em code. Thank! |
Trích:
|
Trích:
Code:
#include <16f877a.h> |
Múi giờ GMT. Hiện tại là 12:01 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam