Về hàm _delay_cycles

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Mọi người cho em hỏi về cái hàm _delay_cycles() trong CCS (lập trình cho MSP430G) thì ý nghĩa của nó là gì ạ? Nếu dùng cho 1MHz thì sao, cách tính delay 1s ? :(...
Có phải nó là delay của chu kỳ máy (0->2^16 - do la` 16bit hay 0->255) mình tính thời gian trong 1 chu kỳ máy rồi nhân 4 (hay chia 4 gì đó) để ra thời gian cần delay không ạ >"<
Còn vòng lặp while , for nữa.. em muốn làm cho nó mỗi khi biến i tăng 1 đơn vị tương đương thời gian tăng 1s có được không ạ:botay:
 

honghiep

Cố Vấn CLB
Staff member
Mọi người cho em hỏi về cái hàm _delay_cycles() trong CCS (lập trình cho MSP430G) thì ý nghĩa của nó là gì ạ? Nếu dùng cho 1MHz thì sao, cách tính delay 1s ? :(...
Có phải nó là delay của chu kỳ máy (0->2^16 - do la` 16bit hay 0->255) mình tính thời gian trong 1 chu kỳ máy rồi nhân 4 (hay chia 4 gì đó) để ra thời gian cần delay không ạ >"<
Còn vòng lặp while , for nữa.. em muốn làm cho nó mỗi khi biến i tăng 1 đơn vị tương đương thời gian tăng 1s có được không ạ:botay:
Theo mình biết thì: _delay_cycles(x) là trong x chu kì máy (nếu không có ngắt xảy ra) thì MSP430G.. không làm gì cả. nếu tần số là 1MHz thì thời gian 1 chu kì máy là 1/(10^6)s. Để delay 1s thì bạn _delay_cycles(1 000 000).
Còn để i tăng 1 đơn vị tương đương 1s thì cứ mỗi lần tăng i bạn cho trễ 10^6 chu kì máy (với tần số là 1MHz):2cool_after_boom:
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Mọi người cho em hỏi về cái hàm _delay_cycles() trong CCS (lập trình cho MSP430G) thì ý nghĩa của nó là gì ạ? Nếu dùng cho 1MHz thì sao, cách tính delay 1s ? :(...
Có phải nó là delay của chu kỳ máy (0->2^16 - do la` 16bit hay 0->255) mình tính thời gian trong 1 chu kỳ máy rồi nhân 4 (hay chia 4 gì đó) để ra thời gian cần delay không ạ >"<
Còn vòng lặp while , for nữa.. em muốn làm cho nó mỗi khi biến i tăng 1 đơn vị tương đương thời gian tăng 1s có được không ạ:botay:
Theo mình biết thì: _delay_cycles(x) là trong x chu kì máy (nếu không có ngắt xảy ra) thì MSP430G.. không làm gì cả. nếu tần số là 1MHz thì thời gian 1 chu kì máy là 1/(10^6)s. Để delay 1s thì bạn _delay_cycles(1 000 000).
Còn để i tăng 1 đơn vị tương đương 1s thì cứ mỗi lần tăng i bạn cho trễ 10^6 chu kì máy (với tần số là 1MHz):2cool_after_boom:
Bâ ygiờ chạy thử thấy không đúng >"<
 

honghiep

Cố Vấn CLB
Staff member
Mọi người cho em hỏi về cái hàm _delay_cycles() trong CCS (lập trình cho MSP430G) thì ý nghĩa của nó là gì ạ? Nếu dùng cho 1MHz thì sao, cách tính delay 1s ? :(...
Có phải nó là delay của chu kỳ máy (0->2^16 - do la` 16bit hay 0->255) mình tính thời gian trong 1 chu kỳ máy rồi nhân 4 (hay chia 4 gì đó) để ra thời gian cần delay không ạ >"<
Còn vòng lặp while , for nữa.. em muốn làm cho nó mỗi khi biến i tăng 1 đơn vị tương đương thời gian tăng 1s có được không ạ:botay:
Theo mình biết thì: _delay_cycles(x) là trong x chu kì máy (nếu không có ngắt xảy ra) thì MSP430G.. không làm gì cả. nếu tần số là 1MHz thì thời gian 1 chu kì máy là 1/(10^6)s. Để delay 1s thì bạn _delay_cycles(1 000 000).
Còn để i tăng 1 đơn vị tương đương 1s thì cứ mỗi lần tăng i bạn cho trễ 10^6 chu kì máy (với tần số là 1MHz):2cool_after_boom:
Bâ ygiờ chạy thử thấy không đúng >"<
vấn đề bạn gặp là gì? nêu rõ tí đi
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
bay gio cho de lay 500000 thi` no' khong ra 0.5s...ma chay cham ri`..chac la >1s
 

honghiep

Cố Vấn CLB
Staff member
bay gio cho de lay 500000 thi` no' khong ra 0.5s...ma chay cham ri`..chac la >1s
bác phải đưa code cụ thể lên thì mới biết chính xác chứ.
nếu delay 500000 mà chậm thì giàm nó xuống. Khi nào vừa ý thì thôi :5cool_beat_plaster:
 
cái đó là do tần số DCO của em thôi, phải calib DCO đúng thì mới chạy đúng ý mình chứ. cái delay_cycles là intrinsic, viết trong intrinsic.h, em search trong folder cài CCS thì có:D
 
Top