3733|7

106

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

用1M的DCO时钟通过TIMER A产生1秒左右的中断,为何用CCR0能成功,用CCR1就不行了呢? [复制链接]

本帖最后由 helloxieyu 于 2015-4-10 16:05 编辑

//下面是TIMERA连续计数方式产生中断的例子,
//TACCTL0 |=CCIE; //开启CCR0中断,将进入TIMER0_A0_VECTOR中断向量,示波器测量P1.1管脚输出,周期为1秒左右
//TACCTL1 |=CCIE; //开启CCR1中断,将进入TIMER0_A1_VECTOR中断向量,示波器测量P1.1管脚输出,周期为33.5K秒左右  
//问题:为什么同一个时钟配置方式,产生的中断频率会不一样呢?

int main( void )
{
        WDTCTL = WDTPW +WDTHOLD;
         
    BCSCTL1 = CALBC1_1MHZ;
    DCOCTL  = CALDCO_1MHZ;
     
    P1REN|=BIT1;
    P1DIR|=BIT1;
      
    BCSCTL2 = DIVS0;  //SMCLK除2     
    TA0CTL=TASSEL1+MC1+ TACLR+ID0+ID1; //选择SMCLK进来后再8分频,连续计数模式,
//  TACCTL0 |=CCIE;  //开启CCR0中断,将进入TIMER0_A0_VECTOR中断向量,示波器测量P1.1管脚输出,周期为1秒左右
    TACCTL1 |=CCIE;  //开启CCR1中断,将进入TIMER0_A1_VECTOR中断向量,示波器测量P1.1管脚输出,周期为33.5K秒左右  


    _EINT();                                             //使能中断,开始记录......
    while(1)
    {                     
           _BIS_SR(LPM1_bits+GIE);          //进入LPM1                                                
    }
   
    return 0;
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0_ISR(void)   
{
                P1OUT=(~P1OUT);
}   

#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A1_ISR(void)   
{
                P1OUT=(~P1OUT);
}   

最新回复

楼主、我最近也遇到这个问题,为什么CCR1进不去中断,能帮我解释下吗?  详情 回复 发表于 2015-11-22 17:15
 
点赞 关注

回复
举报

1193

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
这个问题有点意思,刚刚用launchpad简单试了一下,确实如此。

不过现在没空,回家再慢慢分析原因。

初步判断肯定是什么地方理解得不当或者配置不正确造成的。

建议先自己仔细看看User's Guide文件关于定时器这一节的描述,估计会有所收获的。
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
TA0CTL=TASSEL1+MC1+ TACLR+ID0+ID1; //选择SMCLK进来后再8分频,连续计数模式,

关键应该在这句
我翻译一下:
TASSEL1——ACLK
MC1——The timer repeatedly counts from zero to the value of TACCR0.
TACLR——Timer_A clear. Setting this bit resets TAR, the clock divider, and the count direction. The TACLR bit is automatically reset and is always read as zero.
ID0+ID1——=ID1,2分频

感觉你需要的应该是
TA0CTL=TASSEL2+MC2+ TACLR+ID3; //选择SMCLK进来后再8分频,连续计数模式,


于是乎,你的程序貌似完全错了。你的单片机工作在ACLK下,也就是33k的时钟频率下(32768低速晶振或者VLO),并且定时器工作在UP模式,在该模式下中断向量TIMER0_A1_VECTOR貌似是不生效的,但不知道你为何强行使能了这一中断,于是每个时钟周期都进入中断一次,将IO翻转来。

如果你使用TIMER0_A0_VECTOR这一中断向量,那么定时器从0开始计数,至TACCR0后触发中断翻转IO,同时计数器清零。但是,貌似你在程序里没有配置TACCR0的值,所以定时周期才会那么怪异,估计是直接0xffff了,周期大概2秒。
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

4
 
我这以G2系列为例子查阅的资料。
参考文档:查看详情
定时器A部分页码355-373
可以查看对应中文版本文档。

如果使用的MCU不是本系列,请查阅对应MCU的User's Guide文档。
 
 
 

回复

106

帖子

0

TA的资源

一粒金砂(中级)

5
 
首先要感谢“qiushenghua”大大对我的帮助,您已经不止一次不厌其烦的帮我分析解决问题了,谢谢。
============================================================
1. 在代码里的TASSEL1的值是0x0200即bit9位等于1,即选择的是SMCLK,这个是没有问题的。
2. 在代码里的ID0+ID1=0x0040+0x0080,即bit6与bit7位都是1,即输入时钟为8分频,这个也是没有问题的。
3. 我上面的代码如果改成:
    TACCTL0 |=CCIE; //开启CCR0中断,将进入TIMER0_A0_VECTOR中断向量,
    //TACCTL1 |=CCIE;  
   这样是完全正常的,示波器测量P1.1管脚输出,周期为1秒左右;
4. 这就足以证明我上面的1,2点是对时钟的选择即分频的选择是完全正确的了。

点评

确实是我搞错了,ID0+ID1和ID_3其实是相等的,你用的是寄存器的写法,我用的是赋值的写法。很久没用430写东西,语法都快忘记了,以为用的是枚举变量,实际上配置的是寄存器地址。 [/backcolor] [/backcolo  详情 回复 发表于 2015-4-11 20:16
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

6
 
helloxieyu 发表于 2015-4-11 11:07
首先要感谢“qiushenghua”大大对我的帮助,您已经不止一次不厌其烦的帮我分析解决问题了,谢谢。
============================================================
1. 在代码里的TASSEL1的值是0x0200即bit9位等于1,即选择的是SMCLK,这个是没有问题的。
2. 在代码里的ID0+ID1=0x0040+0x0080,即bit6与bit7位都是1,即输入时钟为8分频,这个也是没有问题的。
3. 我上面的代码如果改成:
    TACCTL0 |=CCIE; //开启CCR0中断,将进入TIMER0_A0_VECTOR中断向量,
    //TACCTL1 |=CCIE;  
   这样是完全正常的,示波器测量P1.1管脚输出,周期为1秒左右;
4. 这就足以证明我上面的1,2点是对时钟的选择即分频的选择是完全正确的了。

确实是我搞错了,ID0+ID1和ID_3其实是相等的,你用的是寄存器的写法,我用的是赋值的写法。很久没用430写东西,语法都快忘记了,以为用的是枚举变量,实际上配置的是寄存器地址。






 
 
 

回复

106

帖子

0

TA的资源

一粒金砂(中级)

7
 
再顶一下,就这几句代码,有没有大大可以帮我验证一下啊?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼主、我最近也遇到这个问题,为什么CCR1进不去中断,能帮我解释下吗?
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表