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.

[参考译文] LP-MSPM0G3507:定时器(Timx):定时器外设可以同时支持两个用于输出比较和放大器的独立通道;输入捕捉?

Guru**** 2393265 points
Other Parts Discussed in Thread: SYSCONFIG, MSP430F5324, MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1312010/lp-mspm0g3507-timers-timx-the-timer-peripherals-can-simultaneously-support-the-two-independent-channels-for-output-compare-input-capture

器件型号:LP-MSPM0G3507
主题中讨论的其他器件:SysConfigMSP430F5324MSPM0G3507

您好,先生

   一个计时器只有一个计数寄存器、但如果它支持两个通道、我可以将 TimG6 CCR0设置为比较输出并同时将 CCR1设置为捕获输入吗?

  
在 SysConfig 中设置时会发生错误。

谢谢。

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

    问题是、当它被捕捉时、它将在默认情况下将定时器复位、这将导致 PWM 输出不正常。 这就是我们未在 SysConfig 中启用它的原因。 如果您想意识到这一点、可能需要处理计数器的过零问题。

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

    伊森·伊森

    我们使用 MSPM0 G3507构建我们的温度控制器项目、我只需要一个简单的功能 、在 TIMG8中、一个 CCR 作为捕获、我认为这是 MCU 中的一个基本应用、我们在 MSP430F5324中使用这个方法、但在 SysConfig 中我们有问题(如 Wilson 图片)。

    我的应用是 CCR0、作为比较功能并切换输出引脚、CCR1作为捕获功能、当捕捉引脚获得信号 捕获时、计数器值传输到 CCR1、而计时器计数器继续运行、直到我停止计时器。

    G3507能否实现这一功能?

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

    简而言之就是:是的、您可以配置一个 CCR 进行比较、而配置另一个 CCR 进行采集。 在我的应用中、我使用一个通道进行捕获(频率计数)、另一个通道作为捕获的超时比较。  由于存在勘误表 TIMER_ERR_01、我使用连续计数(向上计数模式到0xFFFF)和差分、而不是 TRM 第25.2.3.1.2.2节("周期捕获")中的 LCOND 建议。

    采用公共时基(CTR 寄存器)会对如何使用通道提出一些限制、但这些限制与使用 F5324的功能可能没有太大不同。

    我对 SysConfig 不太了解、因此我在这方面推迟到 Eson 讨论。

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

    你好,布鲁斯

    感谢您的答复,根据您的描述,我发现有两个问题我需要检查

    (1)您不使用 SysConfig 配置外设、我想您 使用 SDK drivelib 并直接编码、对吗?

    (2)捕获功能有错误、当 我使用计时器零事件或加载事件时、捕获值始终为零或加载值、我对吗?

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

    1) 1)我直接写入寄存器。 如果 SysConfig 或 driverlib 中存在限制、我不知道它们。

    2) 2)是。 "周期捕获"模型(也称为"脉宽捕获"、第25.2.3.1.2.3节)使用 ZCOND 在每次捕获后将 CTR 归零、因此您不必更改连续的捕获值。 除此之外、由于 Erratum timer_ERR_01 [参考勘误表(SLAZ742A) p.15]、该方法不起作用、所以毕竟要做差分。 这与你正在使用 MSP430执行的操作相同、因为 TimerA/TimerB 没有类似 ZCOND 的机制。

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

    你好,布鲁斯

    (1)强硬的家伙!

    (2)如果我的应用程序需要零事件(溢出计数)与捕获函数,我想我有麻烦吗?

    我在 TI 网站订购列表中看到了 M0G3507、我的经销商告诉我这是 MP 产品、您知道吗

    他们是否已在大规模生产产品中解决了此问题?

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

    (2)在向上计数模式下、CTR 计数到负载值时自动归零(使用一个"Z"中断触发器、即 TAIFG);这是有效的。 ZCOND 可以触发来自其他事件的这种归零;这是一个有问题的事件。

    勘误表适用于生产器件版本 B、即"M"(生产)器件、而不是"X"(预生产)器件。 我实际上在我的 Rev B 设备上看到了这种情况。

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

    你好,布鲁斯

    感谢您的回复、等待 TI 员工发表意见。

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

    大家好、这个错误是针对 MP 产品。 这个错误并不意味着零事件和溢出计数事件不起作用。 这意味着 TIMx.CC 中保存的计数器捕获值不正确。 它不影响计数器。 它只影响捕获寄存器(TIMx.CC)。

    如果您想要实现 PWM 输出+捕获。 您无法使用 driverlib 中的示例、因为它会在捕获事件后重置计数器。

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

    伊森·伊森

    我的应用需要使用零事件来计算溢出数并在 Overflow7~ Overflow8之间获得正确的捕获值、因此正确的捕获值对我们来说非常重要。

    这意味着我无法 在项目中使用此 MCU?

    TI 是否有任何计划或时间表来修复此错误?

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

    不要将 ZCOND 特性与捕获一起使用。 因为 MSP430上不存在该引脚、所以您目前还未使用它。 我只提到了这一点、因为 TRM 会建议您使用它(用于周期/占空比测量)、因此您需要忽略这一点。

    未经请求:您尚未描述您的应用,因此这可能与此无关:如果您想要捕获(上升+下降)两个边沿,您(很可能)需要使用两个通道进行捕获-一个用于上升边沿,另一个用于下降边沿。 你可以触发"要么"、但没有机制(我找到的)可以推断触发的边沿;在 MSP430上、你可以读取 CCI 或 PxIN 寄存器来执行此操作。

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

    你好,布鲁斯

    当前项目为 MSPM0 G3507而非 MSP430。

    如果不使用 ZCOND 或 LCOND、如何计算溢出计数?

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

    假设您当前正在对 TAIFG 中断进行计数。 相反、您会对"L"中断进行计数(GPTIME_CPU_INT_MIS_L_SET)。 [抱歉、我之前说过"Z"、但"L"是我的代码(不同的应用程序)所说的内容。]

    我想您说过您想 重新实施您目前正在使用 MSP430执行的操作、这样您就不需要 ZCOND 特性。

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

    你好,布鲁斯

    感谢您的意见、我提供了我的应用手册、本应用手册在 MSP430F5324中运行良好、

    您能帮助我检查一下它是否可以在 MSPM0G3507中使用吗、 我的原始想法是

    TA2=TIMG8

    TA2CCR0=>TIMG8.cC0  //作为 cmpare

    TA2CCR1=>TIMG8.CC1  // 作为捕获

    TAIE=>ZERO EVENT              //溢出计数

    e2e.ti.com/.../timer_5F00_action_5F00_flow.pdf

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

    您可以在 MSPM0中使用零事件和加载事件。 不可用的函数如下:您不能让 MCU 在获取捕获事件后重新刷新计数器。 您需要将 ZCOND 和 LCOND 保持为0。  

    在我们的示例代码中、计数器在中断中更新。 对于应用程序、您可以在遇到捕获事件时删除计数器更新。 看到了您的 PDF、我认为您可以实现您想要的东西。

    对于该错误、将在 Furture 设备中修复。 对于该器件、目前没有解决该问题的计划。

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

    我同意伊森——我在这里看不到 TIMG 做不到的事情。

    对于 OUTMOD、请使用 CCACT:CUACT。 要启用/禁用/清除中断、请使用 IMASK/MIS/ICLR。 您不需要 LCOND/ZCOND。 我认为您也不需要/不需要影子寄存器(如果出现了该问题)。

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

    嗨、伊森和布鲁斯

    很好的回答、感谢您的帮助。