Estoy usando atmega32 µc con el ADC interno de 10 bits. Conecté mi potenciómetro al ADC 1 y estoy usando una referencia de voltaje de 5 V.
utilizando el siguiente código, hice la configuración de ADC
void ADC_init(void)
{
//Turn on the ADC
ADCSRA |= 1<<ADEN; // Turn On ADC (Enable ADC)
//ADMUX |= 1<<ADLAR ; // Config shifting to the left (10-bit), otherwise it is right adjusted
ADMUX |= 1<<REFS0 ; // Config VRef (external Vref in this case)
ADMUX |= 1<<MUX1 ; // ADC-Channel 1
// ADCSRA |= 1<<ADIE; // Enable ADC Interrupt
ADCSRA |= 3<<ADPS0; // Assign ADC-prescaler 128
ADCSRA |= 1<<ADSC; //start the the measure conversion
}
Luego, en la función principal, estoy llamando a la siguiente función cada 1000 ms y envío los datos a la interfaz USART
void ADC_measure(void)
{
_delay_ms(50);
// if the ADC right adjusted
theLow = ADCL; // ADC Value Low
_delay_ms(50);
ADC_TenBit = ADCH<<8 | theLow ; // because of lift adjustment of ADC
_delay_ms(50);
sprintf( ADCBuffer, "The ADCValue is : %d \n", ADC_TenBit );
_delay_ms(50);
usart_pstr(ADCBuffer);
_delay_ms(50);
//start the the measure conversion
ADCSRA |= 1<<ADSC;
}
El problema es: cuando abro la terminal, solo veo el valor ADC = 255 o 248 aumentar o disminuir el valor del potenciómetro no cambia el valor de ADC.
¿Qué puedo hacer ahora?