View Single Post
Old 30-05-2009, 04:31 PM   #4
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Trích:
Nguyên văn bởi namqn View Post
Bạn đọc kỹ lại hướng dẫn của CCS C cho hàm set_pwm1_duty(). Nếu giá trị thiết lập duty cycle là 8-bit (là trường hợp hiện có của bạn), nó sẽ được dịch trái 2 bit để tạo ra giá trị 10-bit. Do đó, giá trị thiết lập bằng 250 sẽ dẫn đến duty cycle = 100 %. Với thiết lập của bạn như trên, duty cycle = 50 % sẽ ứng với giá trị thiết lập là 64.

Thân,
thì em theo đúng hướng dẫn của CCS đó anh:
// For a 20 mhz clock, 1.2 khz frequency,
// t2DIV set to 16
// the following sets the duty to 50% (or 416 us).
long duty;
duty = 520; // .000416/(16*(1/20000000))
set_pwm1_duty(duty);

con số 240 em tính ở trên là dựa vào cách tính số 520 như hướng dẫn.
hướng dẫn chỉ nói là sẽ thêm 2 bit 0 vào phía lsb chứ không nói rõ là thêm 2 bit 0 vào thì duty phải tính lại như thế nào?
sẳn anh Namqn cho em hỏi lun là phải tính như thế nào để ra được con số 64 vậy anh?loay quay mấy ngày rùi mà vẫn chưa mò ra được.
__________________
A&A
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn