打印

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

[复制链接]
1768|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhl100|  楼主 | 2015-12-10 23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想测的   :  一个频率变化的输入信号   起初为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;//清除中断标志
        
    }
     
  

相关帖子

沙发
dirtwillfly| | 2015-12-11 07:58 | 只看该作者
用习惯了库函数,就不想用寄存器操作了。
建议提供下完整的程序和要测量的波形图

使用特权

评论回复
板凳
dirtwillfly| | 2015-12-11 07:58 | 只看该作者
部分msp430也有库函数的,楼主可以考虑一下

使用特权

评论回复
地板
firstblood| | 2015-12-11 14:06 | 只看该作者
P2SEL |= 0x10;    //选择P2。3作为捕捉的输入端子    Timer1_A    //
TA1CCTL2  |=CM_2+SCS+CAP+CCIS_0  ;  //上升沿触发捕捉,同步模式、时能中断  CCI1A   
TA1CTL |= TASSEL1+MC_2;  //选择SMCLK时钟作为计数时钟源,不分频   增计数模式不行,必须连续计数模式
这个关键在于相关寄存器设置的。

使用特权

评论回复
5
zhl100|  楼主 | 2015-12-11 15:15 | 只看该作者
本帖最后由 zhl100 于 2015-12-11 15:17 编辑

现在定时捕捉,读数都没问题。配置没问题。
问题是,我想重复操作,将上次的计数器清零,就是清不掉。
因为第一次的读数是准确的,而且我只需要第一组计数值。

这个片子做不到么MSP430G2553:Q

使用特权

评论回复
6
dirtwillfly| | 2015-12-11 20:56 | 只看该作者
zhl100 发表于 2015-12-11 15:15
现在定时捕捉,读数都没问题。配置没问题。
问题是,我想重复操作,将上次的计数器清零,就是清不掉。
因为 ...

那个TACLR并不是清除TA1CCR2寄存器 的值,只是清除开始的计数然后重新计数

使用特权

评论回复
7
angerbird| | 2015-12-12 20:26 | 只看该作者
定时器捕捉功能是很重要的。

使用特权

评论回复
8
zhl100|  楼主 | 2015-12-12 20:54 | 只看该作者
已解决:sleepy:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

787

帖子

2

粉丝