打印

430捕获问题 大大们看下

[复制链接]
1455|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wonderfri|  楼主 | 2013-8-10 16:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
运行程序后 new和old都有值可是相减后T值总是0为什么啊
#include "MSp430G2553.h"
#include"LCD.h"
unsigned int old=0,new=0,T,zhuangsu;
unsigned char overflow;

void main( void )
{


          WDTCTL = WDTPW + WDTHOLD;
         P1DIR|=BIT6;
          P1SEL|=BIT2;//P1.2->捕获输入
          P1OUT&=~BIT6;//关闭LED
          BCSCTL1 = CALBC1_1MHZ;         
          DCOCTL  = CALBC1_1MHZ;
          Port_init();
                                      //delay_ms(100);
                                      LCD_init();
                                      LCD_clear();
          CCTL1=CM_1+SCS+CCIS_0+CAP+CCIE;//上升沿+同步+CCI0A(p1.2)+捕获功能+捕获中断
          TACTL=TASSEL_2+MC_2+TAIE+TACLR;
          _EINT();
          while(1){_BIS_SR(GIE);
          xianshi();
          }
}
void xianshi(void)
{

             T=2*T/1000000;
             zhuangsu=60/T;
        LCD_write_str(0,0,"zhuangsu:");
                                                                LCD_write_char(0,1,num_char_table[zhuangsu/10000]);
                                                                LCD_write_char(1,1,num_char_table[zhuangsu%10000/1000]);
                                        //LCD_write_char(3,1,'.');
                                                                LCD_write_char(2,1,num_char_table[zhuangsu%1000/100]);
                                                        LCD_write_char(3,1,num_char_table[zhuangsu%100/10]);
                                                LCD_write_char(4,1,num_char_table[zhuangsu%10]);
                                                                 //LCD_write_char(4,1,num_char_table[0]);
                                                                  LCD_write_str(5,1,"zhuang/min");
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A (void)
{
  switch(TAIV)
  {
    case 2:
      if(CCTL1&CM_1)
      {
      
        new=TAR;
        T=new-old;
        overflow=0;
      }
      old=new;
      P1OUT^=BIT6;
      break;
    case 10:
      overflow++;
      break;
    default:
      break;
   }
}

相关帖子

沙发
dirtwillfly| | 2013-8-10 16:29 | 只看该作者
又是一大段程序啊

使用特权

评论回复
板凳
dirtwillfly| | 2013-8-10 16:35 | 只看该作者
new和old都有值可是相减后T值总是0,说明两次捕获的值相等啊

使用特权

评论回复
地板
wonderfri|  楼主 | 2013-8-10 17:24 | 只看该作者
dirtwillfly 发表于 2013-8-10 16:35
new和old都有值可是相减后T值总是0,说明两次捕获的值相等啊

我把程序改成T=new new有值可是T还是0 why啊

使用特权

评论回复
5
dirtwillfly| | 2013-8-10 20:36 | 只看该作者
wonderfri 发表于 2013-8-10 17:24
我把程序改成T=new new有值可是T还是0 why啊

我不知道啊,你在这里设置好断点,看看它运算的过程

使用特权

评论回复
6
gaochy1126| | 2013-8-10 21:48 | 只看该作者
上升沿捕获。

使用特权

评论回复
7
gaochy1126| | 2013-8-10 21:49 | 只看该作者
然后改为下降沿捕获的。

使用特权

评论回复
8
gaochy1126| | 2013-8-10 21:49 | 只看该作者
最好再上升沿的时候吧计数器清0

使用特权

评论回复
9
wonderfri|  楼主 | 2013-8-10 23:55 | 只看该作者
gaochy1126 发表于 2013-8-10 21:49
然后改为下降沿捕获的。

我是想测一个脉冲周期(高电平+低电平)得时间不用一定改成下降沿捕获吧

使用特权

评论回复
10
mmbs| | 2013-8-11 10:46 | 只看该作者
用定时器测量的么?

使用特权

评论回复
11
wonderfri|  楼主 | 2013-8-11 15:00 | 只看该作者
mmbs 发表于 2013-8-11 10:46
用定时器测量的么?

是得

使用特权

评论回复
12
wonderfri|  楼主 | 2013-8-11 18:37 | 只看该作者
发现问题了 我真是脑残了啊 T=T*2/1000000; 这个必须是0啊

使用特权

评论回复
13
dirtwillfly| | 2013-8-11 22:47 | 只看该作者
wonderfri 发表于 2013-8-11 18:37
发现问题了 我真是脑残了啊 T=T*2/1000000; 这个必须是0啊

;P
问题解决了就好:handshake
多多交流

使用特权

评论回复
14
gaochy1126| | 2013-8-13 23:30 | 只看该作者
wonderfri 发表于 2013-8-10 23:55
我是想测一个脉冲周期(高电平+低电平)得时间不用一定改成下降沿捕获吧 ...

建议你使用stm32,测量更方便的。

使用特权

评论回复
15
gaochy1126| | 2013-8-13 23:31 | 只看该作者
wonderfri 发表于 2013-8-10 23:55
我是想测一个脉冲周期(高电平+低电平)得时间不用一定改成下降沿捕获吧 ...

至于430的这个功能我还真不知道呢。

使用特权

评论回复
16
wonderfri|  楼主 | 2013-8-14 20:08 | 只看该作者
gaochy1126 发表于 2013-8-13 23:30
建议你使用stm32,测量更方便的。

额 没有那个资源额

使用特权

评论回复
17
gaochy1126| | 2013-8-14 23:40 | 只看该作者
wonderfri 发表于 2013-8-14 20:08
额 没有那个资源额

以前用过stm32的,这个msp430的资源还真不清楚的。

使用特权

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

本版积分规则

3

主题

29

帖子

0

粉丝