Microchip dsPIC33 同时启动所有 PWM

Microchip dsPIC33 Start all PWMs at same time

在 Curiosity 板上使用 dsPIC33CK256MP508。

正在尝试 运行 4 个 PWM 发生器处于高分辨率模式。

我会运行他们在单循环模式。试图找出如何同时启动所有 4 个信号,或从同一事件触发它们,但我无法理解此外围设备相当复杂的触发安排。

数据 sheet 显示的图表似乎表明它们都从相同的时基运行,或者至少它们似乎都在完全相同的时间启动,但实际上,因为每个 PWM 发生器都是启用或使用 PGxSTATbits.TRSET 启动循环,每个循环将按顺序开始,因为它们是在不同时间通过顺序命令启动的。

有没有简单的方法来做到这一点?理想情况下,我想写一点甚至驱动一个引脚或其他东西,以便每个发电机同时启动。只要它们同时开始,触发和实际开始之间可能会有一些延迟。

谢谢。

您可以初始化不同 PWM timer/counters 的计数器寄存器的值,以便它们同相启动。实际值取决于为每个定时器设置 TRSET 位之间的指令数,以及您的预分频器选项。

首先,为您的 module/function 生成汇编列表,并手动计算触发每个 PWM 定时器之间的时钟周期。这将为您提供 PWM 定时器之间的确切相位差。

一旦您确切知道相位差的周期数,就可以通过设置每个计数器的值来调整 PWM counters/timers 的相位,然后按顺序触发它们。

换句话说,您必须计算时钟周期并设置初始计数器值,以便它们在启动后同时全部达到零或比较。