Other Parts Discussed in Thread: C2000WARE
主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
大家好、
我想捕获输入正弦的频率以同步输出频率。
因此、我使用 CMPSS 模块来获取频率。 我使用了以下模块、如下所述:
在 CMPIN1P、我插入输入正弦波。 DACHVALS 设置为输入正弦波 Vpp 的一半。 比较器的结果会将输出 CTRIPH 异步置位。
信号 CTRIPH 通过 ePWM X-Bar 到达 PWM 模块。
信号通过 TRIPIN4向事件过滤发送事件 A QUAL。
在这里、我想使用 CNTVAL 捕获2个边沿之间的时间。 该值应复制到 TBPRD 寄存器。 我尝试在计时图表中显示问题:
直到 DCAEVT1、一切都像我预期的那样正常工作。 DCAEVT1持续10ms (输入正弦20ms 的半正弦周期)。 我想对 DCAEVT1为同步输出 PWM 与输入频率的时间进行计数。 PWM 模块使用 upcount_downcount_mode。
我尝试使用边沿捕获逻辑捕获这段时间。 使用 SW 触发器、我应该能够使用 DCAEVT 的下一个边沿开始测量。 然后计数器开始计数、直至下一个边沿计数。 当我读取寄存器 VCNTVAL 时、它为零。 因此它不成功。
我的 TBCLK 配置为200MHz。 这意味着计数器每5ns 增加一次该值。 随着时间增加10ms (DCAEVT1)、计数值将为2000000。 但计时器仅为16位(65535是最大值)。 当我将 TBCLK 更改为较低频率时、我在生成输出 PWM 时会失去精度。
很抱歉、描述错误、我希望 有解决此问题的办法吗?
此致、
Martin



