msp430定时器捕获中断无法进入。。。

int main( void )
{

WDTCTL = WDTPW + WDTHOLD;
TACTL= TASSEL_1 + TACLR + TAIE + MC_2;
TACCTL2 = CM_1 + CCIS_1 + CAP + CCIE + SCS;
_EINT();
while(i<2);
m = t[1] - t[0] ;
ch_disp(m,3,1);
}

#pragma vector = TIMERA1_VECTOR
__interrupt void timerA(void)
{
t[i] = TACCR2;
i++;
}
我想要测P1.2口输入的方波的周期,但是不知道P1.2口怎么设置,也不知道如何设置Timer_A,请高手指点。。。谢谢~~~

我刚看错了
你要测P1.2的周期,我感觉应该把P1.2口设置成中断,上升沿或者下降沿中断,在P1.2口中断中设置一个计数常数初值为0,当第一次进中断的时候设置定时器开始计时,然后判断计数常数是否等于你要求的值,不等于则加一,等于则停止定时器,这时定时器的定时时间除以计数常数就是周期了(你可以把计数常数设置成10,100,1000...)这样方便计算。知道怎么做吧
至于你说定时器无法进中断我就不晓得是不是没开全局中断还是怎么的,下面是我临时编的一个程序,定时器定时是0.01S,当然了我用的晶振是11.0592MHz的,你可以根据不同的晶振算出定时时间,最后的周期就是T_timex0.01/100,你试试看,不懂得再问吧
#include "msp430x44x.h"
unsigned char T_count=0; //周期计数常数
unsigned char T_time=0; //定时时间常数
unsigned char Flag=0; //测试周期完成标志
void Time_1(void);//定时器time_3初始化
void P1.2_Init(void);//端口函数初始化
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1.2_Init();
_EINT();
}
void Time_1(void)//定时器time_3初始化
{
TA0CCR0=0X21C0;// 定时常数
TA0CTL = TASSEL_2+ID_3 + MC_1;//时钟选择SMCLK;8分频;增模式;
TA0CCTL0 = CCIE;//中断允许
}
void P1.2_Init(void)//端口函数初始化
{
P1SEL&=~+BIT2;//设置P1.2端口为I/O端口
P1DIR&=~BIT2;//设置P1.2端口为输入口
P1IES|=BIT2;//设置P1.2端口下降沿中断
P1IE|=BIT2;//打开P1.2端口中断
}
#if __VER__<200
//interrupt [PORT1_VECTOR] void P.12_interrupt(void)
#else
#pragma vector=PORT1_VECTOR
__interrupt void P1.2_interrupt(void)
#endif
{
if(T_Count==0)
Time_1();//如果计时常数等于0,开始定时
else if(T_Count==100)
{
TA0CTL| = MC_0;//停止计时
Flag=1;//周期测试完毕标志
}
else
T_Count++;//否则计时常数加一
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
if(Flag!=0)//如果周期没有测试完,则时间继续增加
{
Time_1();
T_time++;
}
else//周期测试完成,停止计数器
{
TA0CTL =MC_0;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-04
#include "msp430x44x.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
uint PervCapVal;
uint TA_OverflowCnt;
ulong Period;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP18PF;
P1DIR &=~ BIT2;
P1SEL |= BIT2;
TACTL = TASSEL_2 + MC_2 + TAIE + TACLR;
TACCTL1 = CAP +CM_1 + CCIS_1 + SCS + CCIE;
BTCTL = 0;
_EINT();
}

#pragma vector=TIMERA1_VECTOR
__interrupt void TA_ISR(void)
{
switch(TAIV)
{
case 2:Period=TA_OverflowCnt*65535+TACCR2-PervCapVal;
PervCapVal=TACCR1;
TA_OverflowCnt=0;
break;

case 4:break;

case 10:TA_OverflowCnt++;
break;
}
}
编译通过,设置应该没问题。
写注释太麻烦,照着书看看吧。
第2个回答  2010-08-04
好乱啊
http://focus.ti.com.cn/cn/mcu/docs/mcuprodcodeexamples.tsp?sectionId=96&tabId=1468
可以去TI的这网址,下各种MSP430类型单片机的例子参考下
第3个回答  2010-08-04
别急,一会儿来回答你的问题

MSP430 这个程序为什么不能进入中断 ,QQ370704851
程序没错,应是可以进中断,你可能用的IAR软件仿真。IAR软件仿真,若要用定时A中断,需设置simulator\\interrupt setup...,添加定时A中断。

用IAR 编译msp430 单片机,中断一直无法通过怎么回事
并且对于芯片msp430g2553来说,io430.h中包含io430g2553.h文件

MSP430程序设计 定时器中断问题,下面的程序想在定时1S时候通过串口发送...
可能是串口设置不对

MSP430单片机定时器工作在捕获模式下,计数模式只能用连续计数模式? 而...
就以定时器A来举例,TImerA一共有两个中断向量,一个单独分配给CCR0,另一个作为公用的中断向量用于定时器和另外两个捕获比寄存器。CCR0具有最高的中断优先级,因为CCR0能用于定义增计数模式和增减计数模式的周期。CCR1和CCR2以及定时器共用另一个中断向量。捕获比较寄存器设置很灵活的,建议多看看430定...

MSP430的CCRx中断在连续计数模式下怎么产生中断的
首先,如果你只是用连续计数模式,哪么CCTLx(比较捕获寄存器)根本可以不设置,其次,CCR0的初值没有设置,中断只会在定时器溢出时才能发生。然后,第二个中断,你是想用CCR1,CCR2吧,,也是因为你没设置初值,TAIV的值只会是10,也就是溢出中断产生才会进中断。case中的2,4是计数值到CCR1,2而...

关于msp430单片机中定时器A的捕获模式寄存器的解读?
EQUx是【比较相等信号】,其中X的取值为0,1,2。EQUx是当比较\/捕获器CCRx中的值和计数器TAR的值相等的时候产生的。产生了EQUx才能引起中断信号等动作。SCCI是【同步比较\/捕获输入】,它用在捕获模式下,SCCI中的内容实际上就是CCI位的内容,也就是触发捕获信号的引脚上的电平。但是SCCI比CCI更加“...

求教关于单片机下降沿捕获的问题
然后就跳进一个中断,如果你要测频的话就记录下此刻的CCR值,挑出中断,随后在下一个触发信号到来时再记录一次CCR的值,两次数据之差就是再除以定时器时钟频率就得到了被测信号一个方波的时间了。3.关于特殊引脚,就是一个复用的脚,可以作为一般IO口,也可以作为捕获信号入口,就像msp430F449中P2.0...

msp430如何让定时器计数器重新开始计数。使它重复不断的产生中断
1、你的GIE没开,也许压根没产生过中断。2、也许你开GIE了。TI_CC_LED1在异或下能亮,说明你的LED1的控制位应该是0吧?既下拉点亮LED1,但你要知道0^0永远都是0,你的LED1永远也都是亮着的。3、你打算LED2闪烁,可你用或语句它只能保持一个状态(恰恰这个状态是1吧?LED2就这么灭着不亮)...

在msp430f135单片机中定时器中中断过多是不是会影响程序的执行准确率...
如果是抢先式,则可能出现高级中断总能得到执行,低级中断老是轮不到执行 如果是时间片轮转的,则大家轮流坐庄,都能得到执行,但整个系统时钟慢了(在单片机和台式机CPU都能得到验证)不论什么单片机、DSP还是NP或台式机CPU都不例外 这与保护现场无关(那是必备的次序)...

msp430编程定时器B的中断
只要选择AD是由TA触发采样,然后把TA设置成PWM输出模式,当然输出PWM波的都是特殊功能脚,但是在这里它是不需要输出的,所以引脚设置不必理会。值得关心的就是PWM的频率,也就是你AD的采样率。3.看门狗复位 看门狗有2种工作模式:定时器 ,看门狗 定时器工作模式下WDTIFG在响应中断服务程序有标志位自动...

相似回答
大家正在搜