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.

[参考译文] CCS/TM4C123GH6PZ:PWM 当我给出占空比0时、我会得到类似 I#39;m 给出255的输出

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/643899/ccs-tm4c123gh6pz-pwm-when-i-give-duty-cycle-0-i-get-output-like-i-m-giving-255

器件型号:TM4C123GH6PZ

工具/软件:Code Composer Studio

大家好、我在项目中使用 PWM 模块。 当我给出占空比0时、我得到输出、就像我给出255一样

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

    SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);

    //HWREG (GPIO_PORTF_BASE + GPIO_LO_LOCK)= GPIO_LOCK_KEY;
    //HWREG (GPIO_PORTF_BASE + GPIO_O_CR)|= 0x01;

    GPIOPinConfigure (GPIO_PD0_M1PWM0);
    GPIOPinConfigure (GPIO_PD1_M1PWM1);

    GPIOPinTypePWM (GPIO_PORTD_base、GPIO_PIN_0 | GPIO_PIN_1);

    PWMGenConfigure (PWM1_base、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
    //PWMGenConfigure (PWM1_base、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);

    PWMGenPeriodSet (PWM1_base、PWM_GEN_0、255);
    //PWMGenPeriodSet (PWM1_base、PWM_GEN_0、255);

    //PWMGenEnable (PWM1_base、PWM_GEN_0);

    PWMOutputState (PWM1_base、(PWM_OUT_0_BIT | PWM_OUT_1_BIT)、true);
    PWMGenEnable (PWM1_base、PWM_GEN_0);

    / /

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

    这种情况早已为人所知/已被识别-并且发生在(许多) ARM 供应商的 ARM MCU 中。

    [编辑] 01:38 -刚刚注意到您使用的是 PDO 和 PD1 -如果您是"LaunchPad"-供应商(永远)嵌入了"魔鬼瘟疫-恶魔"(R9/R10)-这"将 PDO/PD1与 PB6/PB7绑定!"   现在、如果您尚未解决 PB6/PB7 -那么没有伤害-没有碰撞。  (除了"潜在"的未来伤害之外!)  我建议您先去焊、然后再去"tombstone-"(通过焊接(仅)一根桥臂来支撑这些 Rs)、这样就消除了它们对 MCU 引脚争用的可能性、并删除了您更正了该供应商的"信号"(不建议这么做)"填充这2个电阻器"。   再说一次-除非您已"订购"PB6/PB7至 GPIO 输出-否则这证明您的问题不可能是由您造成的...

    PWM 模块/发生器提供的出色控制-到达(某些)限制。

    两种解决方案可帮助您"修复"此"已知"(PWM 问题@最大和最小设置: (即 PWM @ 100或0%)

    • 硬件-在 MCU 的 PWM 输出之后采用一个外部逻辑门、该输出能够在(添加的) GPIO 命令上"强制"(1)或" 0 "逻辑
    • 软件-在每个/每个"PWM 更新"-测试、"PWM 设置为(任一)限制。"   如果/发生这种情况时-"超载 MCU (@限制)输出"、方法是提供(例如) 2%或98%占空比的 PWM 值-这将证明(在大多数情况下)"您的 PWM 控制器件可接受"。

    如果您使用的是"栅极驱动器 IC"至(技术术语后面) "增大" MCU 的 PWM 输出-在向(可能的)功率 FET 演示之前-您可以在 MCU 的 PWM 信号和栅极驱动器的输入之间添加一个串联电阻器。   然后-通过(单独的) GPIO 信号(直接)连接到(相同的)"栅极驱动器输入")、您(实际上)能够"超控" PWM 信号-呈现(相反)逻辑"1"或"0"。   

    请注意、"无需添加硬件"(但对于串联电阻器)是必需的-并且您必须"测试并识别"MCU 的"@限制"输出-并使 GPIO 从"高阻抗"(即输入)切换到"输出"-并将其设置为正确的(1或0) 逻辑电平。   这种(GPIO 调制)"辅助至 PWM"技术可(偶数)扩展至"非栅极驱动器"应用!   (通过将栅极驱动器替换为任何"单引脚、电平控制型 IC"。)

    已注意到、MCU 的"生成 PWM"(可能)的"计时器方法"(更简单)"溢出"这一问题、即"命令到极限值时"PWM 发生器的"问题"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以使用较慢的"重读"辅助功能?
    提供了很棒的(必要的)细节...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请输入答案代码。 我英语不好
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我"感受到您的语言痛苦"-但问题是"不在代码范围内!"

    如果将 PWM 周期设置为255 -则无法将 PWM 脉宽设置为"高于大约249"-以确保安全。
    同样、您不能将 PWM 脉宽设置为"低于大约5左右"、这也是为了确保安全。

    例如:

    PWMGenPeriodSet (PWM1_base、PWM_GEN_0、0); // 您将此报告为失败-生成100%占空比

    相反-请尝试:

    PWMGenPeriodSet (PWM1_base、PWM_GEN_0、5); //  这应该起作用-产生一个(非常小)占空比(< 2%)

    这不是您的代码中的故障-这是 ARM (和其他) MCU 中的(已知)限制。

    您可能会找一位朋友或老师来帮助您进一步阅读和理解。   祝你一切顺利...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要使 PWM 信号为0,我需要做什么?
    如果我使 PWM 信号为0、这将解决我的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Ali YOLCU"]要使 PWM 信号变为0,我需要做什么?

    我在(第一)回复帖子中回答了这个问题、并提供了几种方法来实现这个问题。

    您也可以(也可以)选择"将引脚从"PWM (type & config)"切换到 GPIO"、然后将其设置为逻辑"0"。   同样、如之前所述(第一个帖子)-您必须"测试"是否需要"将占空比设置为零"-此时-仅此时间-将引脚从 PWM 重新配置为 GPIO -并将其订购为低电平!

    请注意、除了(非常)详尽的书面说明(多种方法)之外、我之前还提供了示例代码-它"非常接近"0占空比 PWM。

    PWMGenPeriodSet (PWM1_base、PWM_GEN_0、 5); // (您的值) 255提供周期时提供小于2%的占空比。  您(可以)尝试使用"1-4"值-以进一步降低占空比!  (哪个"侵犯"了"安全因素"-可以或不能. 请参阅法律"样板文件"(页底)、具体地说:"内容提供者"(这是我的工作)对所有"外人"都有利。)

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

    CB1、您是否知道此问题的记录位置? 我可以接受限值和故障、只要它们处于开启状态(数据表或勘误表)即可。 您不能在冲头的情况下配送商品。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您寻求"避免"冲头时-为什么不启动 w/ARM -尝试并确定此(已知) PWM 问题是由它们引起的-还是由单个"实施团队"引起的。 (此处为该供应商。)

    我们假定您希望"逃脱"冲头、已促使您认真地"搜索和审核"所有已知供应商发布的勘误表!

    正如过往的拉姆斯菲尔德所说,“并非所有“已知未知”,而是将其纳入勘误表,更糟糕的是,存在“未知未知未知未知未知未知”——如果有的话——只能将其纳入勘误表。

    当您选择将这一"已知发现"描述为"黑客"时、您是否需要进行充分调查、然后同意或质疑这一发现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="CB1_MOBIT"]当您试图"避免"冲头-为什么不使用 ARM 启动-尝试并确定这一(已知) PWM 问题是否是由它们引起的[/引用]

    制造商似乎并不共享 PWM 外设(尽管我可能错过了线索)。

    我不知道为什么这种监督不断发生。 这与覆盖整个范围的 PWM 不是以前实施过的。

    Robert

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

    [引用 user="Robert Adsett"]制造商似乎不共享 PWM 外设[/quot]

    同意!    事实证明、"我公司的主要客户/投资者有更多理由 "促使我们 "调查许多(当然不仅仅是一个) ARM 供应商的 ARM MCU 产品。"    此外-我们注意到、 "几家 ARM MCU 供应商-但并非所有供应商-似乎都在"忍受" 这种情况、 "PWM 问题@占空比极端!"   (因此、 "冲头"的说法是"不知情"、或者本身是"招贴画冲头!")

    现在、"外设实现中的变化"扩展到了 PWM 模块之外。   许多/大多数现代 ARM MCU 都包含 DAC 和功能强大的 TFT 接口(此处不存在),在计时器、ADC、QEI、 I2C (另一 个类似 PWM 的“困难的一个”)中会出现差异-列表会增加。

    是的、我们强大的 Intel MCU (甚至 Zilog)可以拨打 PWM 极限-不需要(任何)特殊的照顾/处理。   在 ARM 的防御中、 性能显著提升、 这必然提高 了许多/大多数此类 MCU 外设实施的复杂性。    每个"供应商实施团队"都有不同的设计目标-不同的价格点-因此(某种程度的) 外设变化是"新规范"- 并且是(令人不安的)预期!    (虽然不愿意接受...)

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

    [引用 USER="CB1_MOBIST"]是的-早在过去-我们强大的 Intel MCU (甚至 Zilog)可以拨打 PWM 极限-不需要(任何)特殊的照顾/处理。 [/报价]

    还有 ST、Infineon 和其他人。 IIRC 其 DSP 上的 TI PWM 外设也可以覆盖整个范围。

    CB1_mobile 说:
    在 ARM 的防御中- 性能显著提高- 必然提高了复杂性级别

    嗯、不 这真的是一个自我伤害的伤口。 并非所有东西都需要更复杂。 CAN 和 UART、它们并不复杂。 尽管 TI 的 UART 也似乎犯了一些简单的错误。

    TM4C 上的 PWM 实际上并不比其他正确的器件上的 PWM 复杂。 至少是我可以看到的。

    我不知道他们重复了旧规范错误、还是很高兴重复了我们已经知道的解决方法、这是不是应该让我感到沮丧的。 也许这个外设设计问题在于以前的开发人员而不是 TI? 至少他们有不熟悉的借口。

    Robert

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

    [引用用户="Robert Adsett"]

    CB1_MOBILE
    在 ARM 的防御中、 性能显著提升、 这必然提高了复杂性

    [/报价]

    如果我们(或我们的"预充")在1800年就存在了-我们每个人都说:"手枪的伸出距离"。   (亚伦·伯尔和亚历山大·汉密尔顿——为美国历史爱好者而来)

    ARM 器件能够:

    • 同步多个 PWM 通道
    • 通过更改的逻辑电平停止所有 PWM 输出(立即)、该输出应用于单个 MCU 引脚
    • 可适应如此宽的 PWM 频率范围
    • 在4个独立 PWM 发生器之间生成协调的 PWM 输出、8个 MCU 引脚留下深刻印象
    • 能够、"改变、停止或添加" PWM (或多个其他)功能-或其运行的关键方面-"动态"
    • 并保持更高的"精度和精度"-在不同的温度和电压条件下(带 IN 规格)

    努力支持" ARM 的一般优势..."的(适当的)主张   (您本可以转至 MSP 器件-这不是真的吗?)

    我 @注意您列出的一家 MCU 供应商-声称"不"会遇到"PWM 问题"-我们必须对此提出质疑。   (注意:提供了许多 MCU -我们的经验不太可能(完全)重叠。)

    如果你"抵抗"----我已订购了一套"双匹配手枪"----两支都是满载的----并向"边境当局"提供(仅)最小的方向。 ("卸载"手枪-横穿(您的)侧...)

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

    可能需要关键字。 虽然这些功能中的许多或大部分都在 ARM 之前的其他控制中存在、尤其是在 DSP 中、但 ST 和 Siemens / Infineon 的 ST10和 C166系列也具有相当复杂的 PWM (也有一些相当复杂的计时器)。 所有这些都不是 ARM 处理器所特有的

    [引用 USER="CB1_MOBILE"]

    ARM 器件能够:

    • 同步多个 PWM 通道
    • 通过更改的逻辑电平停止所有 PWM 输出(立即)、该输出应用于单个 MCU 引脚
    • 可适应如此宽的 PWM 频率范围
    • 在4个独立 PWM 发生器之间生成协调的 PWM 输出、8个 MCU 引脚留下深刻印象
    • 能够、"改变、停止或添加" PWM (或多个其他)功能-或其运行的关键方面-"动态"
    • 并保持更高的"精度和精度"-在不同的温度和电压条件下(带 IN 规格)

    [/报价]

    并不特定于 ARM 器件。 其他器件具有此功能。 我不明白为什么这些功能的复杂性增加会使完全 PWM 变得更加困难。 也可添加到列表中

    • 选择中心对齐或边沿对齐 PWM 的能力。 我认为有些人可能也可以控制 PWM 之间的相移、但我已经阅读了详细信息、已经有一段时间了。

    [引用 USER="CB1_MOBIST"]我必须注意您列出的一家 MCU 供应商-声称"不"遭受 "PWM 问题@四肢"的困扰-我们必须对此提出质疑。[/QUERPLET]

    我只是注意到他们至少有一台设备没有受到这种不良影响。 就像在发送缓冲区为空时发生中断一样、这是一个得到广泛解决的问题、因此实际上无需重复。 尤其是因为它是一个设计/规格问题、而不是一个实现问题。

    是否有理由认为硅器件的成本很高? 我不这么认为、但是...

    现在、如果您的 PWM 仅用于控制 LED、或者提供 D/A、那么这种监督就相当小。 但是,对于直流电机控制*之类的东西,这种功能是必要的,尽管存在一些变通办法,但这些办法的实际实施可能会有点棘手。

    Robert

    *交流电机控制不需要达到全范围、这可能是关键所在。 也许 PWM 外设在设计时就考虑到了交流电机控制、而不考虑需求或其他器件。

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

    请注意、您(可能)会将我的"双周、从手臂获得津贴"置于危险之中(有些)...   C'est fini - et bien - mercî…

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请在此帖子中查找类似的讨论和解决方法。
    e2e.ti.com/.../2417089