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.

[参考译文] TMS570LC4357:pwmStart()和 pwmStop()有什么作用?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1161584/tms570lc4357-do-pwmstart-and-pwmstop-do-anything

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

我让 HET2 pwm0生成一个波形,从 pwmNotification()可以看到占空比和周期是正确的。  但是,我想控制波形何时开始和停止,并希望 pwmStart()和 pwmStop()能够控制这一点(正如名称所暗示的那样)。  不幸的是,一旦调用 hetinit()和 pwmEnableNotification(),HET2 pwm0就会成为自由运行的波形,并且通知将继续发生。  pwmStop()和 pwmStart()似乎不做任何事情(在 hetInit()被调用后的任何地方)。

我希望能够启动波形、以便它与另一个定时事件同步。  我没有看到任何其他用于 HET 的 Halcogen 控件/选项可以启动/停止它。  我尝试的代码类型如下,行按不同的顺序显示,但 pwmStop()/pwmStart()不会做我能说的任何事情。

hetInit();
pwmStop (hetRAM2、pwm0);
pwmEnableNotification (hetREG2、pwm0、pwmEND_for_Duty);
pwmStart (hetRAM2、pwm0);

有人对 HET PWM 有过这样的体验吗?

非常感谢您的任何见解。

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

    尊敬的 Peter:

    pwmStop 和 pwmStart 函数用于控制 PWM 输出、我不理解您是如何验证的、但下面我这样做了

    我正在使用 HET1 pwm0、我在停止和启动函数之间创建了延迟、我还在停止和启动函数处保留了两个断点、我观察了以下情况

    在 hetInit 函数到 pwmStop 函数之后、PWM 输出被启用。

    2. PWM 输出在执行 pwmStop 函数后停止、直到达到 pwmStart。

    3. PWM 输出在执行 pwmStart 后再次启动、直到它再次到达 pwmStop。

    该环路重复出现。

    请按以上所述进行验证、并告诉我结果。

    --

    谢谢、此致、

    Jagadish。

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

    大家好、Jagadish、

    我不使用 PWM 在 HET 引脚上生成波形。  我正在使用 PWM 生成有关 MPU 的通知。

    顾名思义、pwmStart 和 pwmStop 应该启动和停止波形发生器本身、而不仅仅是输出使能和禁用。

    如果提供 pwmNotification()处理程序并调用 pwmEnableNotification(),则会注意到调用 pwmStop()不会阻止调用通知(因为继续生成波形)。

    也许这只是名称上的错误,因为大多数信号发生器在其输出开/关按钮上标有 pwmStart()和 pwmStop()应该被称为 pwmOutputOn()和 pwmOutputOff ()。

    请确认 pwmStart()和 pwmStop()实际上只是启用和禁用 HET 引脚上的输出。

    我想控制开始生成波形、以便与在特定边沿"开始"波形的事件同步(进行相位对齐)。

    也许 ePWM 或其他一些 Launchpad 功能更适合我的需求。

    谢谢。

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

    尊敬的 Peter:

    您是否可以共享代码(至少是具有此 PWM 配置的新最小项目)?

    --

    谢谢、此致、

    Jagadish。

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

    我已将整个项目作为电子邮件附件上传。

    访问 www.protonmail.com 并以以下身份登录:

    用户名:shareuser1000

    密码:密码

    查看主题为 HET PWM 项目的电子邮件。

    谢谢。

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

    尊敬的 Peter:

    [引用 userid="521569" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1161584/tms570lc4357-do-pwmstart-and-pwmstop-do-anything/4368075 #4368075"]请确认 pwmStart()和 pwmStop()实际上只是启用和禁用 HET 引脚上的输出。

    我刚才验证了代码、是的、它只是控制 HET 引脚上的输出

    在这两个函数代码中、我们只需切换 MOV64指令控制字段中的第22位

    这意味着如下所示

    因此、它只是控制引脚操作而不是停止完整的 PWM。 我同意你的看法,名字可以更好,比如"PWMOutOFF"和"PWMOutON"。

    --

    谢谢、此致、

    Jagadish。

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

    大家好、Jagadish、

    非常感谢您的确认。

    如果您或您的同事对任何 Launchpad 设备有任何建议、这些设备可以生成与其他某个事件(如另一个波形的上升沿)相位对齐的波形、请告知我。  对齐不必如此紧密(例如、对于5毫秒周期波、为10到20微秒)。

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

    尊敬的 Peter:

    当 QJ 是 PWM 领域的专家时、他将回答您的问题。

    --

    谢谢、此致、

    Jagadish。

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

    大家好、Jagadish、

    我可以使用 RTI 而不是 HET 来满足我的需求、尽管解决方案并不那么巧妙。  这是因为 HET (CAN)直接将信号输出到 HET 引脚(用于监控)、而 RTI 在使中断处理程序(每个周期必须触发两次)切换输出引脚时需要 CPU 的少量干预。  对于 HET、每个周期只需要触发一个中断(这样可以正常工作、因为引脚监控是免费的)。

    我更好奇的问题是、TI 是否会增强 HET 以在将来提供实际的波形开始+停止。  由于 HET 是一个运行其自身微代码的"协处理器"、因此执行此操作似乎不会太困难。

    非常感谢。

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

    BTW、根据我对 HET 的了解、客户似乎可以编写定制的 HET 微代码来满足他/她的任何需求、但我不太喜欢 gung-ho 来应对这种挑战。  OTOH、如果有人想帮助"增强" TI 提供的现有 HET 设施、我肯定会有兴趣接受教育。

    谢谢。

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

    尊敬的 Peter:

    您可以使用 HET IDE 来开发和调试 N2HET 代码。

    HET_IDE IDE、配置、编译器或调试器|德州仪器 TI.com

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

    pwmStart()和 pwmStop()用于启动和停止引脚切换。  pwmStop()不会停止中断或 pwmNotification。

    pwmDisableNotification()可用于禁用 PWM 通知。

    或  

    您可以编写代码来禁用 PWM 输出中断:

    hetRAM->指令[(PWM << 1U)+ 41U].Control &= 0xFFFFFFFEU;

    PWCNT 指令控制字段的位0用于启用或禁用中断。

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

    您好、QJ、

    遗憾的是、禁用通知本身并不足以满足我的需求。  我正在尝试将 PWM 与某个事件相位对齐、以便可以发生"同步/同步"活动。  HET 优先于使用 RTI、因为不需要 CPU 来引起/照顾信号转换。

    我可以使用 RTI 执行此操作、因为 rtiStopCounter()和 rtiStopCounter()实际上会停止并启动信号、以便正确设置相位。

    这是我的代码片段示例、其中 GIOA_0 (在本例中为1 PPS 信号)接收到中断

    void gioNotification (gioPORT_t *端口、uint32位)

    if (port = gioPORTA && bit = 0){// GIOA_0
    rtiStopCounter (rtiREG1、rtiCOUNTER_Block1);
    rtiStartCounter (rtiREG1、rtiCOUNTER_Block1);

    我的仪器显示,RTI 比较1事件将在 gioNotification()之后大约9微秒发生,而其他源的中断不会产生干扰。  比较1事件生成一个与 GIOA_0事件"对齐"(延迟)的波形。

    我希望 HET IDE 能够执行(实际)波形停止/启动、但我目前没有时间处理这种方法(尽管非常想了解一些新的东西)。

    非常感谢。

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

    好的、只要你有时间尝试 HET IDE 编码、请打开一个新的线程、询问 HET IDE 和 HET 指令相关问题。 谢谢

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

    您好、QJ、

    事实证明,使用 rtiStopCounter()/rtiStartCounter()可能对我们不起作用,因为尝试使用软件来编写信号会引入(过多) slop/slew 以提供干净的波形。  相位对齐(前端)已成为问题、但相位锁定(后端)非常难以管理。

    我开始查看 HET IDE、并将根据需要打开一个新线程。

    非常感谢。