|
Tài trợ cho PIC Vietnam |
Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua |
|
Ðiều Chỉnh | Xếp Bài |
19-07-2008, 08:17 PM | #1 |
Trưởng lão PIC bang
|
Cấu hình mẫu cho PWM trong PIC 8-bit
Đa số các PIC có module CCP, mà một trong những chức năng của nó là tạo ra tín hiệu PWM (pulse-width-modulation: điều chế độ rộng xung). Để thiết lập cấu hình cho module CCP, bạn có thể dùng đoạn chương trình sau làm điểm khởi đầu (ví dụ thiết lập cho module CCP2):
Code:
TRISCbits.TRISC1 = 1; PR2 = 200; //PR2 = (PWM period)*Fosc/(4*TMR2 prescale), 10 kHz CCP2CON = 0x0C; //PWM mode, 2 LSBs of duty cycle are '0' CCPR2L = 100; //50% duty initially PIR1bits.TMR2IF = 0; T2CON = 0x04; //Timer 2 is on (prescale = 1:1, postscale = 1:1) TRISCbits.TRISC1 = 0; //RC1 is an output (PWM output) Code:
PTCON0 = 0x04; //postscale 1:1, prescale 1:4, free running PTPERH = 0; //8 kHz @ 20 MHz PTPERL = 0x9B; PWMCON0 = 0x40; //PWM0..5 are enabled for PWM output PWMCON1 = 0x01; //postscale 1:1, output override are synchronized //to the PWM time base DTCON = 0x05; //0.5 us dead time @ 20 MHz OVDCOND = 0xFF; //output on PWM I/O pin is controlled by duty cycle //and time base OVDCONS = 0x00; //PWM I/O is INACTIVE when POUT is cleared FLTCONFIG = 0x00; //disable all fault pins SEVTCMPL = 0; SEVTCMPH = 0; PDC0H = 0; PDC1H = 0; PDC2H = 0; PDC3H = 0; PDC0L = 0x80; //Duty cycle of 20.5% at PWM1 PDC1L = 0xA0; //Duty cycle of 25.6% at PWM3 PDC2L = 0xC0; //Duty cycle of 30.8% at PWM3 PDC3L = 0xE0; //Duty cycle of 35.9% at PWM7 PTCON1bits.PTEN = 1; 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, 19-07-2008 lúc 09:03 PM. |