![]() |
|
Tài trợ cho PIC Vietnam |
Lỗi lập trình ngôn ngữ cấp cao Những lỗi trường gặp trong lập trình. Khóa luồng khi bug được lỗi. |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Jan 2009
Bài gửi: 17
: |
E có một thắc mắc về công thức tính giá trị đặt cho PR2 và Duty. Trong tài liệu về Mid-range (phần PWM trang 211), e thử dịch lại là:
Duty được xác định bằng cách ghi giá trị vào thanh ghi CCPRXL và 2 bits (CCPxCON<5:4>). Ta có thể có độ phân giải 10 bits: CCPRxL chứa 8 bit MSB và CCPxCON<5:4> chứa 2 bit LSB Gía trị 10 bits này được xem như chứa trong 1 thanh ghi DCxB9 ![]() Biểu thức sau dùng để tính duty PWM: PWM duty cycle = (DCxB9 ![]() Có thể ghi giá trị cho (DCxB9 ![]() cho đến khi kết thúc chu kì xung hiện tại (TMR2 = PR2), và cho tới lúc đó giá trị duty mới được chốt vào thanh ghi CCPRxH Khi khối CCP hoạt động ở chế độ PWM thì không thể ghi trực tiếp giá trị vào thanh ghi CCPRxH (read-only) Thanh ghi CCPRxH và 2bit (...) có chức năng như một bộ đệm duty thứ 2 để tránh những lỗi có thể xảy ra khi nạp lại giá trị duty Khi giá trị (TMR2 ghép với 2 bit bộ chia T2) bằng với (CCPRxH và 2 bit) thì chân CCPx sẽ xuống mức [0] và nghĩa là kết thúc duty. |
![]() |
![]() |
|
|