我用的是DSPIC20F2010,想再PWM3L上产生20KHZ,下面的程序有问题,就不是不知道问题在哪里?
// PDC1 = 0x0000; //PWM1 点空比值
// PDC2 = 0x0000; //PWM2 点空比值
PDC3 = 0x014F; //PWM3 点空比值 产生20KHZ
OVDCON = 0x3F00; //PWM1L/1H PWM2L/2H 和 PWM3L引脚由PWM控制 强制
寄存器
FLTACON = 0; //故障A控制寄存器
DTCON1 = 0; //死区控制器1
PWMCON2 = 0x0002; //PWM特殊事件触发信号后分频比 1:1
PWMCON1bits.PEN1L = 1; //PWM1L PWM输出模式
PWMCON1bits.PEN2L = 1; //PWM2L PWM输出模式
PWMCON1bits.PEN3L = 1; //PWM3L PWM输出模式
PWMCON1bits.PEN1H = 1; //PWM1H PWM输出模式
PWMCON1bits.PEN2H = 1; //PWM2H PWM输出模式
PWMCON1bits.PEN3H = 1; //PWM3H PWM输出模式
PWMCON1bits.PMOD1 = 0; //PWM1 互补输出模式
PWMCON1bits.PMOD2 = 0; //PWM2 互补输出模式
PWMCON1bits.PMOD3 = 0; //PWM3 互补输出模式
SEVTCMPbits.SEVTDIR = 0; //PWM 时基递增产生特殊事件信号
PTPER = 0x01F3; //PWM 时基周期寄存器值
PTMRbits.PTMR = 0x0000; //PWM 时基计数值
//PTCON PWM时基控制寄存器
PTCONbits.PTMOD = 2; //PWM 工作于连续上/下技术模式 PWM时基控制寄存器
PTCONbits.PTCKPS = 0; //PWM 前分频比 1:1 PWM时基预分频比选择
PTCONbits.PTOPS = 0; //PWM 后分频比 1:1
PTCONbits.PTSIDL = 0; //PWM 空闲模式下运行 空闲模式IDLE
PTCONbits.PTEN = 1; //PWM 定时器时基使能 启动时基定时器 |