问题是:我正在尝试初始化MSP430FR2476上内置的12位模数转换器,但是不管我做什么,它似乎在10位上工作。我在控制寄存器中更改分辨率位,可惜,没有效果。不管我做了什么,都不会有任何帮助,总有10块。最重要的字节永远不会超过3。请帮助,下面是代码片段:
//Configuring ADC
PMMCTL2 |= (INTREFEN); //Internal reference, default 1.5V
ADCCTL0=ADCCTL1 = 0; //Ensuring that the ADC is off
ADCCTL0 |= (ADCSHT_7 + ADCMSC); //sample and hold = 64clk, multiple conversion
ADCCTL1 |= (ADCSHP + ADCSSEL_2 + ADCCONSEQ_1 + ADCDIV_7); //Conversion is triggered
//manually, ADC clock source - SMCLK/8 ~ 2Mhz, sequence of
//channels single conversion,
ADCCTL2 |= (ADCRES_2); //12 bit resolution, no matter what setting I have, no change
ADCMCTL0 |= (ADCSREF_1 + ADCINCH_1); //Employing the internal reference and starting
//conversion from A1 (P1.1)
ADCIE |= ADCIE0; //Activate interrupt
ADCCTL0 |= (ADCON); //Switching ADC on
SYSCFG2 |= (BIT1); //Activate ADC module on the pins (this line
//doesn't do anything for some reason
void adc_convert_begin(){
ADCCTL0 |= ADCENC;
ADCCTL0 |= ADCSC; //Start conversion
//The interrupt simpy send the most significant byte over UART
__attribute__((interrupt(ADC_VECTOR)))
void ADC_ISR(void){
switch(__even_in_range (ADCIV, 0x0C)){
case 0x0C:
adc_data[adc_index] = ADCMEM0;
UCA1TXBUF = (unsigned char)(ADCMEM0>>8);
break;
}
}
发布于 2022-03-13 14:29:30
这个错误恰好出现在这里:
ADCCTL2 |= (ADCRES_2);
这个想法是默认值是1,所以当我在寄存器上执行一个|=
操作时,最终值是3,而不是2。我需要首先对这个位字段进行零点!
https://stackoverflow.com/questions/71407146
复制相似问题