AVcc и AREF соединен с Vcc, AGND соединен с GND.
В CodeVisionAVR пишу такой код:
Код
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | 0xff;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSR|=0x40;
// Wait for the AD conversion to complete
while ((ADCSR & 0x10)==0);
ADCSR|=0x10;
return ADCW;
}
//настройки портов
void main(void)
{ int a = 0;
while(1)
{
a = (int)read_adc;
PORTC.6 = 1;
delay_ms(a);
PORTC = 0x00;
}
}
{
ADMUX=adc_input | 0xff;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSR|=0x40;
// Wait for the AD conversion to complete
while ((ADCSR & 0x10)==0);
ADCSR|=0x10;
return ADCW;
}
//настройки портов
void main(void)
{ int a = 0;
while(1)
{
a = (int)read_adc;
PORTC.6 = 1;
delay_ms(a);
PORTC = 0x00;
}
}
в результате светодион на шестом выводе порта С постоянно мигает с частотой примерно 0,5с. Наверное, снимается показание с внутреннего источника опорного напряжения, которое составляет примерно половину 5В.
Что неправильно сделано? Как сделать, чтобы частота мигания светодиода менялась в зависимости от подаваемого напряжения на ADC0?