Đợi lâu quá không thấy ai trả lời ... Đành tự giải đáp vậy (Để nếu anh em nào mắc phải thì lờ mờ cũng có hướng giải quyết).
Sau khi vào trang Web của CCSC để tìm hiểu về vấn đề này mình lĩnh hội được một vài điều như sau:
- Thứ nhất, một thiết kế sẽ là không tối ưu nếu trong CTC ngắt lại gọi đến một hàm khác đã được sử dụng trong Main hay hàm khác, đặc biệt là khi bản thân hàm này lại gọi đến hàm khác nữa...(những hàm chứa trong các header thường gọi lẫn nhau như vậy).
- Thứ hai nếu sử dụng hàm như nêu trên thì chương trình chạy sẽ không theo đúng ý đồ lập trình (chẳng hạn như trong chương trình mà mình vừa Pót). Điều này xảy ra là do bộ nhớ Stack bị tràn (stack của PIC chỉ có 8 mức) khi gọi hàm chồng chéo (cả hàm Main và CTC ngắt đều gọi...).
- Thứ ba bên CCSC khuyên nếu buộc phải gọi hàm như vậy (chẳng hạn như hàm delay_ms như trên) thì hãy khai báo ở cà hàm Main và hàm ngắt ???.
Điều này thì mình không rõ vì đã thử nhưng không có hiệu quả.
|