MSP430TB 实战:精确捕获PWM脉冲宽度问题与解决

需积分: 14 5 下载量 51 浏览量 更新于2024-09-14 收藏 111KB PDF 举报
本篇文章主要介绍了在MSP430单片机平台(如MSP430F149)上利用定时器捕获脉冲宽度调制(PWM)波的实战经验。作者试图通过定时器器TBCCRO(TB Capture Compare Register 0)实现对低电平脉宽的精确测量。初始计划是设置TBCCRO为下降沿触发捕获,一旦捕获到下降沿,就将其改为上升沿触发,并清零定时器以重新开始计数。如果捕获不到上升沿,记录当前TBCCRO值即为低电平宽度。 然而,作者在实际操作中遇到问题,首先是在没有正确配置晶振的情况下,程序运行不稳定,导致捕获宽度忽大忽小。经过师兄的提醒,作者发现未开启用于提供更高频率源的8M晶振,这个问题通过固定晶振连接解决了。但是,在配置XT2振荡器后,程序被卡在延时循环中,原因在于一个硬件故障——8M晶振的一个引脚松动。修复后,程序得以继续运行。 尽管解决了延时问题,新的问题是采集到的宽度数据始终在14500附近波动,换算成时间约为1.8125ms,这与预期的10ms低电平持续时间不符。这意味着在硬件配置和软件算法之间可能存在误差或计数精度问题。为解决这个问题,作者可能需要检查定时器设置、中断处理以及计数算法,确保捕获过程的准确性和稳定性,可能需要调整计数周期或者优化算法以适应实际的PWM波形。 本文重点讲述了在MSP430单片机上使用TBCCRO捕获PWM波脉冲宽度时遇到的问题,包括晶振配置、程序稳定性和精度调整。通过这个实战案例,读者可以了解到在实际开发中如何处理硬件与软件交互的问题,以及如何调试和优化代码以达到预期的测量效果。