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
您好、MSP-Team、
我代表客户输入问题。 问题与 Timer_A1 (TA1)的输出行为有关。
他在向上计数模式下使用 TA1、激活 TAIE 并在 OUTMOD = TOGGLE 时切换 GPIO。 相应地设置 GPIO 的 PSEL。 在 TA1的中断例程中、TA1CCR0更新为新值。
如果计数器值高于需要设置的 CCR0值、则 IRQ 将被触发、倒计数将被正确复位、但 GPIO 未被切换。
此行为是否正确? 在这种情况下、预期输出也会切换。
此致、
Gokhan
您好、Goekhan、
当 TA1R 大于 TA1CCR0时、如果选择向上计数模式、则定时器应自动从0开始计数。 这可能会触发 TAIFG、因为它从 TA1CCR0计数到0、但我不希望 GPIO 在下一个计时器周期计数回至 TA1CCRn 之前切换(因为在向上计数模式下使用切换会在每次 TA1R = TA1CCRn 时导致 GPIO 切换)。
尊敬的 Barrera 先生
非常感谢您的快速响应!
参考了第 1.2.5.1.1章"输出示例- SLAU400F 中处于增模式的定时器":"当定时器计数到 TAxCCRn 值并且从 TAxCCR0降到零时、OUTn 信号会发生变化、具体取决于输出模式。"
如果我理解正确、TA1R 会向上计数到设置的 TA1CCR0值、并且一旦它们匹配、在计时器时钟的下一个上升沿、TA1R 会回滚到零、TAIFG 会被触发、并且在我的情况下会切换 OUTn。
那么、如果我将 TA1CCR0设置为与当前的 TA1R 相同的值、那么在计时器时钟的下一个上升沿、OUTn 应该切换、因为给出了 TA1R 和 TA1CCR0匹配的条件? 另一方面、当 TA1R 大于新设置的 TA1CCR0值时、不会为 OUTn 提供此条件、只有 TA1R 回滚到零并且触发 TAIFG。
此致、
Pascal Künzi
Pascal、您好!
因此、数据表第一句末尾显示:"取决于输出模式"。 之前提到过、OUTMOD = Toggle 且 Timer_A1处于向上计数模式。 如果您查看输出模式4:切换的输出示例图、它会显示每次计数 TA1R = TA1CCRn 时 OUTn 信号都会切换。 当 TA1R = TA1CCR0时、没有开关行为、因此我很困惑为什么在这种情况下 OUTn 会切换。 这是您看到的行为吗?
如果您使用输出模式2、3、6或7、则该输出的开关行为将取决于 TA1CCR0。
它没有在数据表中明确说明如果您将 TA1CCR0完全更改为 TA1R 将会发生什么行为、更重要的是、此时 OUTn 的行为是什么、因此我将与团队一起研究这一点、看看他们提供了什么反馈。 您是否有用于测试此代码的任何代码?
描述输出模式的表格非常清楚、当定时器计数到 CCRx 时、输出切换。 因此、如果您将 CCRx 更改为小于当前计数的值、则在下次计数到 CCRx 时才会切换。
你好,Aaron
您可能是第二次使用 TA1R!= TA1CCRn?
我最初假设、如果您设置 TA1CCR0 < TA1R、OUTn 应该切换。 但我现在理解、情况并非如此。
遗憾的是、我没有任何特定的代码来测试这一点。 我在我们非常大的应用程序上进行此操作、我无法分享。
感谢您帮助我了解计时器外设并澄清这一点。
此致、
Pascal Künzi
Pascal、您好!
很抱歉、我之前 在回答(编辑)中说 TA1R = TA1CCR0、而 TA1R = TA1CCRn。 如果您使用输出模式2、3、6或7、当 TA1R 从 TA1CCR0降到零时、OUTn 将切换;如果您使用输出模式1、4或5、则 OUTn 将在计数增至 TA1CCRn 时切换。
很高兴为您提供帮助。
Pascal、您好!
如果您使用向上计数模式、我建议切换到另一个器件输出信号引脚、如 TA1.1或 TA1.2、以便 TA1CCR1或 TA1CCR2切换输出引脚。 由于 TA1CCR0设置了 PWM 周期、因此在将该引脚用作 PWM 输出时、使用 TA1.0将不会很有用。 您看到的是下面的线程中显示的行为(最下面的回复)-输出在每个周期都会发生变化。
我在 Launchpad 上尝试了一个简单的测试。 我将 TA0.1配置为计时器输出(连接到绿色 LED)以监控结果。
CCR1被设置为等于 CCR0、该 CCR0已从计数为0xff 的32KHz ACLK 运行。 CCTL1被设置为切换/复位输出模式。
用户指南中的表25.2告诉我、当定时器计数到 CCR1时、输出将切换、而当它计数到 CCR0时、输出将复位。 如果是这样,那么结果将确切取决于同时发生的冲突所发生的情况。 完全打开或关闭是可能的结果。 但我看到的是 LED 发出的微弱的光。 更改 CCR1会改变其亮度、CCR0+1的值为 FULL OFF。
这告诉我、当定时器在到达 CCR0后复位为零一个计数时、会发生输出复位。
你(们)好、David
感谢您查看该内容。 与我的设置相比、CCTL1设置为模式4切换。
根据我现在介绍的内容、切换/复位和切换均按预期运行、并与此论坛 问题的底部答案相匹配。
此致、
Pascal
你好,Aaron
您共享的论坛条目与我的期望/体验相匹配。
我最初提出的一个问题是、当 TA1R 大于设置的 TA1CCR0值时、OUTn 是否切换已在之前的答复中得到解决。
非常感谢您的努力、分享了指向该论坛条目的链接、并帮助我了解计时器外设的功能! )
此致、
Pascal Künzi