这款单片机的ADC模块,选择ADC10的通道时候,手册里面有一个(VCC-VSS)/2,没看懂是什么意思,求帮忙解答 ,谢谢
Susan Yang:
这个就是指电源电压的一半,若是您选择了INCHx为1011,则表示这是电源电压的一半
若是选择了INCHx为1100,对于MSP430F2274则表示为A12
user6333565:
回复 Susan Yang:
什么是电源电压一半 说ADC的参考电压吗 还是啥 我想弄明白的是参考电压电一半指的是啥呢
Susan Yang:
回复 user6333565:
Up to eight external input channels (twelve on MSP430F22xx devices)
这里是指的输入通道,而A12等表示的是输入通道为固定值(VCC – VSS) / 2
看一下下面的例程,会对您有所帮助
/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/ //****************************************************************************** //MSP430F22x4 Demo - ADC10, Sample A11, Lo_Batt, Set P1.0 if AVcc < 2.3V // //Description: A single sample is made on A11 (AVcc/2) with reference to //internal 1.5V Vref. Software sets ADC10SC to start sample and conversion //- ADC10SC automatically cleared at EOC. ADC10 internal oscillator times //sample (16x) and conversion. ADC10BUSY flag is polled for EOC. If A11 //(AVcc/2) < 0311h (1.15V) indicating AVcc is less 2.3V, P1.0 set indicating //a lo_Batt condition, else reset. // //MSP430F22x4 //----------------- ///|\|XIN|- //| || //--|RSTXOUT|- //|| //|A11 (AVcc/2) P1.0|-->LED // //A. Dannenberg //Texas Instruments Inc. //April 2006 //Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A //****************************************************************************** #include <msp430.h>int main(void) {WDTCTL = WDTPW + WDTHOLD;// Stop WDTADC10CTL1 = INCH_11;// AVcc/2ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON;TACCR0 = 30;// Delay to allow Ref to settleTACCTL0 |= CCIE;// Compare-mode interruptTACTL = TASSEL_2 + MC_1;// TACLK = SMCLK, Up mode__bis_SR_register(CPUOFF + GIE);// LPM0, TA0_ISR will force exitTACCTL0 &= ~CCIE;// Disable timer InterruptP1DIR |= 0x01;// Set P1.0 to output directionfor (;;){ADC10CTL0 |= ENC + ADC10SC;// Sampling and conversion startwhile (ADC10CTL1 & ADC10BUSY);// ADC10BUSY?if (ADC10MEM < 0x311)// ADC10MEM = A11 > 1.15V?P1OUT |= 0x01;// Set P1.0 LED onelseP1OUT &= ~0x01;// Clear P1.0 LED off} }#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=TIMERA0_VECTOR __interrupt void TA0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(TIMERA0_VECTOR))) TA0_ISR (void) #else #error Compiler not supported! #endif {TACTL = 0;// Clear Timer_A control registersLPM0_EXIT;// Exit LPM0 on return }