在线情况
楼主
  • 头像
  • 级别
    • 积分2
    • 经验146
    • 文章12
    • 注册2009-07-07
    msp430f149 ADC12 测量电压

    void initADC(void)
    {

         ADC12CTL0 &= ~ENC;//stop a/d
         ADC12CTL0 = ADC12ON + MSH;
         ADC12CTL0 = SHT0_8;
         ADC12CTL1 = SHP + CONSEQ_3;                             
         ADC12MCTL0 =  INCH_0;             
         ADC12MCTL1 =  INCH_1;                
         ADC12MCTL2 =  INCH_2 + EOS;       

    //      ADC12IE = 0x0000;

         Delay(5); //5ms

         ADC12CTL0 |= ENC;                     // Enable conversions  
         ADC12CTL0 |= ADC12SC;                 //start conversion

         Delay(5);

    }

    以上为初始化程序,想实现的功能如下:ADC一直处于采样状态,外部参考源,3.3v,我在TIMER_A里每隔一段时间去读ADC12MEM1里的值。现在发现根据换算后值电压测得不对,不知道是什么原因,请大家看看上面的初始化程序有没有问题?
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分30
      • 经验613
      • 文章57
      • 注册2011-01-31
      ADC12CTL0 = ADC12ON + MSH;
           ADC12CTL0 = SHT0_8;
      你怎么能这样对寄存器赋值啊?用|=,不要直接用=
      因为=是直接覆盖掉前面的值的。所以前面那句话写了和没写一样,因为被后面的SHT0_8给覆盖了。
      后面好几句也是这个问题。
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      嗯,这点特别需要注意了。初用430者常常范的低级输入错误。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      Powered by LeadBBS 9.2 .
      Page created in 0.1875 seconds with 6 queries.