5900|2

79

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ADC12CTL0 |= ADC12SC.语句执行后,ADC12SC未置位 [复制链接]

刚开始调ADC12模块就遇到一个很奇怪的问题,ADC12SC 在单通道单次转换模式下不能置位,但是在单通道多次转换模式下却可以置位。现在我换了两块不一样的最小系统板,都遇到这个问题。。 

程序1.(TI的官方演示程序,单通道单次转换)-----》单步时ADC12CTL0 |= ADC12SC不能置位。 


#include  <msp430x14x.h> 

void main(void) 

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT 
  ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12 
  ADC12CTL1 = SHP;                          // Use sampling timer 
  ADC12IE = 0x01;                           // Enable interrupt 
  ADC12CTL0 |= ENC;                         // Conversion enabled 
  P6SEL |= 0x01;                            // P6.0 ADC option select 
  P1DIR |= 0x01;                            // P1.0 output 

  for (;;) 
  { 
    ADC12CTL0 |= ADC12SC;                   // Sampling open 
    _BIS_SR(CPUOFF + GIE);                  // LPM0, ADC12_ISR will force exit 
  } 


// ADC12 interrupt service routine 
#pragma vector=ADC_VECTOR 
__interrupt void ADC12_ISR (void) 

    if (ADC12MEM0 < 0x7FF) 
      P1OUT &= ~0x01;                       // Clear P1.0 LED off 
    else 
      P1OUT |= 0x01;                        // Set P1.0 LED on 
    _BIC_SR_IRQ(CPUOFF);                    // Clear CPUOFF bit from 0(SR) 



程序二是单通道重复采样模式------->》ADC12CTL0 |= ADC12SC 执行后,ADC12SC可以置位。 
#include  <msp430x14x.h> 

#define   Num_of_Results   8 

static unsigned int results[Num_of_Results];  // Needs to be global in this 
                                              // example. Otherwise, the 
                                              // compiler removes it because it 
                                              // is not used for anything. 

void main(void) 

  WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer 
  P6SEL |= 0x01;                            // Enable A/D channel A0 
  ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // Turn on ADC12, set sampling time 
  ADC12CTL1 = SHP+CONSEQ_2;                 // Use sampling timer, set mode 
  ADC12IE = 0x01;                           // Enable ADC12IFG.0 
  ADC12CTL0 |= ENC;                         // Enable conversions 
  ADC12CTL0 |= ADC12SC;                     // Start conversion 
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0,Enable interrupts 



#pragma vector=ADC_VECTOR 
__interrupt void ADC12ISR (void) 

  static unsigned int index = 0; 

  results[index] = ADC12MEM0;               // Move results 
  index = (index+1)%Num_of_Results;         // Increment results index, modulo 



求解啊。我之前都用过这几个演示程序,都好的,怎么现在不行了。。。。。 

大虾们,高手们,出来帮帮忙吧!

最新回复

我去,我才看见。。。过去一年了。。。  详情 回复 发表于 2012-12-27 14:38
 
点赞 关注

回复
举报

101

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我是遇到和你一样的问题百度到这个提问的,但是现在貌似解决了。
1、你看下你的时钟设置,我用的ADCCLK=SMCLK=8MHz,MCLK=1MHz,采样时间4个adcclk
2、ADC12SC是自动复位的,也就是转换完成自动变成0
3、将ADC12MEMx也就是你用的通道的那个结果寄存器加到watch里看看结果
如果每次结果在你ADC12CTL0 |= ADC12SC;之后有更新就是可以的,ADC12SC自动复位了
 
 

回复

101

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我去,我才看见。。。过去一年了。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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