This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5529:A12上的 ADC12、就像示例代码 ADC_01一样

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/718926/ccs-msp430f5529-adc12-on-a12-just-like-example-code-adc_01

器件型号:MSP430F5529

工具/软件:Code Composer Studio

ADC_01示例代码读取 A0 (P6.0)、如果读数大于0.5V、则亮起并亮起 LED。  对该简单示例进行哪些修改将执行完全相同的操作、但请改为读取 A12 (P7.0)?

我使用的是'5529 Launchpad。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Clark、

    您可以通过替换以下行来执行此操作:

    P6SEL |= 0x01; // P6.0 ADC 选项选择

    其中:

    P7SEL |= 0x01; // P7.0 ADC 选项选择

    这会将 ADC 设置为使用 P7.0而不是 P6.0。

    另请注意、该示例在读数大于0.5 * AVcc 时点亮 LED、而不是在读数大于0.5V 时点亮 LED。

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我怀疑您还需要:

    >ADC12MCTL0 = ADC12INCH_12;//仅 A12,VRSEL=0 (Vcc)

    由于原始代码具有隐式"ADC12MCTL0=ADC12INCH_0"(=0)。 在 ADC12IE 中设置 BIT0 (0x01)是指 MCTL0、这是可以的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题已脱机。 对于这个线程之后的任何人、上面的2个变化是必需的、并且 ADC12MCTL0变化需要在 ADC 和中断被启用前发生。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Nathan 找到解决方法;下面是我最后得到的代码、它不会进入低功耗模式、它只是延迟、然后查看 A12结果。  抱歉、格式已改编、但它可以满足我的需要!

    ----------

    #include 
    
    
    int main (void)
    
    {
    
    WDTCTL = WDTPW + WDTHOLD;//停止 WDT
    
    
    ADC12CTL0 = ADC12SHT02 + ADC12ON;//采样时间、
    
    ADC12CTL1上的 ADC12 = ADC12SHP;//使用采样计时器
    
    ADC12MCTL0 = ADC12INCH_ADC120
    
    
    
    ;//仅限 ADC12C12C12= ADC120;ADC12C12= ADC12C12= ADC12C12= ADC12C12C0;/ ADC12C12C12= ADC12C12= ADC12= ADC12C0;ADC12ENC12C12
    
    // P7.0 ADC 选项选择
    
    P1DIR |= 0x01;// P1.0输出
    
    
    同时(1)
    
    {
    
    ADC12CTL0 |= ADC12SC;//开始采样/转换
    
    __DELAY_CYCLS (1000);
    
    if (ADC12MEM0 >= 0x7ff)// ADC12MEM = A0 > 0.5AVcc?
    
    P1OUT |= BIT0;// P1.0 = 1
    
    else
    
    P1OUT &=~BIT0;// P1.0 = 0
    
    }