Em đang bắt đầu tập viết code PWM điều khiển độ sáng của LED cho PIC18F4550 nhưng có 1 số em không hiểu mong các bác giúp đỡ.
Ở trong datasheet viết
Code:
15.4.4 SETUP FOR PWM OPERATION
The following steps should be taken when configuring
the CCPx module for PWM operation:
1. Set the PWM period by writing to the PR2
register.
2. Set the PWM duty cycle by writing to the
CCPRxL register and CCPxCON<5:4> bits.
3. Make the CCPx pin an output by clearing the
appropriate TRIS bit.
4. Set the TMR2 prescale value, then enable
Timer2 by writing to T2CON.
5. Configure the CCPx module for PWM operation.
*Phần tính toán PR2 để điều xung thì em đã tính được. Từ biểu thức
PWM Duty Cycle giả sử em tính được
(CCPRXL:CCPXCON<5:4>) =72 nhưng em không hiểu chỗ này cho lắm. Nếu em dùng CCP1 thì có phải là giá trị của thanh ghi CCPR1L nhân với bit thứ 4,5 của thanh ghi CCP1CON là bằng 72 không.
*Khi khai báo hàm init_timer2 thì đã khai báo TMR2 prescaler rồi, sao bây giờ lại phải khai báo lại nữa?
*Phần thứ 5 chọn PWM mode em không biết chọn cái nào hết vì không hiểu các PWM mode đó như thế nào?
* Có xài interrupt không?
*Phần trên mới config PWM, có 1 điều em còn thắc mắc là làm sao xuất ra LED được
* Cuối cùng, bác nào có source code PWM viết bằng Hi-tech C không. Em search trên mạng nhưng thấy người ta chủ yếu viết bằng CCS, còn hi-tech C ít quá nên em kiếm không ra