PWM输出在一个周期之间变成高电平。

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
11个帖子/ 0个新帖子
最后发表
imaizumi.k
离线
最后看到:6天3小时前
加入:2018-06-22 01:18
PWM输出在一个周期之间变成高电平。

Hello Dialog支持团队,

我想改变PWM占空比动态(使用Timer2)。
有一种现象是PWM输出在一个周期之间变成高电平。
我附上PWM输出快照。

我读“图48:定时器2 PWM块图”在DA14580 datasheet。
我认为这种现象是由比较责任引起的。
当T2_DUTY_CNTR仅等于PWM2_DUTY时,PWM输出变为低电平。
但当PWM2_DUTY值小于T2_DUTY_CNTR时,PWM输出在一个周期内保持高电平。

我认为附件的快照中也有这种现象

这个想法对吗?
你能告诉我这个变通方法吗?

最好的问候,
Katsutoshi Imaizumi,

关键词:
附件:
设备:
PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

嗨imaizumi.k,

当您将pwm占空比更改为较低的pwm占空比时,有时会发生这种现象,因为新的pwm占空比必须等待timer2变为零。因此,如果您将占空比更改为一个较低的占空比,而计时器将不会为零,那么您将在一个周期之间看到一个较高的水平。一个理论上的工作将是在你改变占空比之前将timer2调零并添加一个小延迟(例如3 NOP)。

谢谢,PM_Dialog

imaizumi.k
离线
最后看到:6天3小时前
加入:2018-06-22 01:18
我明白我必须这么做

我明白我必须等到timer2变成零后才能改变DUTY。
但是我不知道如何观察timer2变成0的时间。
因为T2_DUTY_CNTR和T2_FREQ_CNTR是内部寄存器,所以14580 core无法读取它。

你能告诉我如何确认timer2计数器吗?

最好的问候,
Katsutoshi Imaizumi

PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

嗨imaizumi.k,

你能把你的问题说清楚吗?正如我在之前的文章中提到的,你应该在改变占空比之前添加一个小延迟(例如3 NOP)。那么,您想知道延迟的时间吗?

谢谢,PM_Dialog

imaizumi.k
离线
最后看到:6天3小时前
加入:2018-06-22 01:18
对不起,我不能

对不起,但是我不能理解“work around will be to zerothe timer2”的意思。
这意味着“Timer2计数器为零”或“Timer2停止”?或其他意思吗?

如果意思是“Timer2 counter to be zero”,请告诉我方法。
如果意思是2“Timer2 to stop”,我理解是“Timer2 stop-> 3NOP ->Duty change ->Timer2 start”。
但是当我重新启动timer2时,timer2周期计时改变。
我不想改变PWM的时间,我想改变的只是职责的PWM。

你能告诉我我问题的答案吗?

最好的问候,
Katsutoshi Imaizumi,

PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

minor-latin;mso-bidi-theme-font:minor-latin;border:none windowtext 1.0pt;
mso-border-alt:none windowtext 0cm;padding:0cm;background:white;mso-ansi-language:
EN-US">嗨imaizumi.k,

minor-latin;mso-bidi-theme-font:minor-latin;border:none windowtext 1.0pt;
mso-border-alt:none windowtext 0cm;padding:0cm;background:white;mso-ansi-language:
EN-US">很抱歉耽搁了。您应该将计时器设置为零,并添加一个小延迟,因此不需要停止计时器。请让我知道你是否需要这方面的指导?你把计时器调到零了吗?

minor-latin;mso-bidi-theme-font:minor-latin;border:none windowtext 1.0pt;
mso-border-alt:none windowtext 0cm;padding:0cm;background:white;mso-ansi-language:
EN-US">谢谢,PM_Dialog
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin;background:white;mso-ansi-language:EN-US">

imaizumi.k
离线
最后看到:6天3小时前
加入:2018-06-22 01:18
感谢您的回复。

感谢您的回复。
我想知道如何在不停止timer的情况下将timer2设为0。
请告诉我怎么做。

最好的问候,
Katsutoshi Imaizumi

PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

嗨imaizumi.k,

你能上传你正在使用的代码片段吗?之后我会审核它,并尽快给你回复。

谢谢,PM_Dialog

imaizumi.k
离线
最后看到:6天3小时前
加入:2018-06-22 01:18
我附上了源代码

我附上了导致这种现象的源代码。
它是基于“timer2_pwm”的示例源代码。
我修改了它,缩短了任务设定时间。

你能检查一下代码吗?

最好的问候,
Katsutoshi Imaizumi

PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

嗨imaizumi.k,

感谢上传您的代码。让我检查一下你的项目,我会尽快回复你。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:16小时26分钟前
工作人员
加入:2018-02-08 11:03
嗨imaizumi.k,

嗨imaizumi.k,

你使用的延迟太短了,所以我强烈建议你使用默认的延迟(1秒)作为SDK的例子。

谢谢,PM_Dialog