This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我正在使用电路板 LAUNCHXL-F28069M。
我的程序的目的是为电源转换器生成两个正弦波形。 为此、我将使用 PWM1和 PWM2。 两个 PWM 的配置方式完全相同。
由于输出是正弦波形、因此占空比必须持续变化。 在开发的当前阶段、我尝试在两个 PWM 中获得相同的输出。 为此、我将 PWM 更新为:
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD *占空比;
EPwm2Regs.CMPA.half.CMPA = EPwm2Regs.TBPRD *占空比;
在更新之前、我始终确保占空比介于0和1之间。 占空比定义为浮点值。
这是我的问题:
-如果 Duty 是一个常量值或由我作为表达式手动更改,则一切都正常工作。
-如果正弦模式下的占空比发生变化,则程序会编译但不运行。
-如果我将 PWM1的占空比固定为一个常量值、并且我让它因 PWM2而异、它会编译并运行。 这种方法不起作用(固定 PWM2和改变 PWM1)。
是否有任何线索知道可能会发生什么情况?
此致。
Cristina、
感谢您对问题的详细解释并提供一些初始调试!
我们将需要对此进行更多调试...
此致、
Cody
您好、感谢您的回答。
我使用 ePWM1来生成周期性 ADC SOC - ADCINT1、因此我在 ADC 中断结束时、也就是在清除标志之前更新 CMPA 值。 我这样做是因为稍后我需要通过 ADC 读取一些传感器。 这是 ADC 配置:
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;//启用非重叠模式 AdcRegs.ADCCTL1.bit.INTPULSEPOS= 1;// ADCINT1在 AdcResults 锁存 AdcRegs.INTSEL1N2.bit.INT1E 之后跳闸 = 1;//启用 ADCINT1 AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//禁用 ADCINT1连续模式 AdcRegs.INTSEL1N2.bit.INT1SEL= 1; //设置 EOC1来触发 ADCINT1来触发 AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; //选择内部基准模式 AdcRegs.ADCCTL1.bit.VREFLOCONV = 1; //选择 B5上的 VREFLO 内部连接
这就是我知道它没有运行的方式:每当我运行 CCS 程序时、我都会放置一些表达式以供观察并启用持续刷新、因此我知道该程序正在直观地运行、因为我看到黄色更新。 此外、PCB 中有一个 LED、它只是在主器件中虚拟打开、而不是这样做。 最后、我使用示波器进行检查、但我没有任何 PWM 输出。
关于其余问题:
1.我不确定如何检查它是否确实在加载到器件上。
2.我已经回答了以上问题。
3.同样,我不确定如何使用内存浏览器验证配置。
4.我有一些初始化函数、只是为了确保我在每个函数的开头写入 EALLOW。 我相信 CMPA 不受保护、但如果我在更新之前尝试写入 EALLOW、但没有任何变化。
此致。
您好!
我的程序中只有一个中断、即 ADC 中断。 我在这里设置一个断点、它进入中断5次。 然后它停止进入。 这就是我确认中断的方式:
//为下一个 ADC 序列重新初始化
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //清除 ADCINT1标志为下一个 SOC 重新初始化
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1; //确认 PIE 中断
我已经在 PWM1的 CMPA 寄存器更新中找出了问题、无论我将代码简化了多少、它都无法正确执行。
是否可能有某种程度的错误? 因为我在中断时也尝试过这种方法:
PWM_AUX = EPwm1Regs.TBPRD;
AUX1 = PWM_AUX * Du;
AUX2 = AUX1;
EPwm1Regs.CMPA.half.CMPA = AUX2;
并定义为全局变量:
float Du = 0.0;
unsigned int PWM_aux = 0;
浮点 AUX1 = 0.0;
unsigned int AUX2 = 0.0;
嗯、如果我将 AUX2定义为无符号整型、代码的运行次数不会超过这5次。 当我将 AUX2定义为 int 时、它"永久"运行、但显然由于符号原因、结果不正确。
感谢您努力帮助我。