PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Câu hỏi dsPIC thường gặp (http://www.picvietnam.com/forum/forumdisplay.php?f=69)
-   -   Ưu tiên cho các ngắt sử dụng thế nào ? (http://www.picvietnam.com/forum/showthread.php?t=1824)

nguyen.geo 17-12-2007 11:23 PM

Ưu tiên cho các ngắt sử dụng thế nào ?
 
Chào cả nhà, Chào Anh Nam. Hiện em đang gặp khó khăn trong việc sử dụng các mức ưu tiên trong lập trình cho con Dspic30F4011. Mấy thanh ghi SR,INTCON,CORCON và nhất là thanh ghi IPCx. Thanh ghi IPCx ở mỗi trường hợp đề dùng 3bit nào đấy nhưng em không hiểu rõ là như thế nào. Ví dụ như em cần có ngắt ưu tiên như là ưu tiên cho ngắt TMR1 trước, sau đó là TMR2 và kế tiếp là CN1 chẳng hạn. Nếu thế này thì em phải thiết lập các thanh ghi này thế nào ạ. Mong cả nhà và Trưởng lão giúp đỡ !

namqn 17-12-2007 11:55 PM

CPU của dsPIC có thể hoạt động ở 1 trong 16 mức ưu tiên ngắt, các mức 8 - 15 chỉ dành cho các bẫy (trap), là các sự kiện ngoại lệ, còn các ngắt ngoại vi và ngắt ngoài chỉ có thể mang mức 0 - 7. CPU chỉ bị ngắt khi nó có mức ưu tiên thấp hơn mức ưu tiên của nguồn ngắt.

Các mức ưu tiên của các ngắt ngoại vi hay ngắt ngoài được thiết lập trong thanh ghi IPCx tương ứng, còn mức ưu tiên của CPU được thiết lập bởi bit IPL<3> trong thanh ghi CORCON, và các bit IPL<2:0> trong thanh ghi SR. Bit IPL<3> ở mức '1' khi xảy ra bẫy (trap) và chỉ có thể bị xóa về '0' bởi người dùng, chứ không thể được đặt lên '1' bởi người dùng.

Khi dsPIC bị reset thì CPU của nó sẽ có mức ưu tiên là 0, và các ngắt ngoại vi hay ngắt ngoài sẽ có mức ưu tiên là 4. Người dùng thường chỉ cần thay đổi giá trị mức ưu tiên của các nguồn ngắt khi nhất thiết cần có sự ưu tiên giữa các ngắt này.

Mức 0 của một nguồn ngắt về mặt ý nghĩa sẽ cấm ngắt đó, còn mức ưu tiên của CPU là 7 cũng sẽ cấm toàn bộ các ngắt ngoại vi và ngắt ngoài.

Lấy ví dụ trường hợp của bạn, có ngắt Timer 1 ưu tiên hơn ngắt Timer 2, và ngắt Timer 2 ưu tiên hơn ngắt CN1 (thực ra chỉ có 1 ngắt CN cho tất cả các chân CNx), bạn có thể đặt mức ưu tiên của Timer 1 là 4, của Timer 2 là 3, và của CN1 là 2, CPU vẫn giữ mức ưu tiên là 0 như vừa được reset. Khi đó, bạn sẽ có thứ tự ưu tiên như mong muốn.

Thân,


Múi giờ GMT. Hiện tại là 03:26 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