Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скорость преобразования АЦП?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
hd44780
Использую ATMega16, 8MHz от кварца.
АЦП работает в режиме одиночных прерываний с 10-bit разрешением, делителем 8, т.к. частота его такта 1MHz.
Работает без прерываний, через функцию, сгенерированную CvAVR-ом:

Код
// Read the AD conversion result
word read_adc(byte adc_input)
{
ADMUX=adc_input;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);

// Start the AD conversion (ADSC)
ADCSRA|=0x40;            

// Wait for the AD conversion to complete (ADIF)
while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;      
                  
// Гасим ошибку мл. бита
return ADCW&0xFFFE;
} // read_adc


Замеры АЦП выполняются исключительно в обработчике таймера, с частотой 50 кГц - 20 мкс. По 2 замера на каждое прерывание.
Судя по результатам, работает нормально rolleyes.gif.

Но всё же хочется знать, сколько времени длится одно преобразование, т.е. сколько работает цикл

// Wait for the AD conversion to complete (ADIF)
while ((ADCSRA & 0x10)==0);

В доке видел только мутнячок типа
- 13 - 260 μs Conversion Time
- Up to 15 kSPS at Maximum Resolution

Какой-либо детализации не нашёл. Может плохо искал ....

Прикинул в меру своего разумения:
15KSPS = 66.67 мкс одно преобразование. Но на какой это тактовой? При каких битах ADPSxx в ADCSRA?
И как у них связана частота, задаваемая ADPSxx с этими KSPS?
Я делаю 2 замера за 20mks - вроде работает. Может врёт как собака?

В итоге - ни хрена не понимаю.....

Или лучше поставить какой-то внешний АЦП типа MCP3202?
У него хоть внятно написано
fSAMPLE = 100 ksps and fCLK = 18*fSAMPLE
tSAMPLE = 1.5 clock cycles

По характеристикам меня и внутренний устраивает.
Спасибо.
Stanislav_S
Что то вы ДШ игнорируете совсем sm.gif Там картинки нарисованы и диаграммы, там написано сколько тактов занимает преобразование. Более того есть табличка где написано сколько тактов занимает преобразование для конкретного случая sm.gif
Палыч
Интересующая Вас информация есть в DS в разделе "Analog to Digital Converter", в подразделе "Prescaling and Conversion Timing"
zhevak
1. Честно говоря, я не представляю себе серьезного разработчика без осциллографа...
Поэтому я предполагаю, что ТС все же имеет под рукой хоть какой-нибудь "бациллоскоп".

2. Пара циклов стирания/записи (да еще и на этапе разработки) не сильно сожрут жизненный ресурс микросхемы.

3. Поскольку ТС использует камень с достаточно большим количеством ног (далеко не TINY13!), то наверняка у камня найдется незадействованная нога. В крайнем случае можно взять ногу, которая отвечает за кукую-нибудь второстепенную функцию, которой можно временно пожертвовать ради науки.

Я предлагаю, простите, банальный способ. Повесить на ногу осциллограф (или на худой конец -- светодиодик). Переписать прогу так, что бы после запуска цикла преобразования АЦП проц зажигал ЛЭД, а по после окончания преобразования (по прерыванию или как оно там у Вас сделано) -- гасил. Остается только замерить длительность импульса.

Все это можно реализовать и проверить в течение нескольких минут. Зато результат будет -- достовернее не сыскать! А заодно и железный опыт получите.
hd44780
Цитата(Палыч @ Apr 28 2011, 12:20) *
Интересующая Вас информация есть в DS в разделе "Analog to Digital Converter", в подразделе "Prescaling and Conversion Timing"


Спасибо. Так и казалось, что то-то прозевал wacko.gif .


Цитата(zhevak @ Apr 28 2011, 12:40) *
1. Честно говоря, я не представляю себе серьезного разработчика без осциллографа...
Поэтому я предполагаю, что ТС все же имеет под рукой хоть какой-нибудь "бациллоскоп".

Представьте себе, нету....
Заводские дороги, а до самопальных руки пока не дошли sad.gif ...
Вот и обходимся мультиметром blink.gif

Цитата(zhevak @ Apr 28 2011, 12:40) *
Я предлагаю, простите, банальный способ. Повесить на ногу осциллограф (или на худой конец -- светодиодик). Переписать прогу так, что бы после запуска цикла преобразования АЦП проц зажигал ЛЭД, а по после окончания преобразования (по прерыванию или как оно там у Вас сделано) -- гасил. Остается только замерить длительность импульса.

Импульс короткий - не заметишь biggrin.gif . Можно разве что таймером посчитать и вывести на дисплей. Который уже есть ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.