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/UCD3138:UCD3138计时器 T16用于 PWM

Guru**** 2553260 points
Other Parts Discussed in Thread: UCD3138

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/773240/ccs-ucd3138-ucd3138-timer-t16-use-for-pwm

器件型号:UCD3138

工具/软件:Code Composer Studio

您好:

    最近我使用 UCD3138计时器 T16 生成 pwm0引脚输出 PWM 波形、我发现占空比不能为0。

    下面是我的一些代码:

void init_pwm0 (void)

TimerRegs.T16PWM0CNTCTRL.bit.prescale=0;  
TimerRegs.T16PWM0CMP0DAT.bit.CMP_DAT = 250;                        //重置计数器的值
TimerRegs.T16PWM0CMP1DAT.bit.CMP_DAT = XXX;                        COMP0的+/-50%占空比一半
TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_ACTION0 = 1;               //1用于 SET 引脚
TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_Action1 = 2;               /2用于清零引脚
TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT = 0;                        //确保默认值为0
TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_DRV = 1;                   //将零输入到输出锁存器中
TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_ENA = 1;                   //使能引脚作为输出
TimerRegs.T16PWM0CMPCTRL.bit.CMP0_INT_ENA=0;                   //启用中断
TimerRegs.T16PWM0CNTCTRL.bit.SW_RESET = 1;                       //允许计数器运行
TimerRegs.T16PWM0CNTCTRL.bit.CMP_RESET_ENA=1;                 由 COMP 0进行//使能复位

当 我设置  TimerRegs.T16PWM0CMP1DAT.bit.CMP_DAT =  0时; 希望使 pwm0输出为0。波形如下:

 我想说:

 为什么 当 TimerRegs.T16PWM0CMP1DAT.bit.CMP_DAT = 0时,波形具有 ***。

 如何将 pwm0输出 PWM 设为0占空比、如下所示:

非常感谢!

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

    一位专家正在研究这一问题并将作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请尝试此配置以 实现零占空比:

    TimerRegs.T16PWM0CMP0DAT.bit.CMP_DAT = 250;                                             //复位计数器的值
    TimerRegs.T16PWM0CMP1DAT.bit.CMP_DAT = 250;                                            //值变为高电平
    TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_ACTION0 = 2;               /2用于 清零引脚
    TimerRegs.T16PWM0CMPCTRL.bit.PWM_OUT_Action1 = 1;               //1用于 SET 引脚

    对于不为零的其他占空比、您需要将 T16PWM0CMP1DAT 设置为(250 -所需占空比)。
    例如、若要使 Duty = 2计数、请将 T16PWM0CMP1DAT 设置为248。

    此致、

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

    感谢您的回答!

    我这么做了、它可以得到0占空比 波形、但还有另一个问题、我不能得到像 这样的100占空比波形:

      

    如果 TimerRegs.T16PWM0CMP1DAT.bit.CMP_DAT = 0,则在  T16  复位时波形将为***。

    是否有任何解决方案来避免这种情况***?

    或者  、我们可以设置哪些寄存  器来使 pwm0引脚 oput PWM 在30kHz 时的占空比为0至100。

    非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用相同的配置同时获得0%和100%可能是不可行的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有任何理想条件来激发这种使 pwm0引脚输出为0%-100%的占空比的可编程性?

    我还想对周期做出一些判断,以使 pwm0引脚输出为0%-100%的占空比。

    如下所示:

    但我不会在项目中说它是可靠的,也不是!

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

    您会注意到、这种情况的稳态结果很好、并且与所需的行为相匹配。

    但转换时的中间瞬时行为可能不可取。

    以下两项可能有用、但必须经过全面测试:

    1) 1)在 ISR 中而不是在主循环中进行转换。 因此、此转换的时间是确定性的、而不会受到非确定 性延迟的影响。

    2) 2)不要只更改 ACTION0、而是应用我们之前讨论的所有配置更改、以便获得零占空比。

    也不是"if/else"条件、而是具有带迟滞的转换条件。 换言之、 从高电平切换到低电平的不同点与从低电平切换到高电平的不同点。  

    希望这有道理。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果上述问题已解决、请将此帖子的状态设置为已解决。