关于TA的端口捕获方面的问题

2019-07-31 16:06发布

我用的是430的fe427芯片,现在碰到的问题是我进入了捕获中断,用到的是TACCR0,但是CCR0里面却没有捕获的数据,即我每次在线调试的时候,我能进入捕获中断,但是CCR0里面的值却一直为0,求指点。下附相关的程序:
这个是寄存器的设置。
void Init_TimerA1_BH(void)//定时器A捕获的初始化
{
  TACTL   = TASSEL_1 + MC_1 + ID_2;                   // Continous up  ACLK/4, 为了测100mHZ
  TACCTL0 = CM_1 + CCIS_0 + SCS + CAP + CCIE;         // Capture mode: 1 - pos. edge, 3 - both edge; PSLIN0 输入   
  P1SEL  |= BIT0 ;
}


这个是我的TA捕获中断和程序。
#pragma vector = TIMERA0_VECTOR         //端口中断,TA0  P1.0  zzg
__interrupt void Timer_A (void)
{
  temp=10;
  new_cap = TACCR0;             //将中断时TACCR0 值装入new_ cap  
  cap_diff = new_cap -  old_cap;          // 差异值=新值-旧值
  diff_array[index] = cap_diff;                 // 向差异数组写入差异值
  capture_array[index++] = new_cap;        // 向捕获数组写入捕获值
  if (index >= 32)                // 数组是否已满?(1 - 32)
  {  
    index = 0;                // 清索引变量
  }  
  old_cap = new_cap;                            //存储捕获新值
//  count ++;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
zijingzelan001
2019-07-31 23:44
dirtwillfly 发表于 2014-12-12 21:35
只看程序没看出什么问题。
有没有可能是这样:定时器刚一启动,就遇到了要捕获的信号,所以TACCR0内的数值 ...

谢谢你,非常不好意思,回的晚了,这个是捕获中断,捕获到了信号才能中断,我在线调试的时候,是可以进入中断的,我断点设置在TACCR0赋值给new_cap 这里,可以进入,只不过每次都是0,我想你说的有可能,捕获太快,导致没计数就进去了,我去实时看。话说我是不是给这个捕获来个时间控制,隔200ms去执行一次?

一周热门 更多>