4943|7

24

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

(有贴代码)msp430g2553怎么实现两个捕获口来求时间差 [复制链接]

下面的代码求指导,或者有哪位大神会msp430g2553实现两个捕获口来求时间差,求帮助~

#include
#include "12864ser.h"
//#include "math.h"

unsigned int capture0_value = 0;
unsigned int capture1_value = 0;
float diff_time_value = 0;
float diff_distance = 0;
unsigned char flag_cnt = 0;

void main()
{
  unsigned char s1[] ={"声音定位系统"};
  unsigned char s2[] ={"X 轴:"};
  unsigned char s3[] ={"Y 轴:"};
  WDTCTL = WDTPW + WDTHOLD;          //stop watching dog
  BCSCTL1 = CALBC1_16MHZ;  //设定cpu
  DCOCTL = CALDCO_16MHZ;   //配置DCOCLK产生16M时钟
  BCSCTL2 |= SELM_1 + DIVM_0 + DIVS_0;  //主时钟MCLK选择DCOCLK,不分频.子时钟SMCLK选择DCOCLK,不分频

  P2DIR |= BIT3 + BIT4;       //开输出
  P1DIR &= ~(BIT1 + BIT2 + BIT6 + BIT7);   //four input p1.4~p1.7
  P1SEL |= BIT1 + BIT2;


  TACTL = TASSEL_2 + TACLR + MC_1; //SMCLK,up mode
  //capture 0
  TACCTL0 = CCIE + CM_2 + CCIS_0 + CAP + SCS ;    //neg. edge,enabled interrupt,CCIxA,capture mode,            
  //capture 1
  TACCTL1 = CCIE + CM_2 + CCIS_0 + CAP + SCS ;    //neg. edge,enabled interrupt,CCIxA,capture mode,            
  TACCR0 = 16;
  TACCR1 = 16;

  _BIS_SR(GIE);                 // Enter LPM0 w/ interrupt

  init_lcd();             //初始化
  delay_ms(10);

      //  wr_string(uchar x,uchar y0,uchar *p);
    wr_string(1,0,s1);   //第二个参数是行号
    delay_ms(1000);
    wr_string(0,1,s2);
    delay_ms(1000);
    wr_string(0,2,s3);
    delay_ms(1000);
    wr_float(3,1,123.564);
    delay_ms(1000);
    wr_float(3,2,169.2145);
    delay_ms(1000);

  while (1)
  {
    if (flag_cnt == 2)
    {
      flag_cnt = 0;          //clear flag
      if(capture0_value - capture1_value <= 0)
        diff_time_value = capture1_value - capture0_value;
      else
        diff_time_value = capture0_value - capture1_value;
      diff_distance = diff_time_value *340 * 1.087 / 1000;    //uints:mm
    }
  }
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0 (void)
{
  switch (TAIV)
  {
  case 0x02:
    capture1_value = TACCR1;
    flag_cnt++;
  case 0x04:break;   //capture 2
  case 0x0a:break;
  }
}

#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A1 (void)
{
  capture0_value = TACCR0;
  flag_cnt++;
}

最新回复

TA是TimerA的缩写啦  详情 回复 发表于 2012-9-7 09:28
 
点赞 关注

回复
举报

327

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
修改一下:在TIMER0_A0_VECTOR中读CCR0,在TIMER0_A1_VECTOR中读CCR1或者CCR2。
另外建议:flag_cnt 声明前加volatile修饰保证多线程之间的可见性。

点评

恩。。看了你的贴子,知道了在TIMER0_A0_VECTOR中读CCR0,在TIMER0_A1_VECTOR中读CCR1或者CCR2,非常感谢。我是想用三个捕获口来捕获三个声音接收器的脉冲,然后根据它们三个的时间差来算出发声的坐标。你看,我这还  详情 回复 发表于 2012-8-6 10:43
 
个人签名Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
 

回复

327

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
补充一下,TAIV是在TIMER0_A1_VECTOR中才有的。

点评

恩。。我修改那个中断矢量后,就可以用TAIV  详情 回复 发表于 2012-8-6 10:44
 
个人签名Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 elulis 的帖子

恩。。看了你的贴子,知道了在TIMER0_A0_VECTOR中读CCR0,在TIMER0_A1_VECTOR中读CCR1或者CCR2,非常感谢。我是想用三个捕获口来捕获三个声音接收器的脉冲,然后根据它们三个的时间差来算出发声的坐标。你看,我这还有叙问题吗?对了,还用就是CCR2的捕获输入源是那个I/O口,我在datasheet里没看到~

点评

哇!是激光灭蚊器嘛~很先进的样子~ 的确没有看到TA0.2的引脚……如果P2.4或者P2.5中有空闲的引脚试试TA1.2吧。  详情 回复 发表于 2012-8-6 10:50
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 板凳 elulis 的帖子

恩。。我修改那个中断矢量后,就可以用TAIV
 
 
 

回复

327

帖子

0

TA的资源

纯净的硅(高级)

6
 

回复 4楼 benni 的帖子

哇!是激光灭蚊器嘛~很先进的样子~
的确没有看到TA0.2的引脚……如果P2.4或者P2.5中有空闲的引脚试试TA1.2吧。

点评

呃。没有啦,就是在做TI杯的电赛题目,之前没有用过430的捕获功能,所以要赶快弄好,可是写好,一直没有出结,TA1.2是timerB的吗?  详情 回复 发表于 2012-8-6 10:55
 
个人签名Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 elulis 的帖子

呃。没有啦,就是在做TI杯的电赛题目,之前没有用过430的捕获功能,所以要赶快弄好,可是写好,一直没有出结,TA1.2是timerB的吗?

点评

TA是TimerA的缩写啦  详情 回复 发表于 2012-9-7 09:28
 
 
 

回复

327

帖子

0

TA的资源

纯净的硅(高级)

8
 

回复 7楼 benni 的帖子

TA是TimerA的缩写啦
 
个人签名Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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