MSP430的ADC12,采用单通道多次采样的模式,未开中断,请问:第一,ad转换完成后,如果上次转换结果未读取,本次转换结果是否覆盖原有数据?第二,结果是否存放在ADC12MEM0?
Hui Cao22:
回复 Susan Yang:
谢谢,请问下面代码有问题吗
通道7
P6SEL |= 0x80; // ADC sampled on P6.7 ADC12CTL0 &= ~ENC; //ADC12CTL0 page807 ADC12CTL0 &= ~(REFON | ADC12SC); ADC12CTL0 = ADC12ON|SHT0_2; // turn on ADC12 // Sample and hold for 16 ADC12CLK cycles ADC12CTL1 &= ~ISSH; ADC12CTL1 |= (SHP | CONSEQ_2 | ADC12SSEL0 | ADC12DIV_0 | SHS_0 | CSTARTADD_0); //单通道多次采样 // Use sampling timer
ADC12MCTL0 |= (SREF_5 | INCH_7); // Vr+=VREF+ (external) & Vr- = VREF-;Channel 7
ADC12CTL0 |= ENC; // Enable conversions ADC12CTL0 |= ADC12SC; // Start conversions
Susan Yang:
回复 Hui Cao22:
请问是哪个芯片?我们的MSPWARE内是有ADC例程的
http://www.ti.com/tool/MSPWARE
Hui Cao22:
回复 Susan Yang:
感谢,用的MSP430FG4618
Susan Yang:
回复 Hui Cao22:
/* --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--*/ //****************************************************************************** //MSP430xG461x Demo - ADC12, Repeated Single Channel Conversions // //This example shows how to perform repeated conversions on a single channel //using "repeat-single-channel" mode.AVcc is used for the reference and //repeated conversions are performed on Channel A0. Each conversion result //is moved to an 8-element array called Results[].Test by applying a //voltage to channel A0, then running. To view the conversion results, open a //watch window with the debugger and view Results[]. //ACLK = 32kHz, MCLK = SMCLK = default DCO 1048576Hz, ADC12CLK = ADC12OSC // //MSP430xG461x //--------------- //|XIN|- //Vin -->|P6.0/A0| 32kHz //|XOUT|- // //Y. Yang //Texas Instruments Inc. //September 2012//Built with CCE Version: 5.2.1 and IAR Embedded Workbench Version: 6.4 //****************************************************************************** #include <msp430.h>volatile unsigned int Results[8]; unsigned int Index;int main(void) {WDTCTL = WDTPW|WDTHOLD;// Stop watchdog timerP6SEL |= 0x01;// ADC sampled on P6.0ADC12CTL0 = ADC12ON|SHT0_8|MSC;// Turn on ADC12, Sample and hold 256 ADC12CLK cyclesADC12CTL1 = SHP|CONSEQ_2;// Use sampling timer, set modeADC12IE = 0x01;// Enable ADC12IFG.0ADC12CTL0 |= ENC;// Enable conversions__enable_interrupt();// Enable interruptsADC12CTL0 |= ADC12SC;// Start conversion__bis_SR_register(LPM0_bits);// LPM0 }#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void) #else #error Compiler not supported! #endif {Results[Index++] = ADC12MEM0;// Move result, IFG is clearedIndex &= 0x07;// Modulo pointer, counts up to 7 and resets__no_operation();// SET BREAKPOINT HERE }