реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Скорость преобразования АЦП?, Conversion time, KSPS
hd44780
сообщение Apr 28 2011, 08:56
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Использую 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

По характеристикам меня и внутренний устраивает.
Спасибо.

Сообщение отредактировал hd44780 - Apr 28 2011, 09:07


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 28 2011, 09:17
Сообщение #2


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Что то вы ДШ игнорируете совсем sm.gif Там картинки нарисованы и диаграммы, там написано сколько тактов занимает преобразование. Более того есть табличка где написано сколько тактов занимает преобразование для конкретного случая sm.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 28 2011, 09:20
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Интересующая Вас информация есть в DS в разделе "Analog to Digital Converter", в подразделе "Prescaling and Conversion Timing"
Go to the top of the page
 
+Quote Post
zhevak
сообщение Apr 28 2011, 09:40
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



1. Честно говоря, я не представляю себе серьезного разработчика без осциллографа...
Поэтому я предполагаю, что ТС все же имеет под рукой хоть какой-нибудь "бациллоскоп".

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

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

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

Все это можно реализовать и проверить в течение нескольких минут. Зато результат будет -- достовернее не сыскать! А заодно и железный опыт получите.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
hd44780
сообщение Apr 28 2011, 09:57
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(Палыч @ 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 . Можно разве что таймером посчитать и вывести на дисплей. Который уже есть ...

Сообщение отредактировал hd44780 - Apr 28 2011, 09:58


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 23:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016