MSP430技术论坛
直播中

bbd_1234

1年用户 3经验值
私信 关注
[问答]

430G2553捕捉功能采集信号脉宽怎么做?

``下面是写的程序,但感觉采样的数据不对,请各位大神帮助一下`
WDTCTL = WDTPW + WDTHOLD;

if ((CALBC1_1MHZ == 0xFF) || (CALDCO_1MHZ == 0xFF)) { /G2553自检,如果FLASH区被串改过或损坏,则程序不停复位/
while(1); /内部DCO自校准/
}

BCSCTL1 = CALBC1_1MHZ; /基础时钟校准/
DCOCTL = CALDCO_1MHZ; /内部振荡时钟源校准/

Init_uart();
Init_gpio();

TA1CTL = TASSEL_2 + ID_3 + MC_2 + TAIE + TACLR; /SMCKL,开中断,增计数模式/
TA1CCTL1 = CAP + CM_3 + CCIS_0 + SCS + CCIE;

#pragma vector=TIMER1_A1_VECTOR
__interrupt void Timer_A1(void)
{
// uint8_t x = 0;

if(TA1CCTL1 & CM_2){
    TA1CCTL1 = (TA1CCTL1 & (~CM_2)) | CM_1;
    start = TA1CCR1;
    overflow = 0;
}
else if(TA1CCTL1 & CM_1){
    TA1CCTL1 = (TA1CCTL1 & (~CM_1)) | CM_2;
    middle = TA1CCR1;
    overflow = 0;
}

回帖(1)

笑尽往事

2024-5-11 17:35:37
从您提供的代码片段来看,您正在使用430G2553微控制器进行信号脉宽的采集。您的代码主要完成了以下操作:

1. 检查WDTCTL寄存器,确保看门狗定时器处于停止状态。
2. 检查CALBC1_1MHZ和CALDCO_1MHZ寄存器,确保内部DCO自校准正常。
3. 设置BCSCTL1和DCOCTL寄存器,进行基础时钟和内部振荡时钟源校准。
4. 初始化串口和GPIO。
5. 配置定时器TA1,设置为增计数模式,采样信号脉宽。

然而,您提到采样的数据可能不正确。为了解决这个问题,我们需要检查以下几个方面:

1. 确保您的硬件连接正确,包括信号输入、地线和电源线。
2. 检查您的信号源是否稳定,脉宽是否符合预期。
3. 检查定时器TA1的配置是否正确。您当前的配置是:

   ```
   TA1CTL = TASSEL_2 + ID_3 + MC_2 + TAIE + TACLR;
   ```

   这将定时器设置为使用SMCLK作为时钟源,分频系数为8,增计数模式,并清除当前值。确保这些设置与您的硬件和需求相匹配。

4. 检查TA1CCTL1的配置,您当前的配置是:

   ```
   TA1CCTL1 = CAP + CM_3 + CCIS_0 + SCS + CCIE;
   ```

   这将TA1的通道1设置为捕获模式,比较模式为比较脉冲宽度,使用模块0的时钟,同步捕获源,以及启用捕获中断。确保这些设置与您的硬件和需求相匹配。

5. 在中断服务程序中,确保您正确地读取了捕获值,并根据实际需求进行了处理。

如果以上检查都没有问题,但仍然无法获得正确的采样数据,您可能需要进一步调试您的程序,或者查看430G2553的数据手册,以获取更多关于定时器和捕获模块的信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分