View Single Post
Old 23-11-2009, 12:00 AM   #6
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
Trích:
Nguyên văn bởi pk178 View Post
...
Em cũng đã xem 1 số tài liệu hướng dẫn cách lập trình, người ta có nói là chương trình cho ngắt không nên quá dài. Em nghĩ cũng có thể là chương trình ngắt của em dài quá (em có sử dụng kiểu biến int32 trong đó) nên nó bị lỗi này.

Em muốn hỏi các bác xem có cách nào khắc phục lỗi này được không, em có ý tưởng là sau 1 lệnh, mình có thể xóa ngay dữ liệu trong stack đi, rồi tiếp tục thực hiện lệnh tiếp theo, như vậy sẽ ko bị tràn stack nữa.

Cái khó là em không biết thao tác thế nào với ý tưởng này. Bác nào biết thì hướng dẫn em với ạ, làm trên C càng tốt, nếu không thì các bác cứ hướng dẫn trên asm cũng được, em có thể chèn đoạn mã asm vào trong C
Đúng là chương trình xử lý ngắt không nên quá dài, bạn chỉ cần bật 1 cờ, và kiểm tra cờ đó trong chương trình chính. Nếu cờ báo hiệu cần gọi 1 loạt hàm thì bạn gọi các hàm đó. Không có lý do gì để nhét các lệnh gọi hàm mà bạn đã dùng vào chương trình xử lý ngắt.

Stack của PIC tầm trung là stack phần cứng, chứ không phải là stack phần mềm để bạn có thể dùng lệnh C hay hợp ngữ mà thao tác.

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