在线情况
楼主
  • 头像
  • 级别
    • 积分8
    • 经验100
    • 文章7
    • 注册2011-12-21
    请教MSP430F449数据采集周期计算是否正确
    [P]void main(void)
    {
      WDTCTL = WDTPW+WDTHOLD;          //关闭看门狗    
      P6SEL |=0x01;                               //使能ADC通道
      ADC12CTL0 = ADC12ON+SHT0_6+MSC;              //打开ADC,设置采样时间,128个时钟周期
      ADC12CTL1 = SHP+CONSEQ_2;                    //使用采样定时器
     ADC12CTL1 |= ADC12SSEL_1;                    // select ACLK
      ADC12IE = 0x01;                               //使能ADC中断
      ADC12CTL0 |=ENC;                                //使能转换
      _EINT();
     
      while (1)
      {
        ADC12CTL0 |=ADC12SC;                            //开始转换
       _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
      }
    }
    ///////
    //函数名称: ADC12ISR
    //功能: ADC中断服务函数,在这里用多次平均的方法计算P6.0口的模拟电压数值
    #pragma vector=ADC_VECTOR
    __interrupt void ADC12ISR (void)
    {
      static int index = 0;
      results[index++] = ADC12MEM0;               //move results
      if(index == Num_of_Results)
      {
        calc_cycle(results);
        index = 0;
      }
       _BIC_SR_IRQ(LPM0_bits);
    }[/P][P]
    以上是采集程序的一部分。[/P][P]采集保持时间为128个时钟周期,时钟为ACLK信号,再加上13个固定的转换时间,[/P][P]所以采样时间为(128+13)/32768=0.004s,[/P][P]大家帮我看看我计算的采样时间是不是正确。[/P][P]因为我得到的程序结果有些出入,所以我想确定一下采样周期是否正确,感谢大家![/P]
    [ 此贴最后由DC在2011-12-21 18:04:42编辑过 ]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    [P]你好:
    只要采样周期最小时间能符合采样时序的最小时间要求的话,这是基本要求。
    ADC12CLK=ACLK这个不算高。[/P][P]他的采样时间保由两部组成,第一是13个ADC12CLK+采样保持触发时间(也就是采样定时器,如果你有做分频了,当然由这个分频时间所决定。)。基本上可以安上述的计算方案来推断出采样周期的。SHP这个必须要选择正确喔。[/P]
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分8
      • 经验100
      • 文章7
      • 注册2011-12-21
      非常感谢版主确认!
      微控网感谢您的参与
      Powered by LeadBBS 9.2 .
      Page created in 0.1875 seconds with 5 queries.