Microchip dsPIC33同时启动所有PWM

问题描述

在好奇号板上使用dsPIC33CK256MP508。

尝试以高分辨率模式运行4个PWM发生器。

我将在单周期模式下运行它们。试图弄清楚如何在同一时间启动所有4个信号,或从同一事件触发它们,但是我无法理解此外设的相当复杂的触发安排。

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

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

谢谢。

解决方法

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

首先,为您的模块/功能生成一个组件清单,并计算手动触发每个PWM定时器之间的时钟周期。这将为您提供PWM计时器之间的确切相位差。

一旦您确切知道了相位差的周期数,就可以在依次触发它们之前通过设置每个计数器的值来调整PWM计数器/定时器的相位。

换句话说,一旦启动,您必须对时钟周期进行计数并设置初始计数器值,以便它们都同时达到零或比较。