Atmega8: встроенный АЦП
Добавлено: Ср сен 06, 2006 17:19:28
Впервые пришлось иметь дело со встроенным в атмегу АЦП, и заметил такую пакость - некоторые измерения получаются совершенно левыми. Т.е. получаем корректные данные раз 20 подряд, а потом - БАЦ - и какая-то хрень вылезает. Дальше снова нормальные результаты.
Может быть какие-то есть схемотехнические приемы для уменьшения помех этих?
Я просто ноги AREF и AVCC посадил на +5 В с конденсатором на землю 0,1 мкФ.
Вот так инициализирую АЦП:
// ADC initialization
// ADC Clock frequency: 921,600 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=0x40;
ADCSRA=0x83;
Это функция чтения результатов преобразования:
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
Может быть какие-то есть схемотехнические приемы для уменьшения помех этих?
Я просто ноги AREF и AVCC посадил на +5 В с конденсатором на землю 0,1 мкФ.
Вот так инициализирую АЦП:
// ADC initialization
// ADC Clock frequency: 921,600 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=0x40;
ADCSRA=0x83;
Это функция чтения результатов преобразования:
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}