OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5039|回复: 1

msp430f5529脉宽测量

[复制链接]

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-4-18
在线时间
0 小时
发表于 2014-7-24 10:55:31 | 显示全部楼层 |阅读模式
5金钱
用5529进行脉宽测量,中断貌似进了但是没法判断,求解读~
#include  <msp430.h>
#include "Header_Config.h"
#include "sys.h"

unsigned char overflow = 0,Sum_High_Index = 0,Sum_Rising_Index = 0,CCR_Flag = 0;
long Wide_Rising_Old = 0,Wide_Rising_Cur = 0,Wide_Rising = 0,Wide_Rising_Sum = 0,Wide_Rising_Result = 0;
long Wide_High_Cur = 0,Wide_High = 0,Wide_High_Sum = 0,Wide_High_Result = 0;

void main(void)
{
  volatile unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  Board_init();
  LCD_Init();

 SetVCore(3);
  LFXT_Start(XT1DRIVE_0);       // Use 32.768kHz XTAL as reference
  Init_FLL_Settle(12000, 762);  // Set system clock to (12MHz)  
  SFRIFG1 = 0;
  SFRIE1 |= OFIE;

  P1DIR |= 0x01;                            // P1.0 output
  P2DIR &= ~BIT1;                          
  P2SEL |= BIT1;                              
  //P2REN |= BIT1;         // Enable P1.4 internal resistance
  P2IFG &= ~BIT1;      
  P2IE |= BIT1;          

  TA1CCTL1 = CM_3 + SCS + CCIS_0 + CAP + CCIE;   // 上升沿和下降沿都捕获
  TA1CTL = TASSEL_2 + MC_2 + TAIE;               // SMCLK, contmode, interrupt
  
  _EINT();
  while(1)
  {
      if(CCR_Flag)
      {
          CCR_Flag = 0;                         // 捕获结果处理
          Dogs102x6_numDisplay(0, 0, Wide_Rising_Result, 0); // 周期结果
          Dogs102x6_numDisplay(1, 0, Wide_High_Result, 0);    // 高电平宽度                  
      }
  }
}

#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
  P1OUT ^= 0x01;    // Toggle P1.0
  switch(__even_in_range(TA1IV,10))
  {
    case  0: break;                          // No interrupt
    case  2: 
      TA1CCTL1 &= ~CCIFG;
      if((P2IN&BIT0)==BIT0)                                                   // 上升沿引发的中断
      {
        Wide_Rising_Cur = TA1CCR1;                                           // 读取当前所得的最新捕获值
        Wide_Rising =  65536*overflow - Wide_Rising_Old + Wide_Rising_Cur;  // 防止出现溢出
        Wide_Rising_Old = Wide_Rising_Cur;
        overflow = 0;
        Sum_Rising_Index++;
        if(Sum_Rising_Index>4)                                               // 丢掉前几次不稳定数据
        {
          Wide_Rising_Sum += Wide_Rising;
          if(Sum_Rising_Index==12)
          {
            Sum_Rising_Index = 0;
            Wide_Rising_Result = Wide_Rising_Sum>>3;                    // 得出8次捕获平均值
            Wide_Rising_Sum = 0;

            Wide_High_Result = Wide_High_Sum/7;                        // 得出7次高点平捕获平均值,服务于上升沿捕获
            Wide_High_Sum = 0;

            CCR_Flag = 1;                                               // 置捕获完成标志位
          }
        }
      }
      else                                                                    // 下降沿引发的中断,记录高电平宽度
      {
        Wide_High_Cur = TA1CCR1;                                             // 读取当前所得的最新捕获值
        Wide_High =  65536*overflow - Wide_Rising_Old + Wide_High_Cur;      // 防止出现溢出,计算出高电平宽度
        //overflow = 0;                                                     // 此处不清overflow,一个周期后清除
        if(Sum_Rising_Index>4)                                              // 丢掉前几次不稳定数据
        {
          Wide_High_Sum += Wide_High;
        }
      }
      break;                          // CCR1 not used
    case  4: break;                          // CCR2 not used
    case  6: break;                          // reserved
    case  8: break;                          // reserved
    case 10: 
      overflow++;                                    // overflow
      TA1CTL &= ~CCIFG;
      break;                          // reserved
    default: break; 
  }
}

肚子饿死了、、、
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-7-24 19:56:58 | 显示全部楼层
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表