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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Конфигурация ADC, at91sam7
fmdost
сообщение Mar 19 2009, 11:26
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Доброго времени суток Уважаемые.
Камень at91sam7s256. Не понял какое время и в каком формате необходимо установить для схемы выборки-хранения.
Подскажите правильное значение SHTIM?
Частота 18.432мГц.
Предделитель 18. Разрешение 10 бит.
Спасибо.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 20 2009, 23:43
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Т.Достоевский @ Mar 19 2009, 13:26) *
Подскажите правильное значение SHTIM?

см. AT91F_ADC_CfgTimings ()
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 20 2009, 23:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

А по-моему, логичнее почитать раздел Electrical Characteristics->ADC Characteristics DS, а потом поставить SHTIM в соответствии с формулками из описания регистров АЦП и параметром Track and Hold Acquisition Time, а не бездумно копировать сомнительный код.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2009, 02:53
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



насчет чтения ДШ - нет возражений, насчет бездумного копирования - тоже абсолютно согласен.

а вот насчет:
Цитата(aaarrr @ Mar 21 2009, 01:56) *
сомнительный код.
Показывает только то, что Вы этот код никогда не использовали и вероятно даже не видели. Я же его пользовал и сверял с даташитом, и раз советую посмотреть, значит имею на то основания. Эта функция представляет собой хорошо читаемую и понятную выжимку из даташита (всего что касается таймингов АЦП - параметры, порядок величин, и формулы, после чего за 5 минут в даташите находятся ответы на все доп вопросы).
Go to the top of the page
 
+Quote Post
fmdost
сообщение Mar 21 2009, 12:58
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Ниасилил.
Если у меня частота тактирования АДЦ 1,24 Мгц что соответствует частоте семплирования 102,4кгц. То установив 900наносекунд получается число больше чем 0x0f? И почему его надо ставить вручную когда точно известно количество тактов (время) преобразования?

Вопрос, что означает "время выборки хранения" в представлении Атмел?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2009, 15:11
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

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

В DS есть параметр Track and Hold Acquisition Time >= 600ns, при частоте тактирования АЦП 1.24MHz будет достаточно одного такта на Sample & Hold, т.е. SHTIM можно установить равным нулю.
Go to the top of the page
 
+Quote Post
fmdost
сообщение Mar 21 2009, 15:22
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



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

Спасибо.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 21 2009, 17:26
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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КГц.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2009, 17:53
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Mar 21 2009, 17:11) *
Мне бы и в голову не пришло сверяться с этим кодом. Для начинающих же я его считаю абсолютно вредным, хуже только книжки Редькина.

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

Уж будьте добры потрудитесь посмотреть на код этой функции и объяснить в чем заключается вред.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2009, 18:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Уже писал, показывал конкретные ошибки. Повторяться не буду.

Если человек не может подергать пином GPIO без "либы" производителя, то вон из профессии.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2009, 18:22
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



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

Не надо говорить об ошибках в каких-то других функциях библиотеки.
Скажите конкретно, что не так с этой функцией, и в чем состоит ее вред.
Спасибо.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 21 2009, 18:54
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(defunct @ Mar 21 2009, 21:22) *
Не надо говорить об ошибках в каких-то других функциях библиотеки.

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

P.S. Вполне Вам верю, что в указанной функции ошибок нет.
Go to the top of the page
 
+Quote Post
fmdost
сообщение Mar 21 2009, 19:54
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(Сергей Борщ @ Mar 21 2009, 20:26) *
...Стоп. Sample - время выборкки. ..

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

Не знал что внутри нет буферного усилителя cranky.gif
Тоесть SHTIM это время заряда конденсатора УВХ! Тогда понятно что за частоту показывает кейл в окне АДС. А Я голову ломал почему время хранения влияет на частоту семплирования АДЦ!!! Наконец-то разобрался 08.gif beer.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 21 2009, 21:50
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Т.Достоевский @ 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.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 22 2009, 01:45
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(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 решен.

Пользовать функцию или написать свою становится уже делом автора.
Go to the top of the page
 
+Quote Post

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

 


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


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