---------------------------------------------------------------------------------------------
(добавлен выбор частоты 0,125-1 мгц)
---------------------------------------------------------------------------------------------
На атмегу 328 но и должно работать на 168
Настроено на опроник 5в всё как по умолчанию в флпрог
Если используется 1 канал то без задержки а если более 1 канала то присутствует задержка в 2мкс для стабильности ацп
Для точности 125 кГц
Для скорости (250 кГц, 500 кГц или 1 МГц)
Использую исключительно для повышения цыклов
Для сравнения берём голый пин и пишет просто в переменную:
- стандартный ардуино аналогрид в флпрог понижает цыклы до примерно 4,5к
- родной пин из флпрог понижает до 6,5к (вероятно приподняли частоту немножко ибо стандартная обёртка слишком медленая)
- мой пин в флпрог понижает до 67к как бы не вау но есть куда похуже результаты (хотя даташит обещал преоброзование в 13мкс а это максимум до 77к цыклов но видимо тут библиотеки флпрога и прочее затормаживает)
это цыфры которые будут становится очень сильно меньше когда будет наращиваться код
К примеру в одном старом проекте у меня дошло что код крутится всего в 200 цыклов в сек почти на издыхании
FastAnalogRead_328_168 высокоскоростной ацп для ардуино
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
lfgjikjjyj
- Сержант
- Сообщения: 190
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 20 раз
FastAnalogRead_328_168 высокоскоростной ацп для ардуино
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось lfgjikjjyj 27 окт 2025, 07:18, всего редактировалось 1 раз.
-
dstrufanov
- Сержант
- Сообщения: 215
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 37 раз
Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино
Насколько я помню, в даташите написано не время преобразования 13мкс, а число тактов преобразования, причем после запуска преобразования или смены канала первый цикл 25 тактов, а последующие 13
-
lfgjikjjyj
- Сержант
- Сообщения: 190
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 20 раз
Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино
Ну так пощитайте всю цепочку и получите значение
По умолчанию частота 125кгц
1/125000 имеем 8мкс тактов у нас 13 итого 8*13 получаем 104мкс одно измерение в течение которого процесор ничего не делает кроме обработкой АЦП от сюда и огромная просадка в цыклах
В моём варианте 1/1000000 это 1мкс где 1*13 получим 13мкс затрат времени процесором на обработку АЦП
Но для точных измерений надо использовать 125кгц без вариантов в остальных случаях без разницы если работаете с состояниями к примеру потенциометр через масштабирование приводим к 0-100 то тут мне мой блок без вариантов использую
Но лучше конечно ограничивать итерации запросов к АЦП в ручную а не непрерывным потоком к примеру можно добавить вход на опрос либо создать блок на прерываниях тогда и вовсе луп будет полностью чистым и проц будет работать с другим кодом неотвликаясь на АЦП кроме обработку прерывания это несколько микросекунд на один запрос данных
По умолчанию частота 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 высокоскоростной ацп для ардуино
Если процессор работает с АЦП по прерываниям, то он может не стоять, а заниматься другими делами. Как только АЦП завершит преобразование, оно вызовет прерывание процессораlfgjikjjyj писал(а): 26 окт 2025, 10:43 104мкс одно измерение в течение которого процесор ничего не делает кроме обработкой АЦП от сюда и огромная просадка в цыклах
-
lfgjikjjyj
- Сержант
- Сообщения: 190
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 20 раз
Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино
В том то и проблема что флпрог игнорирует возможности на прерываниях
Что АЦП взять что входные пины всё в Лупе валяется
А ведь столько возможностей отбрасывается к примеру тот же далас рубит цыкл на 750мс а если по таймеру АЦП кинуть в прерывания не частые и закольцевать буфер данных то и даные не теряются и АЦП паралельно крутится по запросу взял буфер и получил значения
Что АЦП взять что входные пины всё в Лупе валяется
А ведь столько возможностей отбрасывается к примеру тот же далас рубит цыкл на 750мс а если по таймеру АЦП кинуть в прерывания не частые и закольцевать буфер данных то и даные не теряются и АЦП паралельно крутится по запросу взял буфер и получил значения
-
dstrufanov
- Сержант
- Сообщения: 215
- Зарегистрирован: 07 янв 2024, 12:43
- Имя: Дмитрий
- Благодарил (а): 25 раз
- Поблагодарили: 37 раз
Re: FastAnalogRead_328_168 высокоскоростной ацп для ардуино
Для одного входа и прерывания не нужны - устанавливаете бит ADFR (режим непрерывного преобразования) и каждый раз получаете новые значенияlfgjikjjyj писал(а): 26 окт 2025, 11:45 если по таймеру АЦП кинуть в прерывания не частые и закольцевать буфер данных то и даные не теряются и АЦП паралельно крутится по запросу взял буфер и получил значения
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость