quoc_vu
27-12-2009, 01:25 PM
Em đang làm đề tài điều khiển chính xác vị trí động cơ , sử dụng CCS 4.084 mà sao bị vấn đề này từ hôm bữa đến giờ vân ko cách nào giải quyết được.
Vấn đền chính nằm ở chỗ là tại sao cú pháp em như thế này :
#define k_tl 20000;
int32 pulse;
Pulse= 100*k_tl ; thì tất cả đều hoạt đồng tốt . ko bị tràn số
-mà khi em muốn thay đổi số 100 bằng 1 số 2 byte em nhập từ máy tính
int32 pulse;
int16 wt;
wt=make16(byte1,byte2);
pulse=((int16)wt)*k_tl ;
thì lập tức xảy ra hiện tượng tràn số khó hiểu. VDK hoạt đồng lung tung ko kiểm soát được.
Tất cả các biểu thức trên em viết ở hàm main() ko nằm trong hàm ngắt. pulse chính là số xung em muốn gửi xuống để cho động cơ quay đúng số vòng mong muốn. nếu nó lớn hơn maxcnt thì em cũng đã giải quyết vấn đề này rồi . vì khi ở trường hợp đầu thì động cơ vẫn chạy tốt . chỉ có thay bằng trường hợp sau là VDK chay lung tung :( . Ko biết có bạn nào đã từng bị giống mình xin cho mình 1 PA giải quyết
Vấn đền chính nằm ở chỗ là tại sao cú pháp em như thế này :
#define k_tl 20000;
int32 pulse;
Pulse= 100*k_tl ; thì tất cả đều hoạt đồng tốt . ko bị tràn số
-mà khi em muốn thay đổi số 100 bằng 1 số 2 byte em nhập từ máy tính
int32 pulse;
int16 wt;
wt=make16(byte1,byte2);
pulse=((int16)wt)*k_tl ;
thì lập tức xảy ra hiện tượng tràn số khó hiểu. VDK hoạt đồng lung tung ko kiểm soát được.
Tất cả các biểu thức trên em viết ở hàm main() ko nằm trong hàm ngắt. pulse chính là số xung em muốn gửi xuống để cho động cơ quay đúng số vòng mong muốn. nếu nó lớn hơn maxcnt thì em cũng đã giải quyết vấn đề này rồi . vì khi ở trường hợp đầu thì động cơ vẫn chạy tốt . chỉ có thay bằng trường hợp sau là VDK chay lung tung :( . Ko biết có bạn nào đã từng bị giống mình xin cho mình 1 PA giải quyết