PWM adalah singkatan bagi Pulse Width Modulation. PWM adalah satu teknik yang sangat berguna untuk mengawal litar analog daripada isyarat digital. Isyarat digital ini boleh dihasilkan daripada microcontroller. Address yang terlibat untuk menghasilan PWM dalam PIC16 adalah CCPCON, CCPR dan PR2.

PWM hanyalah signal ‘ON’ dan ‘OFF’ atau ‘HIGH’ dan ‘LOW’. PWM mempunyai dua parameter iaitu Frequency dan Duty Cycle. Daripada signal di bawah, Frequency adalah 1/T dan Duty Cycle adalah (t/T)x100%.

Daripada datasheet, PWM Module menggunakan persamaan matematik berikut untuk menghasilkan frekuensi dan duty cycle yang dikehendaki.

Tosc adalah masa bagi satu cycle atau 1/f, frekuensi bagi oscillator. TMR2 preescale perlu ditetapkan Timer2 Module sama ada 1, 4 atau 16. PWM duty cycle di atas adalah dalam saat, tetapi kebiasaannya duty cycle di tulis dalam %. Jadi, untuk menukarkannya kepada % adalah dengan membahagi PWM period kemudian darabkan dengan 100%. Tukarkan formula di atas kepada PR2 dan CCP sebagai perkara rumus. PR2 adalah 8bit data manakala CCP adalah 10bit data. CCP merangkumi CCPR1L:CCP1CON<5:4>.

Di bawah adalah contoh program untuk menghasilkan PWM.
Berikut adalah videonya.
Hamizah, baca dlm datasheet. Saya bukan lecturer nak terangkan benda ni, ni bukan kerja saya.
boleh tak encik shahrul tunjukkan cara penulisan coding bg CCP1CON and CCP2ON tu..saya masih baru dlm microc ni..tak berapa faham cara nk tulis..terima kasih..
w/salam, Hamizah. Gunakan CCP1CON dan CCP2CON.
Assalamualaikum..
saya nak tanya, kalau ada 2 pwm yg digunakan dlm microc macam mana nak shiftkan salah satu pwm tu? macam mana cara nak tulis coding untuk shifted pwm? terima kasih..
Hi, Ming. See the ADC Lesson.
Hi,
I try to display both of my ADC read_a2d(0) and read_a2d(1) on LCD display. How come the output only show read_a2d(0)? Thank you.
ayu, saya tiada contoh.
macam yang contoh coding kat atas ni utk control of CCP PWM kn?bukan untuk power control pwm kn? en shahrul ada contoh coding utk power control pwm x?:)
ayu, ada PIC16F1527 (64 pin) ada 10 PWM. Kalau PIC biasa nak generate PWM boleh guna Timer Interrupt.