[求助] ADC10序列通道单次转换又读不到数据

woody13   2012-3-10 14:42 楼主
最近在学430,但是总遇到这样那样的问题,还请各位多多指点啊~~
#include "msp430x21x2.h" 
void Delay(unsigned short time);
unsigned  int ad_value[3]; 
void main()
  
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT 
  ADC10CTL0 = SREF_1+REFON+REF2_5V+ADC10SHT_2 + MSC+ADC10ON+ADC10IE; // ADC10ON, interrupt enabled 
  ADC10CTL1 = INCH_2+CONSEQ_1;
  ADC10DTC1 = 0x03;                         // 3 conversions
  ADC10AE0 |= 0x07;                         // P2.2,1,0 ADC10 option select
  P1DIR =0X01;
  Delay(1);
 while(1)
 {    //P1OUT |=0X01;
    ADC10CTL0 &= ~ENC;
    while (ADC10CTL1 & BUSY);               // Wait if ADC10 core is active
    ADC10SA = (unsigned int)ad_value+1;
                                            // Data buffer start
    ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
    
    __bis_SR_register(CPUOFF + GIE);        // LPM0, ADC10_ISR will force exit
    
    if(ad_value[0]>0)
      P1OUT |=0X01;
     }
 

#pragma vector=ADC10_VECTOR 
__interrupt void ADC10(void) 
{
  _BIC_SR(CPUOFF);        // Clear CPUOFF bit from 0(SR) 


void Delay(unsigned short time)
{
    unsigned short i, j;
 for(; time > 0; time--)
  {
     for(j = 0; j < 10; j++)
     {
      for(i = 0; i < 100; i++);
     }
  }
}

这是自已弄的一小段程序,想用数组把转换的数据读出来,数组的首地址送给ADC10SA,不知这样可对 ADC10SA = (unsigned int)ad_value+1;现在就是数组里面读不出东西,请各位帮着分析下,哪里出了问题的~~~
[ 本帖最后由 woody13 于 2012-3-10 16:05 编辑 ]

回复评论 (6)

21系列?没用过啊,不过五系列和一系列转换的数据都是存储到ADC12MEM里面,没看见你调用ADC12MEM啊。
怪了21系列的ADC是10位的?
点赞  2012-3-11 22:21
例程试过了没有,能不能正常工作?
点赞  2012-3-12 18:39
ADC10SA的设置为啥要+1?那ad value「0」不会收到数据的啊
点赞  2012-3-13 17:51

回复 楼主 woody13 的帖子

可以先根据demo code来配置,这个程序我没看到哪里读数据ADC10MEM
点赞  2012-3-13 23:36
解决了没有呀,我也遇到了这个问题
点赞  2012-4-11 17:38

AD采不到数据

你这里只有初始化和中断,连AD转换都没,怎么会有数据啊。又是数据溢出或者数据类型定义出错也会不出数据
点赞  2012-4-11 22:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复