电机控制
直播中

王永江

未满1年用户 7经验值
擅长:嵌入式技术 处理器/DSP 控制/MCU
私信 关注
[问答]

在dspic30f4011中使用中心对齐的pwm模式,设置pdc大于PTPER,为何还有占空比

void init_PwmPort() {
/initialization pwm SFR/
PTCON = 0x0002; //选择1分频模式 递增 /递减计数模式
PTPER = 1000; //设置周期寄存器
}

void attribute((interrupt, no_auto_psv)) _PWMInterrupt(void) {
IFS2bits.PWMIF = 0;

PDC1 = 1800;
PDC2 = 200;
PDC3 = 1000;
}

image.png

image.png

模拟仿真后,感觉PCD是和2倍的PTPER对比的,这个似乎和文档中的描述是不同的
image.png

不知道有哪位大佬可以帮忙解答下??

回帖(1)

张杰

2024-5-8 17:45:49
在 DSPIC30F4011 中使用中心对齐的 PWM 模式时,PDC(PWM 占空比寄存器)与 PTPER(PWM 周期寄存器)之间的关系确实可能与您所期望的有所不同。首先,让我们了解一下中心对齐 PWM 模式的基本概念。

中心对齐 PWM 模式是一种特殊的 PWM 模式,它允许在 PWM 信号的上升沿和下降沿之间产生相等的延迟。这种模式通常用于驱动电机或其他需要精确控制的负载。在中心对齐 PWM 模式下,PWM 信号的占空比可以通过调整 PDC 寄存器的值来实现。

在您的代码中,您设置了 PTPER 寄存器的值为 1000,这意味着 PWM 信号的周期为 1000 个时钟周期。然而,您提到在模拟仿真时,感觉 PDC 与 2 倍的 PTPER 进行比较。这可能是因为在中心对齐 PWM 模式下,PDC 寄存器的值实际上是与 PTPER 寄存器值的两倍进行比较的。

为了解决这个问题,您可以尝试以下方法:

1. 调整 PDC 寄存器的值:由于 PDC 与 2 倍的 PTPER 进行比较,您需要相应地调整 PDC 寄存器的值。例如,如果您希望占空比为 50%,则可以将 PDC 设置为 PTPER 值的一半,即 500。

2. 修改 PTPER 寄存器的值:如果您希望保持 PDC 寄存器的值不变,可以考虑调整 PTPER 寄存器的值。例如,如果您希望 PDC 寄存器的值为 1800,可以将 PTPER 设置为 900,这样 PDC 将与 2 倍的 PTPER 进行比较。

3. 检查您的代码和仿真设置:确保您的代码和仿真设置正确无误,以便正确地模拟 DSPIC30F4011 的行为。检查中断服务例程、寄存器配置和其他相关设置,确保它们与您的预期相符。

4. 参考数据手册:仔细阅读 DSPIC30F4011 的数据手册,了解中心对齐 PWM 模式的工作原理和寄存器配置。这将帮助您更好地理解 PDC 和 PTPER 之间的关系,并确保您的代码正确实现所需的功能。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分