搜索
bottom↓
回复: 10

MSP430块崩溃了,求帮忙看下这个程序TIMERA1_VECTOR怎么只发生一次中断?

[复制链接]

出0入0汤圆

发表于 2008-5-12 15:28:01 | 显示全部楼层 |阅读模式
用JTAG调试,TIMERA1_VECTOR中断只发生一次,就不发生了,问题出来哪里?

#include  <msp430x20x2.h>
#include "VLO_Library.h"
#include "intrinsics.h"

unsigned int dco_delta;
unsigned long F_VLOCLK;
unsigned int TACCR0_INIT;

int main(void)
{
  WDTCTL = WDTPW +WDTHOLD;                  // Stop Watchdog Timer
  P1DIR |= 0x11;                            // P1.0,1,4 outputs
  P1SEL |= 0x10;                            // P1.4 = SMCLK

  BCSCTL3 = LFXT1S_2;                      // ACLK = VLO
  BCSCTL1 = CALBC1_8MHZ;                    // 8MHz cal value
  DCOCTL = CALDCO_8MHZ;                     // 8MHz cal value
  
  __delay_cycles(100);
  dco_delta = TI_measureVLO();              // dco delta = number of
                                            // 1MHz cycles in 8 ACLK cycles
  F_VLOCLK=8000000UL / dco_delta;            //VLO时钟频率
  TACCR0_INIT=F_VLOCLK/100-1;                 
  
  //TACCTL0 = CCIE;  
  TACCR0 = TACCR0_INIT;                    
  TACTL = TASSEL_1 + MC_1  + TAIE;    //ACLK作为时钟源,不分频,开TIMERA1中断
  P1OUT = 0x01;
  __enable_interrupt();
  
  while(1);
}

#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
if(TAIV==10)
{
  P1OUT ^= 0x01;                            // 50HZ输出??
}
}

出0入0汤圆

发表于 2008-5-12 17:32:33 | 显示全部楼层
连续增模式要重新赋初值的吧,好久没用MSP430了,不太确定。你试试看

出0入0汤圆

发表于 2008-5-12 17:35:21 | 显示全部楼层
赋值方式好像不对
TACCR0 = TAR + TACCR0_INIT;

出0入0汤圆

发表于 2008-5-12 20:17:17 | 显示全部楼层
是不是没有清interrupt flag

出0入0汤圆

发表于 2008-5-12 21:06:47 | 显示全部楼层
建议,你到利尔达的论坛去!那是430的天下,这里是AVR呀,很多人不用430的,

出0入0汤圆

发表于 2008-5-12 21:23:51 | 显示全部楼层
TACTL = TASSEL_1 + MC_1  + TAIE;    //ACLK作为时钟源,不分频,开TIMERA1中断


ACLK 时钟接没有?

出0入0汤圆

 楼主| 发表于 2008-5-12 21:47:47 | 显示全部楼层
BCSCTL3 |= LFXT1S_2;   // 内部低频震荡VLO作为ACLK时钟源


不知道问题出在哪里。
现在换TIMERA的比较中断,可以了。


  TACCTL0 = CCIE;   //打开TACCR0比较中断
  TACCR0 = TACCR0_INIT;                     
  TACTL = TASSEL_1 + MC_1;//ACLK作为时钟源,不分频

  #pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void) //TACCR0比较中断
{

  P1OUT ^= 0x01;                            // 50HZ输出??
}

出0入0汤圆

发表于 2008-5-12 21:51:38 | 显示全部楼层
==

我在网吧上查一下资料,在网吧避难中

出0入0汤圆

发表于 2008-5-12 21:54:34 | 显示全部楼层
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
if(TAIV==10)
{
  P1OUT ^= 0x01;                            // 50HZ输出??
}
}



该成
#pragma vecto = TIMERA0_VECTOR //TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
if(TAIV==10)
{
  P1OUT ^= 0x01;                            // 50HZ输出??
}
}

出0入0汤圆

发表于 2008-5-12 21:56:09 | 显示全部楼层
建议楼主,在TI公司的网站上,把所有的事例代码下下来

所有的基本模块,事例上都有软件最小系统

出0入0汤圆

 楼主| 发表于 2008-5-12 21:59:21 | 显示全部楼层
多谢楼上指点。

TCCRRO比较中断向量是 TIMERA0_VECTOR,
TIMER_A溢出中断向量是TIMERA1_VECTOR。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 20:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表