4074|9

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

TA 多中断的使用 [复制链接]

TA 有多个独立的中断

如果想同时使用他们,应该怎么设置

TACCR0 ,TACCR1,TACCR2 如果都设定好一个值后,怎么样分别读取中断向量是哪个采生中断呢

最新回复

au
谢谢!!  详情 回复 发表于 2006-5-5 00:25
 
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
TACTL = TASSEL1 + TACLR + TAIE; // SMCLK, clr. TAR, interrupt
P5DIR |= 0x02; // Set P5.1 to output direction
TACTL |= MC1; // Start Timer_a in continous
_EINT(); // Ena××e interrupts

for (;;)
{
_BIS_SR(CPUOFF); // CPU off
_NOP(); // Required only for C-spy
}
}

// Timer_A3 Interrupt Vector (TAIV) handler
interrupt [TIMERA1_VECTOR] void Timer_A(void)
{
switch( TAIV )
{
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 10: P5OUT ^= 0x02; // overflow
break;
}
}这个怎么看设置拉三个定时器呢
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
CCTL2=CCIE ;
CCR2=11 ;
TACTL|=MC0 ;
这样定义 CCR2 怎么不能进入中断呢

改成CCTL1=CCIE ;
CCR1=10 ;
就好拉,不知道为何
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
CCTL2=CCIE ;
CCR2=11 ;
TACTL|=MC0 ;
这样定义 CCR2 怎么不能进入中断呢

改成CCTL1=CCIE ;
CCR1=10 ;
就好拉,不知道为何
#pragma vector = TIMERA1_VECTOR // CC1-2
__interrupt void TimerA1(void)
{
kk=kk+1 ;

}
#pragma vector = TIMERA0_VECTOR // CC0
__interrupt void TimerA0(void)
{
k=k+1 ;
}两个中断函数都定义拉
CC1 只用一个 可以,但是只用一个 CC2不 可以
一个也进不去
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

5
 
CCTL2=CCIE ;
CCR2=9 ;
这样就可以进入拉??
但是这样CCTL1=CCIE ;
CCR1=10 ;又没有用拉

好象刚才
TAR只能到10就复位,现在到9 就复位
那么难道就不能同时使用拉
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
unsigned int k=0 ,kk=0 ;
#include<msp430x44x.h>
int main(void)
{
WDTCTL=WDTPW+WDTHOLD ;
TACTL=TASSEL0+TACLR+ TAIE;// + TAIE是 TIMERA1_VECTOR的(TAIV=10)
CCTL0=CCIE ; // CCTL0 是 TIMERA1_VECTOR
CCR0=11 ;
CCTL1=CCIE ; // (TAIV=2)
CCR1=10 ;
CCTL2=CCIE ; // (TAIV=4)
CCR2=9 ;
TACTL|=MC1 ; // 不能用增模式,否则只队CCRx值小的有作用
_EINT();
while(1)
{
_BIS_SR(LPM3);
_NOP();
}
}


#pragma vector = TIMERA1_VECTOR // CC1-2
__interrupt void TimerA1(void)
{
switch(TAIV)
{
case 2 : // CC1
{
kk=kk+1 ;
CCTL2&=~CCIFG ;
break ;
}
case 4 : kk=kk+1 ;break ; // CC2
case 10 : kk=kk+1 ;break ;
default : break ;
}
}

#pragma vector = TIMERA0_VECTOR // CC0
__interrupt void TimerA0(void)
{
k=k+1 ;
}
现在除拉益出中断不行,其他的都可以进入拉
不知道为什么不行
case 10 : kk=kk+1 ;break ;
为益处,现在就是不能记到0X0FFFF ,到11后就被复位?/
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
1、什么东西计到11?
2、“复位”?
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
我想表达的就是:
在同时使用 CCR0,CCR1,CCR2的时候要求用连续记数模式,不然若用增记数模式,则会在

CCR0,CCR1,CCR2三个中首先记数完成的时候就计数器就复位,后面的两个就没有用拉
比如:增记数模式下,CCR0=23,CCR1=35,CCR2=18,当TAR记到18的时候,TAR就又变成0,重新
开始记数,也就不会有TAR=23或者35的时候拉 ,是不是这样的????
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
1、连续计数模式:TAR计数到TACCRx,触发相应的CCIFGx。TAR计数到0xffff,再加1,重新计数到0的时候,触发TAIFG。
2、增计数模式:TAR计数到TACCRx(x>0),触发相应的CCIFGx;TAR计数到TACCR0,触发CCIFG0(即要求TACCR0>TACCRx,x>0);TAR 再加1,重新计数到0的时候,触发TAIFG。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
谢谢!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表