Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурация ADC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
fmdost
Доброго времени суток Уважаемые.
Камень at91sam7s256. Не понял какое время и в каком формате необходимо установить для схемы выборки-хранения.
Подскажите правильное значение SHTIM?
Частота 18.432мГц.
Предделитель 18. Разрешение 10 бит.
Спасибо.
defunct
Цитата(Т.Достоевский @ Mar 19 2009, 13:26) *
Подскажите правильное значение SHTIM?

см. AT91F_ADC_CfgTimings ()
aaarrr
Цитата(defunct @ Mar 21 2009, 02:43) *
см. AT91F_ADC_CfgTimings ()

А по-моему, логичнее почитать раздел Electrical Characteristics->ADC Characteristics DS, а потом поставить SHTIM в соответствии с формулками из описания регистров АЦП и параметром Track and Hold Acquisition Time, а не бездумно копировать сомнительный код.
defunct
насчет чтения ДШ - нет возражений, насчет бездумного копирования - тоже абсолютно согласен.

а вот насчет:
Цитата(aaarrr @ Mar 21 2009, 01:56) *
сомнительный код.
Показывает только то, что Вы этот код никогда не использовали и вероятно даже не видели. Я же его пользовал и сверял с даташитом, и раз советую посмотреть, значит имею на то основания. Эта функция представляет собой хорошо читаемую и понятную выжимку из даташита (всего что касается таймингов АЦП - параметры, порядок величин, и формулы, после чего за 5 минут в даташите находятся ответы на все доп вопросы).
fmdost
Ниасилил.
Если у меня частота тактирования АДЦ 1,24 Мгц что соответствует частоте семплирования 102,4кгц. То установив 900наносекунд получается число больше чем 0x0f? И почему его надо ставить вручную когда точно известно количество тактов (время) преобразования?

Вопрос, что означает "время выборки хранения" в представлении Атмел?
aaarrr
Цитата(defunct @ Mar 21 2009, 05:53) *
...Показывает только то, что Вы этот код никогда не использовали и вероятно даже не видели.

Мне бы и в голову не пришло сверяться с этим кодом. Для начинающих же я его считаю абсолютно вредным, хуже только книжки Редькина.

Цитата(Т.Достоевский @ Mar 21 2009, 15:58) *
Ниасилил.

В DS есть параметр Track and Hold Acquisition Time >= 600ns, при частоте тактирования АЦП 1.24MHz будет достаточно одного такта на Sample & Hold, т.е. SHTIM можно установить равным нулю.
fmdost
Цитата(aaarrr @ Mar 21 2009, 18:11) *
В DS есть параметр Track and Hold Acquisition Time >= 600ns, при частоте тактирования АЦП 1.24MHz будет достаточно одного такта на Sample & Hold, т.е. SHTIM можно установить равным нулю.

Спасибо.
Сергей Борщ
Цитата(aaarrr @ Mar 21 2009, 17:11) *
В DS есть параметр Track and Hold Acquisition Time >= 600ns, при частоте тактирования АЦП 1.24MHz будет достаточно одного такта на Sample & Hold,
Стоп. Sample - время выборкки. Т.е. время зарада накопительного конденсатора АЦП до входного напряжения с точностью до 0.5 единицы младшего разряда. Hold - время хранения этого заряда, т.е. время его преобразования в цифру. Атмел, конечно, несколько погорячился объединив эти времена:
Цитата
Converting a single analog value to a 10-bit digital data requires Sample and Hold Clock cycles [...] and 10 ADC Clock cycles.
Время выборки определяется входной емкостью АЦП и сопротивлением источника сигнала плюс проходное сопротивление ключа УВХ. Не зная выходного сопротивления источника сигнала рассчитать время выборки невозможно. Автору вопроса можно посоветовать поставить максимально возможное время.
Цитата(Т.Достоевский @ Mar 21 2009, 14:58) *
Если у меня частота тактирования АДЦ 1,24 Мгц что соответствует частоте семплирования 102,4кгц.
Вы не учитываете время выборки. Частота семплирования будет миниум в 11/10 раз ниже (при одном такте на выборку), т.е. 93КГц.
defunct
Цитата(aaarrr @ Mar 21 2009, 17:11) *
Мне бы и в голову не пришло сверяться с этим кодом. Для начинающих же я его считаю абсолютно вредным, хуже только книжки Редькина.

Не сверяться с этим кодом, а сверить его с даташитом - проверить его правильность.
Вы же пишете что код сомнительный и даже вредный, тем самым автоматически причисляете мой совет - к сомнительным и вредным. Даже не взглянув на код. Так вот такая ни на чем не основанная характеристика, IMHO - сомнительная и вредная.
И с ней я не согласен.

Уж будьте добры потрудитесь посмотреть на код этой функции и объяснить в чем заключается вред.
aaarrr
Уже писал, показывал конкретные ошибки. Повторяться не буду.

Если человек не может подергать пином GPIO без "либы" производителя, то вон из профессии.
defunct
Цитата(aaarrr @ Mar 21 2009, 20:14) *
Уже писал, показывал конкретные ошибки. Повторяться не буду.

Не надо говорить об ошибках в каких-то других функциях библиотеки.
Скажите конкретно, что не так с этой функцией, и в чем состоит ее вред.
Спасибо.
aaarrr
Цитата(defunct @ Mar 21 2009, 21:22) *
Не надо говорить об ошибках в каких-то других функциях библиотеки.

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

P.S. Вполне Вам верю, что в указанной функции ошибок нет.
fmdost
Цитата(Сергей Борщ @ Mar 21 2009, 20:26) *
...Стоп. Sample - время выборкки. ..

...Время выборки определяется входной емкостью АЦП и сопротивлением источника сигнала плюс проходное сопротивление ключа УВХ...

Не знал что внутри нет буферного усилителя cranky.gif
Тоесть SHTIM это время заряда конденсатора УВХ! Тогда понятно что за частоту показывает кейл в окне АДС. А Я голову ломал почему время хранения влияет на частоту семплирования АДЦ!!! Наконец-то разобрался 08.gif beer.gif
Сергей Борщ
Цитата(Т.Достоевский @ Mar 21 2009, 21:54) *
Не знал что внутри нет буферного усилителя cranky.gif
А как же "читать даташит"? cranky.gif
Цитата
36.5.7 ADC Timings
Warning: No input buffer amplifier to isolate the source is included in the ADC. This must be 
taken into consideration to program a precise value in the SHTIM field. See the section ADC 
Characteristics in the product datasheet.
defunct
Цитата(aaarrr @ Mar 21 2009, 20:54) *
Почему это? Тут ходи, а тут не ходи?

Потому что либу пишет не один человек. Следовательно, в ней есть места где можно поучиться, а есть и такие о которых Вы пишете.

Цитата
Вред не в конкретной функции, а в подходе к освоению процессора. Нельзя это делать "через либу" - не научит ничему.

А что мешает сказать то же самое про освоение IP стека? Нельзя это делать через готовую либу - ничему не научит. Тем не менее что-то я мало народу встречал, кто собственноручно с нуля по RFC написал TCP/IP. Как правило большинство пользует либы, многие учатся на uIP, который бесспорно кривой по самые не могу, но это же не значит что он вреден.

Сценарий как можно было воспользоваться либой, чтобы чему-то научиться мог бы быть таким.
Открываем указанную функцию:
Код
//*----------------------------------------------------------------------------
//* \fn    AT91F_ADC_CfgTimings
//* \brief Configure the different necessary timings of the ADC controller
//*----------------------------------------------------------------------------
__inline void AT91F_ADC_CfgTimings (
    AT91PS_ADC pADC, // pointer to a ADC controller
    unsigned int mck_clock, // in MHz
    unsigned int adc_clock, // in MHz
    unsigned int startup_time, // in us
    unsigned int sample_and_hold_time)    // in ns  
{
    unsigned int prescal,startup,shtim;
    
    prescal = mck_clock/(2*adc_clock) - 1;
    startup = adc_clock*startup_time/8 - 1;
    shtim = adc_clock*sample_and_hold_time/1000 - 1;
    
    //* Write to the MR register
    pADC->ADC_MR = ( (prescal<<8) & AT91C_ADC_PRESCAL) | ( (startup<<16) & AT91C_ADC_STARTUP) | ( (shtim<<24) & AT91C_ADC_SHTIM);
}


Находим, что SHTIM считается как

shtim = adc_clock * sample_and_hold_time / 1000 - 1;

Что такое adc_clock понятно без вопросов. sample_and_hold_time в ns дает порядок величины.
Из формулы где округление adc_clock идет до единиц Mhz практически сразу ясно что этот параметр не особо важен и м.б. +/- километр.

Далее идем в ДШ и делаем поиск по ключевой фразе Sample and Hold Time и попадаем вот сюда:

Цитата
The user can drive ADC input with impedance up to:
• ZOUT ≤ (SHTIM -470) x 10 in 8-bit resolution mode
• ZOUT ≤ (SHTIM -589) x 7.69 in 10-bit resolution mode
with SHTIM (Sample and Hold Time register) expressed in ns and ZOUT expressed in ohms.


Все, вопрос по SHTIM решен.

Пользовать функцию или написать свою становится уже делом автора.
aaarrr
Цитата(defunct @ Mar 22 2009, 04:45) *
...в ней есть места где можно поучиться

Нет таких, чесслово.

Цитата(defunct @ Mar 22 2009, 04:45) *
А что мешает сказать то же самое про освоение IP стека?

Не надо путать IP стек и дерганье PIO. AT91lib - это набор примитивнейших функций, написать которые самостоятельно не составляет труда (если, конечно, кому-то вообще может понадобиться столь плинтусный уровень абстракции). Даже "сложная" периферия типа USB и EMAC'а в ней обойдена стороной.
defunct
Цитата(aaarrr @ Mar 22 2009, 03:57) *
Нет таких, чесслово.

Deja vu smile.gif
AT91F_PDC_ReceiveFrame().

Цитата
Не надо путать IP стек и дерганье PIO.

Всякая либа создается главным образом для того чтобы экономить время разработчика и ни к чему не обязывает.
С такой позиции разницы между либой IP стека и либой для дергания PIO - нет.
aaarrr
Цитата(defunct @ Mar 22 2009, 05:14) *
Deja vu smile.gif
AT91F_PDC_ReceiveFrame().

Ничего умного в ней нет. Работа с PDC очень сильно зависит от типа периферии, пытаться работать с USART, SPI и SSC одним и тем же способом - глупость.

Других функций не вспомните?

Цитата(defunct @ Mar 22 2009, 05:14) *
Всякая либа создается главным образом для того чтобы экономить время разработчика и ни к чему не обязывает.

Ну не поможет данная "либа" сэкономить время по причине крайней своей примитивности.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.