![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#11 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 4
: |
![]() dear cac bac pro pic18 hien em dang thu lap trinh C18 xuat power PWM Tpwm=5Khz xuat 500 xung thi dung khong xuat nua nhung chua ranh chi lam duoc den day bac chi giup em voi
void Motor_init() { //------------------------ PTCON0: PWM TIMER CONTROL REGISTER 0 -----------------------------// // Postscale: 1:1 PTCON0bits.PTOPS0 = 0; PTCON0bits.PTOPS1 = 0; PTCON0bits.PTOPS2 = 0; PTCON0bits.PTOPS3 = 0; // time base input clock: 1:4 prescale PTCON0bits.PTCKPS0 = 0; PTCON0bits.PTCKPS1 = 1; // Free running mode PTCON0bits.PTMOD0 = 0; PTCON0bits.PTMOD1 = 0; // PWM PERIOD FOR FREE-RUNNING MODE: // Tpwm = ((PTPER + 1) x PTMRPS) / (Fosc/4). //(Desired period) (Period value) (prescale value) //------------------------ PTCON1: PWM TIMER CONTROL REGISTER 1 -----------------------------// PTCON1bits.PTEN = 0; // PWM time base is off //------------------------ PWMCON0: PWM CONTROL REGISTER 0 -----------------------------// // PWM outputs: PWM0-PWM1-PWM2-PWM3 PWMCON0bits.PWMEN0 = 0; PWMCON0bits.PWMEN1 = 1; PWMCON0bits.PWMEN2 = 0; // Config pair output: PWMCON0bits.PMOD0 = 1; // pair (PWM0, PWM1) is in the Independent mode PWMCON0bits.PMOD1 = 1; // pair (PWM2, PWM3) // PWMCON0bits.PMOD2 = 1; // pair (PWM4, PWM5) // PWMCON0bits.PMOD3 = 1; // pair (PWM6, PWM7) // //------------------------ PWMCON1: PWM CONTROL REGISTER 1 -----------------------------// // PWM Special Event Trigger: 1:1 postscale PWMCON1bits.SEVOPS0 = 0; PWMCON1bits.SEVOPS1 = 0; PWMCON1bits.SEVOPS2 = 0; PWMCON1bits.SEVOPS3 = 0; PWMCON1bits.SEVTDIR = 0; // A Special Event Trigger will occur when the PWM time base is counting upwards PWMCON1bits.UDIS = 0; // Updates from Duty Cycle and Period Buffer registers are enabled PWMCON1bits.OSYNC = 0; // Output overrides via the OVDCON register are asynchronous // Time base beginning value PTMRL = 0; PTMRH = 0; // Period value: 249 <==> Tpwm = 5Khz PTPERH = 0; PTPERL = 0xF9; // Max Duty cycle = Period value x 4. PTCON1bits.PTEN = 1; // PWM time base is on |
![]() |
![]() |
|
|