Trích:
Nguyên văn bởi pk178
...
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,