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.

[参考译文] TMS320F28388D:PWM&#39之间的 PWM 同步正在生成额外的 ISR 中断

Guru**** 2482225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1436682/tms320f28388d-pwm-sync-between-pwm-s-is-generating-extra-isr-interrupt

器件型号:TMS320F28388D

工具与软件:

您好!

 我正在使用4个 PWM。

 PWM8在 CPU1上运行、PWM1、3、5在 CPU2上运行。 CPU2上的 PWM8 ISR 连接到 CPU2/CLA 任务1 ISR。

 PWM8是主同步(将来我需要 PWM8与 EtherCAT Sync0脉冲同步)。

 PWM1连接到 PWM8的输出信号、PWM3&5连接到 PWM 1输出信号

 PWM1在50下运行、PWM8在200下运行速度慢4倍。

 PWM8正递增计数、PWM1、3、5正递增/递减计数。

 当 PWM8达到0时、我希望 PWM1同步到0、这会使3&5同步到0、 PWM1 0计数会导致处理器中断。

 我已经在这里启用了所有 PWM、并且还启用了影子模式。

 我可以看到 PWM8达到零时 PWM1变为零并导致 ISR、因此我知道它们是同步的。

 我遇到问题的原因如下:

  1. 如果我们要配置系统、我在 PWM1 ISR 处理程序中有一个标志、几乎只是确认 ISR 信号并离开。
    1. 所有 PWM 均在运行、在配置完成前、当我们获取 PWM1 ISR 时、我们什么都不做。
  2. 当配置完成并且当调用 CLA 任务1完成 ISR (第一次)时、它将启用标志(在项目1中)。
  3. 在下一个 PWM1 ISR 中、我们将处理数据。 我可以看到、启用此功能后、我们稍后会得到一个大约1 USEC 的 ISR、并且我们将正常处理该 ISR。 我正在查看计数器。

 接下来发生的事情是奇怪的。 我们将获得另一个 PWM1 ISR、在该 ISR 中、PWM 计数在18秒后而不是接近零。
 仅当 PWM1中的计数器为零时、我们才应获得 ISR、

 似乎没有任何待处理内容。

 出现这种情况的原因有什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、有人有什么建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dorion

    我们正在内部查看此问题、我们将在下周早些时候与您联系。

    此致、

    Sumit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dorion

    您的 GTBCLKSYNC/TBCLKSYNC 是否在 PWM 初始化之前在其 Device_innit ()中设置? 执行时间、何时设置它?

    此致、

    Sumit  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sumit,

     我们正在使用 TBCLKSYSNC、它们都是在每个 CPU 的启动时设置的。

     当我们稍后"触摸" PWM8 (PWM8是在 CPU1上运行的整体同步控制器)和/或 PWM1 (CPU2上的辅助控制器、有2个其他 PWM 与它同步)时、似乎会发生该问题。

     我所说的轻触是指我们针对 PWM8启用/禁用处理器的 ISR (让 PWM 继续计数)或将其更改同步模式等。

     如果我没有禁用 ISR、而是使用一个标志来处理处理器处的中断并仅确认 ISR、那么只要我触摸 PWM、问题似乎就不会出现。 我想可能是启用/禁用了之前执行此操作的 ISR、但似乎在处理器上获得了第一个同步脉冲和正确的 ISR、但第二个 ISR 似乎更快了。

     这有什么用吗?触摸 PWM 会引起一个到 PWM 寄存器的缓存负载。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Dorion:

    [报价用户 id="477218" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1436682/tms320f28388d-pwm-sync-between-pwm-s-is-generating-extra-isr-interrupt/5525631 #5525631"]

     我所说的轻触是指我们针对 PWM8启用/禁用处理器的 ISR (让 PWM 继续计数)或将其更改同步模式等。

    [报价]

    这样做背后的用例是什么? 您在运行时更新哪些特定位? 是否启用/禁用 ISR 以通过 PWM 寄存器的 ETSEL 进行处理?

    同步设置后的计数器模式是什么? 如果发生相移、可能是此配置导致 ZRO 事件提前发生、具体取决于您的同步方案。

    此致!

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    我们这样做的原因如下:
    1.在进行系统配置时、我们停止向处理器发送 PWM8和 PWM1 ISR (计数器= 0)、以便可以更改配置。

    1A 我们希望 PWM 保持同步、因此不会停止计数器、只让运行并继续同步。 请记住、PWM8以125us 运行、PWM1以31.25us 运行。 基本上、我们不希望在配置过程中关联的 ISR 运行任何操作。

    2.了解配置何时完成后、我们只需为 PWM8和 PWM1重新启用处理器的 ISR。 只要我们使 ISR 处于 count = 0时、PWM 计数器的位置便无关紧要。 我们看到的是、两个 PWM 都将在 COUNT=0时触发、然后在计数器大约1-3个 usecs 后的某个时候触发。

    这是由某些缓存和/或 PWM 的启动和停止引起的吗?

    PWM8同步为零、PWM1与 PWM8同步。 在某个时刻可以将 PWM8设置为 Sync0。

    如果相移会导致 ZRO 事件更早发生、我可以接受、但为什么我们稍后会得到另一个1-3 usecs 的时间?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是由 PWM 的某些高速缓存和/或启动和停止导致的吗?
    [报价]

    可能是因为上一个零事件发生了、然后你将重新启用中断、那么必须处理当前事件 zro 中断、但发生了另一个事件、并且你稍后接收到一个1-3 usecs。

    您是否可以 使用 OUTPUTXBAR 将 PWM1的 ZRO 事件路由到 GPIO、以便再次确认此问题何时发生? 该 ZRO 事件是否定期按预期发生? 如果是、我认为中断服务、并且另一个中断发生的时间可能是由于两个 PWM 之间发生相移所致。

    此致!

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ryan、  

     是的、我会将输出发送到 GPIO、但需要等待大约1周。

     在启用 ISR 之前、我清除所有 PWM 和 CPU 中断。 因此、除非执行这些语句的时间长于125usecs 或31.25usecs、否则我不知道我是如何获取最后0计数的中断的。 这也不能解释为什么我会得到另一个1-3个使用。

    您能解释一下这种说法吗?


    "如果是、我认为中断服务、并且另一个中断发生的时间可能是由于两个 PWM 之间发生相移所致。"

    "你以为你赢了吗?

    Dorion

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Dorion:

    抱歉、我一直忙于其他一些任务。  

    如果存在相移、根据写入 TBPHS 的值、可能会导致跳转以生成另一个中断。 这就是为什么我希望看到 ZRO 事件何时从 PWM8发生、这些事件可能导致生成额外的中断。 一旦我们知道 PWM8是否生成了一个额外的 ZRO 事件触发器、我们就可以诊断额外的 ZRO 事件发生了什么。 否则、如果我们没有看到 PWM8生成另一个 ZRO 事件同步、并且 PWM1接收到随机同步信号、那么您是否确定软件相移未启用?

    您能再次确认 TBCTL 吗? PWM8的 SYNCOSEL 配置为01。

    EXTSYNCOUT 可以在生成中断时为我们提供参考。

    此致!

    Ryan Ma