工具/软件:
你(们)好
我在工程中使用 MSP430FR2355 控制器、
我想使用 ADC、对于我的一个工程、我要初始化所有 ADC 寄存器、ADC 中断也可以工作。
但是、虽然从 ADCMEM0 寄存器读取时始终显示 101 或 102 的值、但我在端口引脚 1.0 上施加的电压为 1.55VDC。
帮助解决此问题。
我每 100ms 使用以下命令启动一次 ADC 转换。
ADCCTL0 |=(ADCENC | ADCSC);
我的代码如下:
void adc_config() { P1SEL0 |=BIT0; P1SEL1 |=BIT0; // Disable the GPIO power-on default high-impedance mode to activate // previously configured port settings PM5CTL0 &= ~LOCKLPM5; // Configure ADC12 ADCCTL0 |= ADCSHT_2 | ADCON; // ADCON, S&H=16 ADC clks ADCCTL1 |= ADCSHP; // ADCCLK = MODOSC; sampling timer ADCCTL2 &= ~ADCRES; // clear ADCRES in ADCCTL ADCCTL2 |= ADCRES_2; // 12-bit conversion results ADCMCTL0 |= ADCINCH0; // A1 ADC input select; Vref=AVCC ADCIE |= ADCIE0; } // ADC interrupt service routine #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=ADC_VECTOR __interrupt void ADC_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(ADC_VECTOR))) ADC_ISR (void) #else #error Compiler not supported! #endif { switch(__even_in_range(ADCIV,ADCIV_ADCIFG)) { case ADCIV_NONE: break; case ADCIV_ADCOVIFG: break; case ADCIV_ADCTOVIFG: break; case ADCIV_ADCHIIFG: break; case ADCIV_ADCLOIFG: break; case ADCIV_ADCINIFG: break; case ADCIV_ADCIFG: ADC_data[0] = ADCMEM0; __bic_SR_register_on_exit(LPM0_bits); // Clear CPUOFF bit from LPM0 break; default: break; } }
谢谢、
Yuvaraj