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

MSP430F149 TimerA的捕获程序

我把MSP430的P1.2引脚作为方波的输入频率10Hz,但为什么一接到信号发生器上,就工作不正常,以下是程序:

#include <msp430x14x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= ~XT2OFF; do
{
IFG1 &= ~OFIFG; for (unsigned int i = 0xFF; i > 0; i–); }
while ((IFG1 & OFIFG)); BCSCTL2 |= SELM_2 + SELS + DIVS_3;

P1DIR &= ~BIT2; P1SEL = BIT2;
P2DIR = BIT0; //控制LED灯,高电平灯灭 P2OUT = 0XFF; //灯灭 CCTL1 = CM_1 + SCS + CCIS_0 + CAP + CCIE; TACTL = TASSEL_2 + MC_2 + ID_3; _BIS_SR(GIE);
while(1);
}

#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{ if(TAIV == 0X02) P2OUT ^= BIT0;         //让灯交替亮灭
}

当程序下载到MCU时,灯在很快的闪,而且无论怎么调整输入的方波频率,灯都以那个频率在闪。当不接输入时,灯就不闪了。而且,在不接输入时,在P1.2口接一条杜邦线,杜邦线不连接其他设备,灯也会闪

gaoyang9992006:

你这个是MSP430的帖子啊,貌似有这个版块,你怎么发的

gaoyang9992006:

你先说明白,你想让程序干什么?这样我才能知道你要干嘛,你的程序干了嘛。你才知道为何没有干嘛。

gaoyang9992006:

根据你最后一句和你的程序,你需要启动REN上拉电阻,然后就不干扰了,目前接个电线都不停的被外界干扰,那是天线效应,赶紧的,启动上拉电阻,记得REN。

Jianhua Wu:

回复 gaoyang9992006:

谢谢,加一个电阻可以了,但有时候还是会出现一些不稳定,就是灯闪着闪着就不闪了

Jianhua Wu:

回复 Jianhua Wu:

在这段程序中

#pragma vector = PORT1_VECTOR      //P1口中断程序__interrupt void Port_1(void){  a = P1IFG;  P1IFG = 0X00;  if(capture_times == 0)           //如果是第一次捕获到上升沿  {    CCTL0 |= CCIE;                       //打开定时器CCR0的定时功能    capture_times++;  }  if(capture_times == 1)         //如果是第二次捕获到上升沿  {    CCTL0 &= ~CCIE;               //关闭定时器CCR0的定时功能    capture_times = 0;              //清除捕获次数    capture_end = 1;                 //捕获完成标志置位  }}

 

用两个if是很大的BUG

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F149 TimerA的捕获程序
分享到: 更多 (0)