FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Пользовательские блоки дополняющие набор стандартных блоков
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
lfgjikjjyj
Сержант
Сообщения: 190
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 20 раз

FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение lfgjikjjyj »

2025-10-25_220651.png
FastAnalogRead_328_168_(Code_-_Professional).ubi
---------------------------------------------------------------------------------------------
FastAnalogRead_328_168_v1.0_(Code_-_Professional).ubi
(добавлен выбор частоты 0,125-1 мгц)

---------------------------------------------------------------------------------------------

На атмегу 328 но и должно работать на 168

Настроено на опроник 5в всё как по умолчанию в флпрог

Если используется 1 канал то без задержки а если более 1 канала то присутствует задержка в 2мкс для стабильности ацп

Для точности 125 кГц
Для скорости (250 кГц, 500 кГц или 1 МГц
)

Использую исключительно для повышения цыклов

Для сравнения берём голый пин и пишет просто в переменную:
- стандартный ардуино аналогрид в флпрог понижает цыклы до примерно 4,5к
- родной пин из флпрог понижает до 6,5к (вероятно приподняли частоту немножко ибо стандартная обёртка слишком медленая)
- мой пин в флпрог понижает до 67к как бы не вау но есть куда похуже результаты (хотя даташит обещал преоброзование в 13мкс а это максимум до 77к цыклов но видимо тут библиотеки флпрога и прочее затормаживает)
это цыфры которые будут становится очень сильно меньше когда будет наращиваться код

К примеру в одном старом проекте у меня дошло что код крутится всего в 200 цыклов в сек почти на издыхании
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось lfgjikjjyj 27 окт 2025, 07:18, всего редактировалось 1 раз.
dstrufanov
Сержант
Сообщения: 215
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 37 раз

Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение dstrufanov »

lfgjikjjyj писал(а): 25 окт 2025, 18:41 ... даташит обещал преоброзование в 13мкс ...
Насколько я помню, в даташите написано не время преобразования 13мкс, а число тактов преобразования, причем после запуска преобразования или смены канала первый цикл 25 тактов, а последующие 13
lfgjikjjyj
Сержант
Сообщения: 190
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 20 раз

Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение lfgjikjjyj »

Ну так пощитайте всю цепочку и получите значение
По умолчанию частота 125кгц
1/125000 имеем 8мкс тактов у нас 13 итого 8*13 получаем 104мкс одно измерение в течение которого процесор ничего не делает кроме обработкой АЦП от сюда и огромная просадка в цыклах

В моём варианте 1/1000000 это 1мкс где 1*13 получим 13мкс затрат времени процесором на обработку АЦП

Но для точных измерений надо использовать 125кгц без вариантов в остальных случаях без разницы если работаете с состояниями к примеру потенциометр через масштабирование приводим к 0-100 то тут мне мой блок без вариантов использую

Но лучше конечно ограничивать итерации запросов к АЦП в ручную а не непрерывным потоком к примеру можно добавить вход на опрос либо создать блок на прерываниях тогда и вовсе луп будет полностью чистым и проц будет работать с другим кодом неотвликаясь на АЦП кроме обработку прерывания это несколько микросекунд на один запрос данных
dstrufanov
Сержант
Сообщения: 215
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 37 раз

Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение dstrufanov »

lfgjikjjyj писал(а): 26 окт 2025, 10:43 104мкс одно измерение в течение которого процесор ничего не делает кроме обработкой АЦП от сюда и огромная просадка в цыклах
Если процессор работает с АЦП по прерываниям, то он может не стоять, а заниматься другими делами. Как только АЦП завершит преобразование, оно вызовет прерывание процессора
lfgjikjjyj
Сержант
Сообщения: 190
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 20 раз

Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение lfgjikjjyj »

В том то и проблема что флпрог игнорирует возможности на прерываниях
Что АЦП взять что входные пины всё в Лупе валяется
А ведь столько возможностей отбрасывается к примеру тот же далас рубит цыкл на 750мс а если по таймеру АЦП кинуть в прерывания не частые и закольцевать буфер данных то и даные не теряются и АЦП паралельно крутится по запросу взял буфер и получил значения
dstrufanov
Сержант
Сообщения: 215
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 25 раз
Поблагодарили: 37 раз

Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино

Сообщение dstrufanov »

lfgjikjjyj писал(а): 26 окт 2025, 11:45 если по таймеру АЦП кинуть в прерывания не частые и закольцевать буфер данных то и даные не теряются и АЦП паралельно крутится по запросу взял буфер и получил значения
Для одного входа и прерывания не нужны - устанавливаете бит ADFR (режим непрерывного преобразования) и каждый раз получаете новые значения
Ответить

Вернуться в «Триггеры, таймеры, счетчики, детекторы сигнала»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей