标题:
SPWM 问题。谢谢
[打印本页]
作者:
leonquick
时间:
2006-2-18 13:59
标题:
SPWM 问题。谢谢
在调试 SPWM 。谁有例子参考一下啊。或者讲讲怎么做。
我用定时器中断采样(334 us)电压电流。在这个中断中计算出需要的占空比。
在PWM更新中断(1kHz)里,将占空比送到 PWM 所需 channel 的寄存器内。
发现生成的PWM不对。不知道大家是怎么做的。
作者:
leonquick
时间:
2006-2-18 14:00
不知道什么时候能有人回答。
这里好象没有什么人气。大概都去用TI的板子了。
作者:
strongchen
时间:
2006-2-20 11:15
你在用什么芯片?
作者:
leonquick
时间:
2006-2-21 02:19
56f805
作者:
leonquick
时间:
2006-2-21 02:32
PWMA 初始化:
PESL(PWM_A, PWM_SET_MODULO, 0x4e20);
PESL(PWM_A, PWM_SET_DEADTIME, 0x00e0);
PESL(PWM_A, PWM_WRITE_VALUE_REG_0, 0x0000);
PESL(PWM_A, PWM_WRITE_VALUE_REG_1, 0x0000);
PESL(PWM_A, PWM_WRITE_VALUE_REG_2, 0x0000);
PESL(PWM_A, PWM_WRITE_VALUE_REG_3, 0x0000);
PESL(PWM_A, PWM_WRITE_VALUE_REG_4, 0x0000);
PESL(PWM_A, PWM_WRITE_VALUE_REG_5, 0x0000);
PESL(PWM_A, PWM_WRITE_DISABLE_MAPPING_REG1, 0);
PESL(PWM_A, PWM_WRITE_DISABLE_MAPPING_REG2, 0);
PESL(PWM_A, PWM_SET_ALIGNMENT, PWM_ALIGN_CENTER);
PESL(PWM_A, PWM_SET_COMPLEMENTARY_MODE, PWM_CHANNEL_45 | PWM_CHANNEL_23 | PWM_CHANNEL_01);
PESL(PWM_A, PWM_OUTPUT_PAD, PWM_ENABLE);
PESL(PWM_A, PWM_RELOAD_INT, PWM_ENABLE);
PESL(PWM_A, PWM_DEVICE, PWM_ENABLE);
PESL(PWM_A, PWM_LOAD_OK, NULL);
定时中断中计算duty cycle:
duty_cycle_1 = 0x4e20 + mult_r(0x4e20,mult_r(modulation_index,sin_vAsh));
我设置的是 center aligned pwm 模式。
PWM reload 更新 duty cycle:
#pragma interrupt saveall
void PWMReload_Interrupt(void)
{
GPIOB6_NegVal();
PESL(PWM_A, PWM_UPDATE_VALUE_REG_0, duty_cycle_1);
PESL(PWM_A, PWM_CLEAR_RELOAD_FLAG, NULL);
PESL(PWM_A, PWM_LOAD_OK, NULL);
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0