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.
工具/软件:Code Composer Studio
大家好、
在开始使用这个用于 PWM 信号生成的新方法来修改代码之前、我有一个一般性问题。 我对 PWM 信号有两个引脚要求、这两个引脚应根据频率和占空比进行修改、频率 范围为1-200Hz。 由于我在使用宽定时器生成该信号时遇到问题、并且在连接的引脚上没有 PWM 模块、因此我计划使用引脚作为 GPIO 生成 PWM 信号、并使用一些定时器在 GPIO 应打开和关闭时进行计数。 是否可以 通过这种方式实现它?
谢谢!
[引用 user="Djedjica"]因为我在使用宽计时器生成该信号时遇到问题[/quot]
有什么问题? "试样"从未证明与结果的"真实演示/描述"一样有用!
打破计时器-它显然是为了支持、"您所寻求的"-并采用(相反)"巨大努力-规避车轮"的做法毫无意义! (海事组织)
如果您完全/正确地报告您的"问题"(超出"不起作用!") 当然、论坛帮助者(甚至那些"官员")团队应该来评论和协助...
是的、 很抱歉、我已经急于完成这项工作、因此我在留言中几乎没有有用的信息。 我已经在论坛上搜索了我的宽计时器问题、找不到 可以根据我的要求构建的解决方案。 因此 、PWM 信号的频率会随着干扰( 1Hz - 200Hz)而增加、当 频率不断增加、然后我得到满负载时、信号会在一段时间内保持在1。 由于 PWM 连接到电机、即使没有监控示波器信号、 用户也可以听到 电机何时以全速旋转、即使 PWM 为5%也是如此。
下面是用于计时器设置的代码片段:
SysCtlPeripheralEnable (SYSCTL_Periph_WTIMER 5); GPIOPinConfigure (GPIO_PD6_WT5CCP0); GPIOPinTypeTimer (GPIO_PORTD_base、GPIO_PIN_6); 周期= SysCtlClockGet ()/200;/200Hz 默认 dutyCyclePWM2 =(无符号长整型)(周期-1)*(1-(5.0/100.0));//5%默认 TimerConfigure (WTIMER 5_BASE、(TIMER_CFG_SPLIT_PAY|TIMER_CFG_A_PWM)); TimerUpdateMode (WTIMER 5_BASE、TIMER_A、TIMER_A、 Timer_up_load_timeout | timer_up_match_timeout); TimerLoadSet (WTIMER 5_base、timer_A、period-1); TimerMatchSet (WTIMER 5_base、 Timer_A、dutyCyclPWM2); TimerEnable (WTIMER 5_base、timer_A);
当需要改变信号的频率或占空比时 ,我使用 TI 函数来改变定时器(TimerLoadSet()和 TimerMatchSet())的负载和匹配。
很抱歉、我无法发布我的电子产品 、我等待下周的电子产品投入生产。 但我发现这篇文章准确地描述了我的问题
提供 的唯一解决方案是移至 PWM 模块。 这不适合我、因为我的输出位于具有宽计时器且无 PWM 模块功能的引脚上。 我把我的所有希望都设置在这个宽计时器上。
这就是为什么我现在正在寻找 一种生成 PWM 信号的替代方法,因为我现在不能选择 PWM 模块(),而且我必须放弃 宽定时器,因为这种干扰 在 我们的产品上是不可接受的。
在上述帖子中"喜欢"您的努力和逻辑-好的。 然而、在您(可能)之前的帖子"快速阅读"中、"不是太多"、海报中报告他是一个"认可的 MCU 计时器问题"、不太可能是"海报造成的"。
必须审查所有相关事实,并在相关/有用的情况下,将其作为证据。 (Rush 经常防止这种情况-这可能是一种趋势-(现在)可以纠正哪种趋势?)
[引用 user="Djedjica">当占空比从1-100%变化或信号仍然存在时、此信号没有问题。 仅在更改频率时[/报价]
可能只有在增加频率时?
但这又提出了另一个问题。 如果这是控制电机、为什么要更改频率? 为什么这么低的频率如此重要?
Robert
好的、那么这可能是您的问题(不过您仍然没有解决其他问题)。
考虑当您缩短周期以增加频率时会发生什么情况。
假设您的周期最初为1000、然后将其减少到500。
Robert
如果这确实是一个"已知问题"-并且仅在更改频率时发生(如您所注意的)-是否可以使用第二个计时器-只有在您寻求"更改频率"时才会"发挥作用"?
您应该能够在(现在)两个定时器输出之间施加一个逻辑门-这样输出(在您的电机上感觉到)来自这两个定时器中的任何一个。 (但一次只能从一个。)
您会看到:
这确实涉及到"猴子运动"-使用第二个计时器-但有5分钟的"思考投资"-似乎(几乎)受到启发、如果您报告的内容正确-这种方法应该成功!
我是否可以注意到、为了"防止"此类"不幸发现"(设计过程中的这么晚)、您是否应该(通过评估板)没有"测试/验证"您的所有关键假设、然后才承诺进行 MCU 选择和 PCB 设计? (这是我们向客户提供建议的方法、在强制执行"客户眼图"之后、那些遵循该指导的客户会增加他们的几率! (与此相反、眼辊应该是他们的命运-当我们"被召唤"救援行动时、我"高兴地回忆到了这一点...)
Robert -您的演示很有洞察力-它的逻辑是无可否认的-但是"一切可能不对"在计时器中。 而且-正如海报报告-我(几乎)可以回顾-供应商的 Amit 证实了这种弱点。
如果您愿意-您可以引导2-3个帖子-并查找/评论我使用第二个计时器的方向。 (因此、任一定时器都可被选通至电机。。。)
我有另一个"割道"-可能会强制计时器达到其最低(产生的占空比)、然后"快速、几乎立即"将其设置为所需的值-伪装和/或避免此问题? (请注意、"接近于零"的占空比会非常短暂-"电机无法察觉"-您是否同意?
[引用 user="Djedjica"]是的,我将在电子产品送达后立即尝试对其进行测试,
无需测试。 这是一个逻辑问题。 用钢笔和纸张坐在桌子上、解决问题。
[引用 user="Djedjica"]设置计时器更新模式位以更新周期的新值并匹配计时器超时的情况如何?[/quot]
这是什么? 它不会处理当前计时器计数。
Robert
另一个思考问题-(实际上是两个):
问题是能够在命令后可靠地中断计时器! 一旦知道/完成-(部分)修复的可能性会成倍增加!
[引用 USER="CB1_MOBILE "]我有另一个"swing"-可能会强制计时器达到其最低(产生的占空比)、然后"快速、几乎立即"将其设置为所需的值-伪装和/或避免此问题? (请注意、"接近于零"的占空比将非常短暂-"电机无法察觉"-您是否同意?[/引述]
嗯、我认为更改频率可能没有意义。 嗯、这不完全是真的、但没有为它提供任何案例。
强制计时器达到最低占空比可能会使问题变得更糟。 强制执行计时器值。 通常、解决方案是对计时保持谨慎、可能需要进行两步频率更新。
Robert
[引用 user="Djedjica"]只有在检测到需要更改频率时,我才转到过程来计算新值(周期和匹配)并在计时器寄存器中设置这些值。 但所有这些都发生在主程序循环中。 您问我的是这样吗?[/引述]
不、我要求您考虑我之前提出的这些问题
[引用 user="Robert ">假设您的周期最初为1000、而您将其减少到500。
Robert