主题中讨论的其他器件:SysConfig、 MSP430F5324、 MSPM0G3507
您好,先生
一个计时器只有一个计数寄存器、但如果它支持两个通道、我可以将 TimG6 CCR0设置为比较输出并同时将 CCR1设置为捕获输入吗?
在 SysConfig 中设置时会发生错误。
谢谢。
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.
您好,先生
一个计时器只有一个计数寄存器、但如果它支持两个通道、我可以将 TimG6 CCR0设置为比较输出并同时将 CCR1设置为捕获输入吗?
在 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) 1)我直接写入寄存器。 如果 SysConfig 或 driverlib 中存在限制、我不知道它们。
2) 2)是。 "周期捕获"模型(也称为"脉宽捕获"、第25.2.3.1.2.3节)使用 ZCOND 在每次捕获后将 CTR 归零、因此您不必更改连续的捕获值。 除此之外、由于 Erratum timer_ERR_01 [参考勘误表(SLAZ742A) p.15]、该方法不起作用、所以毕竟要做差分。 这与你正在使用 MSP430执行的操作相同、因为 TimerA/TimerB 没有类似 ZCOND 的机制。
不要将 ZCOND 特性与捕获一起使用。 因为 MSP430上不存在该引脚、所以您目前还未使用它。 我只提到了这一点、因为 TRM 会建议您使用它(用于周期/占空比测量)、因此您需要忽略这一点。
未经请求:您尚未描述您的应用,因此这可能与此无关:如果您想要捕获(上升+下降)两个边沿,您(很可能)需要使用两个通道进行捕获-一个用于上升边沿,另一个用于下降边沿。 你可以触发"要么"、但没有机制(我找到的)可以推断触发的边沿;在 MSP430上、你可以读取 CCI 或 PxIN 寄存器来执行此操作。
你好,布鲁斯
感谢您的意见、我提供了我的应用手册、本应用手册在 MSP430F5324中运行良好、
您能帮助我检查一下它是否可以在 MSPM0G3507中使用吗、 我的原始想法是
TA2=TIMG8
TA2CCR0=>TIMG8.cC0 //作为 cmpare
TA2CCR1=>TIMG8.CC1 // 作为捕获
TAIE=>ZERO EVENT //溢出计数
您可以在 MSPM0中使用零事件和加载事件。 不可用的函数如下:您不能让 MCU 在获取捕获事件后重新刷新计数器。 您需要将 ZCOND 和 LCOND 保持为0。
在我们的示例代码中、计数器在中断中更新。 对于应用程序、您可以在遇到捕获事件时删除计数器更新。 看到了您的 PDF、我认为您可以实现您想要的东西。
对于该错误、将在 Furture 设备中修复。 对于该器件、目前没有解决该问题的计划。