Ðề tài: CCS bị lỗi ?
View Single Post
Old 20-01-2010, 11:28 AM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi minhcuong1122 View Post
Cảm ơn anh,
E vừa đọc phần setup_PWM1_duty() (trang 236).

Writes the 10-bit value to the PWM to set the duty. An 8-bit value may be use if the most significant bits are not required. The 10 bit value is then used to determine the duty cycle of the PWM signal as follows:
%duty cycle = value / [ 4 * (PR2 +1 ) ]

Theo như trong đó, e cần đặt duty = 50% = 0.5 thì giá trị value phải nạp là:
value = 4* duty* (PR2 + 1) = 4* 0.5* (15+1) = 32
Hình như có chỗ nào đó e chưa hiểu đúng thì phải (10bits- 8bits ???), hic. Nhờ a chỉ e thêm "tí manh mối" nữa đi. Cảm ơn a nhiều lắm.
Vì bạn dùng một giá trị hằng số < 255 làm đối số của hàm, nên nó sẽ hiểu đây là giá trị 8-bit. Giá trị này được dùng như 8-bit cao nhất của duty cycle, dẫn đến công thức cần dùng là value = duty * (PR2 + 1) = 0,5 * (15 + 1) = 8! (chứ không phải công thức dành cho duty cycle 10-bit như trên).

Nếu bạn đặt giá trị 32 (tức là lớn hơn PR2 + 1) làm đối số của hàm thì có thể xảy ra hiện tượng mà bạn đã quan sát được.

Xem giải thích chi tiết hơn ở đây:
http://www.picvietnam.com/forum/showthread.php?t=5772

Nên dùng phiên bản mới nhất của tài liệu hướng dẫn.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 20-01-2010 lúc 11:45 AM. Lý do: bổ sung thông tin
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn