PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit > Câu hỏi dsPIC thường gặp

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Câu hỏi dsPIC thường gặp Những vấn đề liên quan tới dsPIC30 và dsPIC33 và PIC24

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 17-12-2007, 11:23 PM   #1
nguyen.geo
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 27
:
Ư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 đỡ !
nguyen.geo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-12-2007, 11:55 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 04:01 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam