|
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 |
21-01-2010, 12:55 AM | #5 |
Đệ tử 1 túi
Tham gia ngày: Jan 2009
Bài gửi: 17
: |
Trong này có đề cập tới 2 bit cuối thêm vào TMR2 (prescaler) để cũng tạo thành một giá trị 10 bits, giá trị này được so với cái value (CCPRxH . CCPxCON<5:4>) để khi nào bằng nhau thì clear chân CCPx.
E thật tình không hiểu nỗi tại sao giá trị (2bit LSB của 10bit mình tính ra) lại liên quan được với prescaler của timer 2 ??? Thêm nữa, Công thức tính PWM chu kì: PWM period = [(PR2) + 1] • 4 • TOSC • (TMR2 prescale value), specified in units of time Công thức tính duty: PWM duty cycle = (DCxB9 : DCxB0 bits value) • Tosc • (TMR2 prescale value), in units of time Theo e hiểu, xung thạch anh phải qua bộ chia 4, rồi qua thêm bộ chia TMR2 thì mới làm cho TMR2 tăng lên 1 đơn vị, khi TMR2 tăng lên bằng (PR2+1) thì hết 1 chu kì Còn ở phần duty thì công thức đã không còn số "4", thay vào đó thì hình như số 4 này đã nằm đâu đó trong giá trị thanh ghi 10 bits mình tính ra rồi??? E thấy có gì đó khó hiểu chỗ này, hình như việc sử dụng 2 bit này có ý đồ gì đó, các anh chị giúp e nhé. @A Nam: Cảm ơn a Nam một lần nữa. |
|
|