4997|8

7172

帖子

195

TA的资源

五彩晶圆(高级)

楼主
 

launchpad AD多通道采样问题 [复制链接]

AD单通道采样成功了

但是两个通道却不可以

利用查询模式 不用中断模式

 

书上如是说:

[1]在CONSEQ=0(单通道单次转换)的情况下,当ADC12BUSY=1时,
ENC=0则会结束转换进程,并且得到错误结果。
[2]在CONSEQ≠0(非单通道单次转换)的情况下,当 ADC12BUSY=1时,
ENC=0则转换正常结束,得到正确结果

 

[code]

void ADC_init(void)
{
  P1SEL |=  (BIT0|BIT1);
  ADC10CTL0 = SREF_1  + REFON + ADC10ON;          //
  ADC10AE0 |= (BIT0|BIT1);                         // P1.0 ADC option select
  ADC10CTL1 = ADC10SSEL_2+CONSEQ_1;         //MCLK Sequence-of-channels
}

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |=  (BIT6);
  P2DIR |=  0xff;
  P1OUT&= ~BIT6;
  P2OUT&=0X00;
  ADC_init();
  result1=0;
  result2=0;
 
   ADC10CTL1 &=~INCH_1;
   ADC10CTL1 |= INCH_0;
   ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
   while (ADC10CTL1 & ADC10BUSY);          // ADC10BUSY?

   ADC10CTL0 &=(~ENC);
   result1=ADC10MEM ;
     
   ADC10CTL1 &=~INCH_0;
   //ADC10MEM=0;
  
  
    ADC10CTL1 |= INCH_1;
   ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
   while (ADC10CTL1 & ADC10BUSY);          // ADC10BUSY?
     ADC10CTL0 &=(~ENC);
   result2=ADC10MEM ;
  
   if(result1>0)
   {P2OUT |=  BIT1;
      }
  if(result2>0)
   {    P1OUT |=  BIT6;
   }
    
  

   while(1)
   {
 
   }
}

 

[code]

 

我是想利用A0 A1通道采样两个电压 一个高一个低 正好两个灯一亮一灭 可是事与愿违 两个灯都不亮

最新回复

第二个通道转换结果存储到数组中下一个地址 另外可以设置重复转换完自动开始  详情 回复 发表于 2012-7-13 19:19
 
点赞 关注(1)

回复
举报

7172

帖子

195

TA的资源

五彩晶圆(高级)

沙发
 
UP 希望高手帮忙
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
初始化有问题吧!
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

4
 
/******************通道连续轮换*******************************

#define ADC_USED_CHANNEL_NUM                1                                //使用通道数
#define ADC_BUFFERSIZE_PRECHN                32                                //每通道保存数据
#define ADC_CLKDIV                                        ADC10DIV_7                //adc时钟分频0~7对应1~8分频
#define ADC_CLK                                                ADC10SSEL_3                //1aclk 3smclk

unsigned int AD_Data[ADC_USED_CHANNEL_NUM*ADC_BUFFERSIZE_PRECHN];
unsigned char Save_Block=0;
void ADC10_Init(void) {
          ADC10CTL1 = ((ADC_USED_CHANNEL_NUM-1)*0x1000) | CONSEQ_3 | ADC_CLK | ADC_CLKDIV;      // smclk , repeat
          ADC10DTC1 = ADC_USED_CHANNEL_NUM;
          ADC10SA = (unsigned int)AD_Data;
          ADC10AE0 = ADC_IO_MASK;
          ADC10CTL0 = MSC + ADC10ON + ADC10IE + ADC10SHT_3;                        //转换时间=13clk+采样时间+1
          ADC10CTL0 |= ENC + ADC10SC;
}

#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
    ADC10SA = (unsigned int)(AD_Data+Save_Block*ADC_USED_CHANNEL_NUM);
    ADC10CTL0 |= ENC + ADC10SC;
    Save_Block++;Save_Block&=(ADC_BUFFERSIZE_PRECHN-1);
//    LED2_BLINK;

}
*/

点评

看起来很经典 请问下  通道转换结果是顺序存储么   ADC10SA = (unsigned int)(AD_Data+Save_Block*ADC_USED_CHANNEL_NUM);ADC10CTL0 |= ENC + ADC10SC;Save_Block++;Save_Block&=(ADC_BUFFERSIZE_  详情 回复 发表于 2012-7-12 14:33
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

5
 
软触发就这句:
ADC10CTL0 |= ENC + ADC10SC;
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

6
 

回复 4楼 huzi2099 的帖子

看起来很经典

请问下  通道转换结果是顺序存储么

 

ADC10SA = (unsigned int)(AD_Data+Save_Block*ADC_USED_CHANNEL_NUM);
ADC10CTL0 |= ENC + ADC10SC;
Save_Block++;Save_Block&=(ADC_BUFFERSIZE_PRECHN-1);

可否细讲

[ 本帖最后由 常见泽1 于 2012-7-12 14:47 编辑 ]
 
 
 

回复

4005

帖子

0

TA的资源

版主

7
 
连续转换ADC_USED_CHANNEL_NUM 指定的N个通道,结果存入ADC10SA = (unsigned int)AD_Data;指定的存储区,所有通道全部转换完置标记或触发中断。转换顺序就是ad通道1234。。。,可以设置跳过不用的通道。

点评

不知道 比如存储地址0x200 第一个存储在这里 第2歌通道是地址+1?请教一下  详情 回复 发表于 2012-7-13 09:17
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

8
 

回复 7楼 huo_hu 的帖子

不知道 比如存储地址0x200 第一个存储在这里 第2歌通道是地址+1?请教一下
 
 
 

回复

4005

帖子

0

TA的资源

版主

9
 
第二个通道转换结果存储到数组中下一个地址

另外可以设置重复转换完自动开始
 
 
 

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

开源项目 更多>>
    随便看看
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表