TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F5438A: 关于脉冲周期采集及边沿计数

Part Number:MSP430F5438A

我需要采集15路脉冲信号的周期并计算每路脉冲的上升沿个数

所以我在430产品线中选择了5438A

刚好有15路捕获

以timerA0为例 可以捕获5路脉冲信号

不过CCR0是有独立的中断的,CCR1至CCR4是公用一个中断信号的

timerA1情况类似,CCR0有独立中断,CCR1到CCR2公用一个中断信号

timerB也是这样的,CCR0有独立中断,CCR1到CCR6公用一个中断信号

各个timer的时钟都是用的XT2高速时钟分频得到(做32分频),目前XT2是配置了一颗16MHz的晶体,

我要采集的信号周期最小为5mS左右,测试时我将5mS周期的PWM波同时连接到15路捕获输入引脚 没有让430进入低功耗模式 这是我测试的结果

可以看到,脉冲计数通道间有一些差异

当然,我的这个测试有些极端,一路5mS的PWM同时连接到了15路捕获输入引脚,实际的信号源边沿是有先后的

问题1.既然存在公用中断信号,而且3个timer的中断优先级也有高低,那是不是一定会存在丢脉冲边沿的情况呢?

问题2.如果提高XT2的主频为24MHz,使用高精度、低温漂的有源晶振,并且主时钟、子时钟均使用这个24MHz的时钟,各timer的计数时钟由子时钟分频得到,检测时丢脉冲边沿的情况会有改善吗?

提高主频,目的是想减小处理器中断函数处理的时间;采用有源晶振替代目前的晶体是想提高时钟精度

问题3.因为数据要通过串口传出去,这样在引入串口发送中断的话,检测时丢脉冲的边沿的可能性是不是会加大

Katherine Wang:

已将您的问题升级到E2E英文论坛,一旦得到回复会立刻回复给您

,

Katherine Wang:

捕获的值将保留在 CCR 中,直到下一次捕获,因此这里的风险是溢出。如果 ISR 执行总时间(包括 UART 中断)超过脉冲周期(在本例中为 2492 个定时器tick),您可能会丢失捕获。症状类似于您在 TA1CCR0 上看到的 2x 增量时间。

奇特的是,即使在单个定时器内,甚至更甚,实际捕获值也不同,因为增量时间不会改变。您的线有多长?您能看到传播延迟吗?

,

Katherine Wang:

以上回复已经回答了您的第一个问题,但重申一下,保持 ISR 较短会减少脉冲边沿丢失数量。

对于问题 2,增加主时钟的频率将有助于您的检测,提高时钟精度可以提高计时精度。

对于问题 3,使用传输数据的串行端口发送中断可能会导致您丢失脉冲边沿,这可以通过保持 ISR 简短来减少。我还建议使用优先级低于您定时器的 UART 中断。如果您确实丢失了几个脉冲边沿,请考虑对 UART 中断使用轮询方法。

,

user78960159:

您好 感谢帮助

“我还建议使用优先级低于您定时器的 UART 中断。如果您确实丢失了几个脉冲边沿,请考虑对 UART 中断使用轮询方法”

这点确实是个很好的建议,我之前没有想到这点,好在我现在用的是USCI_A3中断,其优先级低于各timer中断

后面电路调整好后我会将测试结果进一步更新到这个帖子里

,

Katherine Wang:

感谢您的提问

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5438A: 关于脉冲周期采集及边沿计数
分享到: 更多 (0)