3298|3

22

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于msp430定时一秒捕获测频率 [复制链接]

定时使用32Khz的时钟,捕获使用8M的SMCLK,但是每次结果都是32K???

时钟设置

 

float count = 0.0;

 

void ClkInit()
{  
    char i;
    BCSCTL1 &= ~XT2OFF;             //打开XT2振荡器
    IFG1&=~OFIFG;                   //清除振荡错误标志
    while((IFG1&OFIFG)!=0)
    {
        for(i=0;i<0xff;i++);
        IFG1&=~OFIFG;               //清除振荡错误标志
    }
    BCSCTL2 |= SELM_2+SELS+DIVS_0;  //MCLK为8MHz,SMCLK为8MHz
}

捕获模式设置
void Init_cap(void)
{
    P1SEL  |=0x04;               //选择P1.2作为捕获的输入端子
    TACCTL1|=CM0+SCS+CCIS_0+CAP+CCIE;//上升沿触发,同步模式,使能中断
    TACTL  |=TASSEL1+ID_0;   //选择8M-SMCLK时钟
}

定时设置

void Init_timer_b(void)
{
  TBCCTL0 = CCIE;                           // CCR0 interrupt enabled
  TBCCR0 = 64000;                           //定时2秒
  TBCTL = TBSSEL_1 + MC_1;                  // ACLK, upmode
}
int main( void )
{
  //Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  ClkInit();  //初始化时钟MCLK 8MHZ,SMCLK 8MHZ
  P5DIR |= 0X60;
  P5SEL |= 0X60;
  LcdInit();
  LcdWriteString(0x80,"欢迎");
  Init_cap();
  Init_timer_b();
  _EINT();
  while(1);
}

#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
    switch(TAIV)
    {
    case 2:
      {
        count++;
        break;
      };
    case 4: 
      break;
    case 10:
      break;
    }
 
}
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
    TACCTL1 &= ~(CCIE);//关闭捕获中断
    TBCCTL0 &= ~(CCIE); //关闭定时中断
    P2DIR |= 0XFF;
    P2OUT ^= BIT0;
    count = (count/2000.0);
    fenli(count);
    LcdWriteString(0x90,"频率:");
    LcdWriteData(baiwei);
    LcdWriteData(shiwei);
    LcdWriteData(gewei);
    LcdWriteData(0x2e);  //此处显示一个.
    LcdWriteData(yiwei);
    LcdWriteData(lianwei);
    LcdWriteString(LcdReadAddr()+0x01,"KHz");
}


 

最新回复

上升沿触发为什么TACCTL1设置为CM0模式?Capture mode 0 不是 No capture mode 吗?  详情 回复 发表于 2012-8-7 17:13
 
点赞 关注

回复
举报

5015

帖子

12

TA的资源

裸片初长成(初级)

沙发
 
LZ是不是漏掉了计算频率的代码,这样还不足以看到问题啊
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 wstt 的帖子

谢谢版主啊,我找到问题了,float count = 0.0;这个会溢出只能计数65535,不过还是谢谢你哈.
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

4
 
上升沿触发为什么TACCTL1设置为CM0模式?Capture mode 0 不是 No capture mode 吗?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表