MSP430G2553 定时器捕捉的问题(高手请进)

2019-07-24 15:05发布

我想测的   :  一个频率变化的输入信号   起初为30k   然后 5k(只持续一次)   然后30k
            
再输入重新测 30k    5k   30k   。问题就出在多次输入,我想给计数器清零的时候,怎么也清不掉。
部分代码:
信号输入端开启定时捕捉中断 TA1CCTL2  |=CCIE ;

配置P2。3为捕捉模式
P2SEL |= 0x10;    //选择P2。3作为捕捉的输入端子    Timer1_A    //
TA1CCTL2  |=CM_2+SCS+CAP+CCIS_0  ;  //上升沿触发捕捉,同步模式、时能中断  CCI1A   
TA1CTL |= TASSEL1+MC_2;  //选择SMCLK时钟作为计数时钟源,不分频   增计数模式不行,必须连续计数模式

中断服务程序

  case 4:    选择中断源
    {
  
       我想在这里当我测试完 30k    5k   30k   。数据后

给计数器清零,然后下一次再进入中断,再测试到 30k    5k   30k   。

其中5k是变化的量,我要测试这个脉宽。可是每次计数器都不受我控制



DEFW(   TA1CTL            , TA1CTL_)
#define TA1CCTL0_           (0x0182u)  /* Timer1_A3 Capture/Compare Control 0 */
DEFW(   TA1CCTL0          , TA1CCTL0_)
#define TA1CCTL1_           (0x0184u)  /* Timer1_A3 Capture/Compare Control 1 */
DEFW(   TA1CCTL1          , TA1CCTL1_)
#define TA1CCTL2_           (0x0186u)  /* Timer1_A3 Capture/Compare Control 2 */
DEFW(   TA1CCTL2          , TA1CCTL2_)
#define TA1R_               (0x0190u)  /* Timer1_A3 */

这几个都我把TACLR位置位过,都不能对  time7[flag]=TA1CCR2 ;
time这个清零,TA1R,计数器一直从0到ffff    而且还有很大的负数出现,越来越晕

stm32  stm8用着库很方便到430这里,好费劲:Q
      
   
   
      }
      CCTL2 &= ~CCIFG;//清除中断标志
        
    }
     
  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
dirtwillfly
1楼-- · 2019-07-24 19:04
用习惯了库函数,就不想用寄存器操作了。
建议提供下完整的程序和要测量的波形图
dirtwillfly
2楼-- · 2019-07-24 21:23
部分msp430也有库函数的,楼主可以考虑一下
firstblood
3楼-- · 2019-07-25 02:00
P2SEL |= 0x10;    //选择P2。3作为捕捉的输入端子    Timer1_A    //
TA1CCTL2  |=CM_2+SCS+CAP+CCIS_0  ;  //上升沿触发捕捉,同步模式、时能中断  CCI1A   
TA1CTL |= TASSEL1+MC_2;  //选择SMCLK时钟作为计数时钟源,不分频   增计数模式不行,必须连续计数模式
这个关键在于相关寄存器设置的。
zhl100
4楼-- · 2019-07-25 07:16
 精彩回答 2  元偷偷看……
dirtwillfly
5楼-- · 2019-07-25 12:31
zhl100 发表于 2015-12-11 15:15
现在定时捕捉,读数都没问题。配置没问题。
问题是,我想重复操作,将上次的计数器清零,就是清不掉。
因为 ...

那个TACLR并不是清除TA1CCR2寄存器 的值,只是清除开始的计数然后重新计数
angerbird
6楼-- · 2019-07-25 14:56
定时器捕捉功能是很重要的。

一周热门 更多>