View Single Post
Old 11-11-2010, 10:42 AM   #4
PSL
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 20
:
Trích:
Nguyên văn bởi namqn View Post
Gần đây tôi nhận ra một số code mẫu trong các tutorial của tôi khi biên dịch với các mức tối ưu khác nhau đã không còn hoạt động đúng. Lý do là bộ tối ưu mã của các phiên bản MPLAB C Compiler for dsPIC DSCs mới đã loại bỏ hoàn toàn một số biến và câu lệnh, khi phát hiện những biến đó không hề được thay đổi giá trị trong chương trình chính (giá trị của những biến này chỉ được thay đổi trong phần code xử lý ngắt chẳng hạn).

Khắc phục vấn đề này rất đơn giản, bạn chỉ cần thêm từ khóa volatile trước khai báo của những biến đó (thường là những biến thuộc nhóm biến toàn cục). Ví dụ
Code:
volatile unsigned char flag;
Thân,
Microchip cũng có nhắc đến vấn đề này, khuyến cáo nên dùng khai báo volatile đối với những biến dùng cho ngắt. Nguyên văn:
"You should arrange to save global variables that may be modified in an ISR if you do
not want the value to be exported. Global variables modified by an ISR should be
qualified volatile."
DS51284J, trang 108. Trong một số tài liệu khác cũng có nhắc đến.
Các bạn nên lưu ý, không mới, nhưng quan trọng.
PSL vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn