本帖最后由 lilyy 于 2012-12-14 15:13 编辑
菜鸟新学的DSPIC30F2010,在使用PWM输出口做逆变电源,使用双更新模式,PWM口的初始化如下,
//PWM功能初始化
void Init_PWM( void )
{
PTMR = 0x0000; //PWM时基寄存器
PTPER = dLoopInTcy; // 设定PWM的频率
PWMCON1 = 0x0077; // 使能PWM口
PTCON = 0x8003; //,双边更新,时基为Tcy
PWMCON2 = 0x0004; //使能占空比立即更新
DTCON1 =0x0000;
PDC1 = Pwm_min; //初始化占空比
PDC2 = Pwm_min;
OVDCON = 0x3F3F; //开始由PWM发生器控制
FLTACON=0x0003;//故障引脚为低电平时,6路PWM输出无效
SEVTCMP = 0; // 0 不由PWM启动AD转换
SEVTCMPbits.SEVTDIR = 0; //=0 ,特殊事件触发信号将在PWM 时基的向上计数周期产生
IPC9bits.PWMIP = 6;//PWM中断优先级为6级
IFS2bits.PWMIF = 0; //清PWM中断标志位
IEC2bits.PWMIE = 1; // 使能PWM 中断
IPC10bits.FLTAIP = 7 ;//设置过流故障中断为7级中断
IFS2bits.FLTAIF = 0;// 故障中断标志清零.
IEC2bits.FLTAIE = 1;// 使能故障中断 A
}
想在一个PWM周期内占空比更新两次,可从滤波口输出看不出更新两次,只看到一次变化,但实际计算的时候确实是算了两次,也用了两次,只是不知道别人的怎么能看到两次,下图是从滤波口看到的一个PWM周期的对应变化正弦波,1是别人的程序,明显看到一个PWM波内有两个变化,2是自己的程序,一个PWM周期只看到一个变化,各位说说怎么实现像1的形式呢?
|