PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   HỎi vỀ ngẮt trong ngẮt (http://www.picvietnam.com/forum/showthread.php?t=6758)

DIEP 30-07-2010 04:13 PM

HỎi vỀ ngẮt trong ngẮt
 
Xin các bạn cho hỏi : Tôi đang viết 1 chương trình dùng ngắt capture . Khi còn đang thực hiện chương trình ngắt này chưa xong thì lại xảy ra ngắt (cũng chính loại ngắt này) . Như vậy liệu có thể ngắt khi đang thực hiện ngắt được không và nếu được thì nên viết theo hướng nào và cần lưu ý vấn đề gì ? Xin cảm ơn .

namqn 30-07-2010 06:55 PM

Trích:

Nguyên văn bởi DIEP (Post 37648)
Xin các bạn cho hỏi : Tôi đang viết 1 chương trình dùng ngắt capture . Khi còn đang thực hiện chương trình ngắt này chưa xong thì lại xảy ra ngắt (cũng chính loại ngắt này) . Như vậy liệu có thể ngắt khi đang thực hiện ngắt được không và nếu được thì nên viết theo hướng nào và cần lưu ý vấn đề gì ? Xin cảm ơn .

Dù bạn dùng loại PIC nào thì việc xảy ra chính loại ngắt đang được xử lý sẽ không làm gián đoạn việc xử lý ngắt trước đó, vì mức độ ưu tiên ngắt (nếu PIC đang dùng có nhiều mức ưu tiên ngắt) là như nhau (do cùng một loại ngắt).

Thân,

dcn_dt 30-07-2010 07:18 PM

trong datasheet của PIC8F4331, phần ngắt có đoạn như thế này
"Interrupt flag bits are set when an interrupt condition occurs, regardless of the state of its corresponding enable bit or the global enable bit. User software should ensure the appropriate interrupt flag bits are clear prior to enabling an interrupt. This feature allows for software polling."

Em lần mò một hồi thì hiểu được cái này:
" Bit cờ ngắt được thiết lập khi thỏa mãn các điều kiện ngắt, bất kể trạng thái của bit cho phép ngắt của ngắt tương ứng, hoặc bit cho phép ngắt toàn cục.
Người sử dụng phần mềm phải đảm bảo xóa các bit cờ ngắt trước khi cho phép sảy ra ngắt. Tính năng này cho phép…………????"
Khống biết nên hiểu thế nào về cái "This feature allows for software polling ". mong mọi ngưởi giúp đỡ.

namqn 30-07-2010 11:17 PM

Trích:

Nguyên văn bởi dcn_dt (Post 37656)
trong datasheet của PIC8F4331, phần ngắt có đoạn như thế này
"Interrupt flag bits are set when an interrupt condition occurs, regardless of the state of its corresponding enable bit or the global enable bit. User software should ensure the appropriate interrupt flag bits are clear prior to enabling an interrupt. This feature allows for software polling."

Em lần mò một hồi thì hiểu được cái này:
" Bit cờ ngắt được thiết lập khi thỏa mãn các điều kiện ngắt, bất kể trạng thái của bit cho phép ngắt của ngắt tương ứng, hoặc bit cho phép ngắt toàn cục.
Người sử dụng phần mềm phải đảm bảo xóa các bit cờ ngắt trước khi cho phép sảy ra ngắt. Tính năng này cho phép…………????"
Khống biết nên hiểu thế nào về cái "This feature allows for software polling ". mong mọi ngưởi giúp đỡ.

Câu đó có thể hiểu là "Tính năng này cho phép sử dụng kỹ thuật hỏi vòng".

Thân,

dcn_dt 31-07-2010 12:14 AM

Trích:

Nguyên văn bởi namqn (Post 37661)
Câu đó có thể hiểu là "Tính năng này cho phép sử dụng kỹ thuật hỏi vòng".

Thân,

Anh có thể nói rõ vấn đề này ko. có ví dụ cụ thể thì em cảm ơn lắm lắm. Làm luôn cai TUT thì hay quá. Em mới làm quen với PIC. mong mọi người kiên nhẫn và tận tình giúp đỡ

tdungk7 31-07-2010 08:28 PM

Trích:

Nguyên văn bởi DIEP (Post 37648)
Xin các bạn cho hỏi : Tôi đang viết 1 chương trình dùng ngắt capture . Khi còn đang thực hiện chương trình ngắt này chưa xong thì lại xảy ra ngắt (cũng chính loại ngắt này) . Như vậy liệu có thể ngắt khi đang thực hiện ngắt được không và nếu được thì nên viết theo hướng nào và cần lưu ý vấn đề gì ? Xin cảm ơn .

Đối với những loại PIC (12,16, dsPIC) mà mình đã có dịp được lập trình thì hình như chưa có khả năng gọi ngắt trong ngắt như vậy (kỹ thuật đó thường được gọi là đệ quy). Kỹ thuật đệ quy thường yêu cầu chip xử lý có bộ nhớ dữ liệu lớn, có khả năng xử lý stack để tránh tràn vùng nhớ stack sinh ra trong quá trình gọi đệ quy, và do đó không thích hợp lắm với vi điều khiển vốn được tối ưu cho các tác vụ điều khiển chứ không phải xử lý thông tin.

Để viết hàm kiểu đệ quy thì bạn có thể viết trên máy vi tính (PC) bằng Pascal, C, hay bất cứ một trình biên dịch nào có hỗ trợ đệ quy, chú ý là ngoài điều kiện gọi đệ quy thì bạn phải có điều kiện kết thúc đệ quy để trả về hàm đệ quy cấp cao hơn, vì bộ nhớ lưu stack không phải là vô hạn.

Thân,


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