Цитата
Следует учесть, что преобразование можно осуществлять в то время, пока УВХ заряжается от другого канала
У авр ацп
последовательного приближения. И УВХ используется преобразователем во время процесса преобразования. Соответственно, преведенное выше утверждение неверное. Чтобы это понять, достаточно посмотреть на блок-схему ацп в даташите или посмотреть вышеприведенную ссылку.
Кроме того, в даташите совершенно конкретно указано, когда и на протяжении какого времени осуществляется выборка и захват:
Цитата
The actual sample-and-hold takes place 1.5 ADC clock cycles after the start of a normal conversion
И анилизируя графики из даташита, видим что выборка и захват почти всегда (кроме первого запуска) осуществляется чарез 1,5 цикла АЦП после обновления адреса на мультиплексоре. То есть при рекомендованой максимальной частоте 200 кГц имеем время выборки 7,5 мкс
А " в случае высокого выходного сопротивления источника сигнала" на него нужно ставить повторитель, так как рекомендуемое выходное сопротивление источника сигнала - не более 10кОм. Как вариант можно попробывать уменьшить частоту АЦП до 50 кГц. Или сменить чип (напр, на мегу16) и использовать дифференциальный режим (для него сопротивление источника - не более "пару сотен" кОм).
Цитата
Подскажите, если не трудно. Мне нужно непрерывно мерять 4 канала по очереди. Тактовая 10 МГц / 64. Как это правильно делать чтоб иметь корректный результат по каждому каналу? Спасибо.
Если запустить в режиме непрерывного преобразования (Free Running Mode), то по прерыванию от АЦП:
a) читаем регистр ADC б) меняем канал. Порядок пунктов а) и б) в общем случае не важен. При этом прочитанный регистр ADC будет показывать значение из канала, который был выбран в
позапрошлом прерывании.
А первые 2 прерывания (после запуска АЦП) дадут занчение канала, который был выбран при запуске.
Для понимания сути:
когда мы вошли в прерывание, то:
1. ADCH:ADCL содержит значение из канала, выбранном в позапрошлом прерывании
2. канал, выбранный в прошлом прерывании, в данный момент обрабатывается
3. новый канал, который мы записали в ADMUX, попадает в буферный регистр. Он
автоматически будет перезаписан в ADMUX за 1 такт(АЦП-ешный) до конца преобразования. По истечению этого такта получим новое прерывание от АЦП.
Естественно, что нельзя допускать пропусков прерываний от АЦП и в прерывании обязательно вычитывать ADCL (опционально) и после него ADCH.