#26 2017-12-07 12:16:27

Vlad17
Гость

Re: analogRead() — прощай

Вячеслав Азаров пишет:

Простите, но програмпмное обеспечение Ардуино везде и всегда тупо ждет и на это транится большая часть вычислительного ресурса. И изменить эту ситуацию невозможно без полной переработки "стандартного" программного обеспечения.

Я так и написал, что это другой вопрос, т.е. к данному обсуждению непосредственно не относящийся.

#27 2017-12-07 13:51:40

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: analogRead() — прощай

Если уж измерять с точностью до мкс, хорошо бы иметь флаг преобразования, а время складывать в буфер, а затем уже выводить. А уже тогда можно и с float-ами, если сильно нравится.)

#28 2017-12-07 14:56:57

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 565

Re: analogRead() — прощай

Vlad17 пишет:

Другой вопрос, что пока проводится преобразование, контроллер может своими делами заниматься, а в analodRead он тупо ждет выставление флага. Вот и вся магия ускорения analogRead

Vlad17 пишет:

Я так и написал, что это другой вопрос, т.е. к данному обсуждению непосредственно не относящийся.

Относяшееся! В новой версии, кое где, введена поддержка кооперативной многозадачности. Больше 15kSPS для 10 разрядов не получится (а это около 1000 циклов процессора, если речь идет о мегах). Но куда мне со "Свинячим рылом в калашный ряд!". Разберетесь сами.

#29 2017-12-07 16:06:31

Vlad17
Гость

Re: analogRead() — прощай

Вячеслав Азаров пишет:

Относяшееся! В новой версии, кое где, введена поддержка кооперативной многозадачности.

Ну может быть... Я имел в виду, что это не относится к скорости АЦП и его настройкам. Сколько задач не запусти, а конвертация произойдет ровно за отведенное количество тактов.

Вячеслав Азаров пишет:

Больше 15kSPS для 10 разрядов не получится (а это около 1000 циклов процессора, если речь идет о мегах).

Не знаю что имеется в виду под "циклами процессора", но действительно по даташиту больше 15kSPS не получить на 10 битах разрешения. Что напрямую коррелирует с диапазоном 50-200Khz ADC. Только, если речь идет о мегах в стандартном дуиновском 16Mhz исполнении, то получить те самые 15килосемплов в секунду c 10bit разрешением... Подскажете как?

Вячеслав Азаров пишет:

Но куда мне со "Свинячим рылом в калашный ряд!". Разберетесь сами.

Это вы зря.

#30 2017-12-07 18:16:46

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 565

Re: analogRead() — прощай

Vlad17 пишет:

Не знаю что имеется в виду под "циклами процессора", но действительно по даташиту больше 15kSPS не получить на 10 битах разрешения. Что напрямую коррелирует с диапазоном 50-200Khz ADC. Только, если речь идет о мегах в стандартном дуиновском 16Mhz исполнении, то получить те самые 15килосемплов в секунду c 10bit разрешением... Подскажете как?

У AVR один цикл процессора это одна простая инструкция. У Ардуино он настроен на на частоту 16 МГц а АЦП настроен на максимальную производительность, доступную с этой частотой. Вы можете установить делитель частоты АЦП на коэффициент деления 64 а не 128, как у ардуино, получив тактовую частоту АЦП 250кГц, это несколько больше предельной но, как правило, всегда имеется технологический запас. Если будет работать - получится 18kSPS. Считывать можно той-же analogRead(_) или, что лучше, сделать эффекивное управлеие АЦП самому.

#31 2017-12-08 09:47:01

Vlad17
Гость

Re: analogRead() — прощай

Вот да, на это я и намекал - 250Khz это как бы на 1/3 больше рекомендованного диапазона. При правильной настройке там и 19kSPS получить можно. Работать будет - по докам косвенно указано, что до 1Mhz АЦП разгонять можно. Только надеяться на 10bit даже при 250Mhz я бы уже не стал, хотя прямого указания на сколько падает точность при повышении частоты я в свое время ни где не нашел.

#32 2017-12-08 11:22:05

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: analogRead() — прощай

Разгонял до 1 МГц, работало. Про точность не скажу, нужно было отслеживать больше/меньше относительно среднего значения.

#33 2017-12-08 13:01:45

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 310

Re: analogRead() — прощай

Кстати, по скорости через прерывание не самое быстрое решение. Ждать не надо, но  опрос быстрее. Но это и так всем понятно.)

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела