6639|12

121

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

关于用CCR1定时 [复制链接]

/*******************************************
函数名称:Init_TimerA
功    能:初始化定时器A
参    数:无
返回值  :无
调用模块:main
********************************************/
void Init_TimerA()
{
   //============比较功能===============
 TACTL |= TASSEL_1 + ID_0;   //时钟选择,时钟分频
 TACTL |= MC_1 + TACLR;  //计数模式选择,清TAR
 CCR1 = 16384;    //设定中断间隔
 CCTL1 |= CCIE;    //CCR0中断允许
 _EINT();     //中断允许 
}

 

/*******************************************
函数名称:Timer_A1
功    能:定时器A CCRx(x=1,2)中断服务程序  
参    数:无
返回值  :无
********************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
  
}

 

按理说应该0.5s进一次中断的,可怎么试都不行,求大虾???

最新回复

3s?唤醒几个微秒啊  详情 回复 发表于 2012-4-25 20:23
 
点赞 关注

回复
举报

77

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

    好烦人呀!为了解决你这个问题,我搞了半个小时,才找到问题出在哪里!

   主要是CCR1这点儿的问题,应该用CCR0的,为什么呢?结论:

CCRx是捕获/比较寄存器
用做捕获时:捕获的同时TAR的值会传给CCRx,用来测算周期是很好的方法,一般捕获用法时无须设置参数。
用作比较时:CCR0一般用来设置输出电平的转换时机,就是TAR计数到CCR0时输出电平发生相应的变化(输出方式可以设置);也可以将CCR0设置为最大值,此时CCRx(x:1或2)用来设置输出电平转换的时机,即TAR计数到CCRx时输出电平转换,计数到CCR0时重新开始计数。
修改一下程序,再试试吧,应该没问题的!
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 whgwuhan 的帖子

分析精辟!
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
寄存器太多,一时半会记不住
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 楼主 5xue 的帖子

对,该是CCR0=16384
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(中级)

6
 

回复 沙发 whgwuhan 的帖子

首先,谢谢您的剖析。
但是我看过很多资料,上面都提到可以用定时器设置多个定时时间呢,我就是这点搞不懂哦。
呵呵,再次您的回答感谢
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

7
 
ccr0的优先级最高,和其它的CCR1和CCR2处理不是一样的!
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

8
 
这个单片机的定时器设计的丑陋!
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

9
 
在中断服务程序中加中断标志检测的,(TAIV)case 2:为CCR1的!
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

10
 
我觉得是不是因为没有访问TAIV,也没有软件清除中断标志??
 
 
 

回复

977

帖子

4

TA的资源

纯净的硅(中级)

11
 
 在msp430x44x.h文件里,这句话起什么作用?FLL_CTL0 |= XCAP14PF;其具体含义是配置电容为10pF,为什么要配置电容?
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

12
 

回复 沙发 whgwuhan 的帖子

{
  WDTCTL = WDTPW + WDTHOLD;
  TACTL=TASSEL_1+TACLR;
  CCTL0=CCIE;
  TACCR0=32768;
  TACTL|=MC_1+TACLR;
  _EINT();
  P1DIR|=BIT6;
  P1OUT&=~BIT6;
  //_BIS_SR(LPM3_bits+GIE);
  while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void aa(void)
{
  P1OUT^=BIT6;
}
大神再帮我看看,我用的是g2231,32768晶振,按理说应该是亮一秒,暗一秒,但是感觉都快亮3秒了,肿么回事啊???
 
 
 

回复

248

帖子

0

TA的资源

纯净的硅(初级)

13
 
3s?唤醒几个微秒啊
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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