Быстрая обработка данных со скоростного счетчика

Как организовать быструю обработку результата счета скоростного счетчика

Вопросы от новичков
Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#21

Сообщение Bupper » 02.02.2022{, 13:37}

Sancho писал(а):
01.02.2022{, 22:11}
Вариантов много. Важно до конца понимать задачу, а ТС не всё озвучивает.
А ТС это кто, я?)
Да задача элементарная для знающих людей. А для меня нет. Ну, будем работать.
Dryundel писал(а):
01.02.2022{, 23:18}
Bupper, тестируйте.
Спасибо огромное! Начал разбираться. Пока результат такой: считаю до 800. Все отрабатывает, на дисплее 800 и *. Пробовал даже 5Мгц. Теперь организовываю независимую схему подсчета на дискретной логике для контроля кол-ва импульсов. Результат сообщу попозже.
Не понятно пока с внешним сбросом. Один раз посчитает (режим Остановить счет - подать 1) потом сброс нажимаешь и ничего не происходит. По новой не считает. Может еще не разобрался...

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#22

Сообщение Dryundel » 02.02.2022{, 14:07}

Bupper писал(а):
02.02.2022{, 13:37}
Один раз посчитает (режим Остановить счет - подать 1) потом сброс нажимаешь и ничего не происходит. По новой не считает. Может еще не разобрался...
Посмотрю вечером. Все может быть. Блок не тестировался.

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#23

Сообщение Bupper » 02.02.2022{, 17:41}

У меня что-то не пошел этот блок.
Сброс работает только тогда, когда включена подтяжка на +5 в настройках блока.
Мне она не нужна, я ее отключил.
Считает странно: например, при частоте входного сигнала всего 10Гц и выставленном пределе счета 1000, блок практически за секунду досчитывает до 1000 и выдает сигнал стоп на 19пин.
Я подключил шлейф индикаторов-счетчиков для независимого подсчета импульсов, они при этом успевают показать значение 2 и счет останавливается сигналом с 19пина.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#24

Сообщение Dryundel » 02.02.2022{, 19:23}

Bupper, Вы как то очень смутно объясняете происходящее. Без проекта, схемы и пояснения того, чем Вы генерируете импульсы, сложно понять что не так. К примеру, что означает "шлейф индикаторов-счетчиков", знаете только Вы и Господь Бог.
Как это все реализовано? Что они считают? Совсем не понятно.
Помогите пожалуйста и Вы нам, раскройте карты. В том числе и то, для чего вся эта затея с подсчётом импульсов. Какая конечная цель проекта? А то как в начале темы, говорите одно, а оказывается совсем другое. Приходится массу усилий тратить на догадки.

Отправлено спустя 5 часов 12 минут 14 секунд:
Bupper, в тестовом блоке была одна оплошность. Забыл поставить галку в параметре "Что считаем" -> "Вставлять без скобок" (это в редакторе).
Очень странно что проект вообще компилировался.
Вот исправленный блок попробуйте.

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#25

Сообщение Bupper » 03.02.2022{, 11:51}

Dryundel писал(а):
03.02.2022{, 00:35}
Вот исправленный блок попробуйте.
Заработало как надо! Спасибо огромное! :D
Считает стабильно до 120кГц. Выше начинаются просчеты. Причем просчеты стабильные, на равное кол-во импульсов. Это уже можно нивелировать.
На частоте 200-300кГц просчеты на несколько сотен. Но тут уже могут не успевать считать мои счетчики-индикаторы.
С этим можно уже дальше работать.
Dryundel писал(а):
03.02.2022{, 00:35}
Помогите пожалуйста и Вы нам, раскройте карты.
Да секрета никакого и нет. Просто не хочу вас грузить лишней информацией.
Задача как и была изначально: есть источник внешнего сигнала, импульсы с частотой ДО 300кГц и длительностью около 1мкс. Надо предварительно установить необходимое число импульсов с помощью клавиатуры, перейти в режим ожидания сигнала, начать считать пришедшие импульсы, при равенстве установленного числа и посчитанного числа импульсов подать сигнал на отключение внешнего устройства.
Вот в принципе и все.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#26

Сообщение Dryundel » 03.02.2022{, 13:15}

Bupper писал(а):
03.02.2022{, 11:51}
Считает стабильно до 120кГц. Выше начинаются просчеты. Причем просчеты стабильные, на равное кол-во импульсов.
Да не может такого быть. Вы каким способом проверяете?
Хотя если Вы судите по выходу ОК. То он может запаздывать с сигналом, т. к. находится в основном цикле. А вот на сигнальный пин сигнал точно без задержки приходит.
Выход ОК это только для визуального контроля. Я его вообще не хотел делать. Так уж до кучи получилось.

Отправлено спустя 8 минут 13 секунд:
К стати, выход Cunt тоже в основном цикле. На него данные со счётчика приходят один раз за цикл программы. А в течении цикла сам счётчик может изменяться много раз на большой частоте.
На то он и скоростной счётчик. :)

Отправлено спустя 12 минут 16 секунд:
Bupper, Ваш генератор не может выдавать конкретно заданное число импульсов на установленной частоте? Нет такой функции? Только так можно достоверно проверить.

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#27

Сообщение Bupper » 03.02.2022{, 14:51}

Для проверки кол-ва импульсов использовал счетчики CD4026 с подключенными индикаторами соединенные в шлейф по переполнению. У них предельная частота подачи импульсов 16МГц по паспорту. Сейчас взял у коллег частотомер yokogawa TC110 (до 1ГГц) в режиме подсчета импульсов (TOT). Источник для тестов - генератор АКИП3420. Вроде он не может заданное количество импульсов подавать. Выставляю прямоугольный импульс 5В с длительностью не менее 1мкс.
Результаты что на CD4026, что на частотомере, совпадают:
До 120кГц подсчет нормальный. После начинает появляться пересчет. Свыше 200кГц десятки импульсов, свыше 300кГц - сотни.
Прикладываю схему измерений и плату из FLPROG. Там я использую все по минимуму. Дисплея нет. Отсечка по 19 пину. ОК не использую.
Вложения
PrincCountMes.gif
PrincCountMes.gif (7.47 КБ) 638 просмотров
FCDGEN.gif
FCDGEN.gif (2.98 КБ) 638 просмотров
Последний раз редактировалось Bupper 03.02.2022{, 15:42}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#28

Сообщение Dryundel » 03.02.2022{, 15:32}

Bupper, у Вас в цепочке два логических элемента. Каждый из них имеет время срабатывания, которое в результате суммируется. За это время могут проходить лишние импульсы. Попробуйте взять сигнал на 18 пин после END.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Быстрая обработка данных со скоростного счетчика

#29

Сообщение Ingwar » 03.02.2022{, 16:30}

Bupper писал(а):
03.02.2022{, 14:51}
До 120кГц подсчет нормальный. После начинает появляться пересчет. Свыше 200кГц десятки импульсов, свыше 300кГц - сотни.
Прикладываю схему измерений и плату из FLPROG. Там я использую все по минимуму. Дисплея нет. Отсечка по 19 пину. ОК не использую.
Может дело в несогласованности выхода источника и входа контроллера по сопротивлению...? Может появляется "звон"? Попробуйте шунтировать вход микроконтроллера резистором.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#30

Сообщение Sancho » 03.02.2022{, 16:33}

Bupper, Чисто проба для Вашей схемы PrincCountMes.gif
если в коде поменять местами включаем пин и выключаем пин, то можно убрать со схемы инверсию.
число 5000 меняйте на нужное.
Вложения
Test_mega_count_01.ino
(1.93 КБ) 19 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#31

Сообщение Dryundel » 03.02.2022{, 17:31}

Класс! Почти вся команда в сборе! :smile9:
Мозговой штурм. Приятно. :)

Отправлено спустя 4 минуты 13 секунд:
Bupper, а Вы всё в личку пишете. Смотрите что коллектив то делает! :smile38:

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#32

Сообщение Dryundel » 03.02.2022{, 19:25}

Sancho, а как бы сделать работу с пинами по маске универсальной для всех пинов при выборе?
Я вот вижу два варианта - прописать "портянку" в сетап, но это будет только для AVR или завернуть все это в библиотеку.
А может есть готовые универсальные решения? Может библиотеки подобные уже существуют?

Отправлено спустя 14 минут 20 секунд:
Ха!!! Кажись нашел!
digitalWriteFast.h
Жаль что только для AVR.
Ща замутим! :D

Отправлено спустя 44 минуты 12 секунд:
Bupper, а ну-ка затести супер скорость. :smile38: Отправлено спустя 38 минут 44 секунды:
По заявлению автора digitalWriteFast.h, скорость бешеная!Показать
Для Arduino UNO 16МГц
Без учета основного пустого цикла Loop(), на повтор которого требуется 600ns
Скорость переключения пина свыше 3МГц
.
2.png
https://github.com/NicksonYap/digitalWr ... S/NOTES.md

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#33

Сообщение Bupper » 04.02.2022{, 14:54}

Всем добрый день!
Dryundel писал(а):
03.02.2022{, 15:32}
Каждый из них имеет время срабатывания, которое в результате суммируется
Я это проверил отдельно с помощью осциллографа. Задержек на частотах сотни кГц нет, время срабатывания микросхем серии 155 не более десятков наносекунд.
Логика тут не причем, точно.
Ingwar писал(а):
03.02.2022{, 16:30}
Попробуйте шунтировать вход микроконтроллера резистором.
Попробовал, не помогло. По осциллографу все отлично, фронты хорошие, подложка тоже. Не похоже на несогласованность входных сопротивлений.
Dryundel писал(а):
03.02.2022{, 19:24}
а Вы всё в личку пишете. Смотрите что коллектив то делает!
Спасибо всем! Мне тоже приятно, что вы помогаете)
Dryundel писал(а):
03.02.2022{, 21:03}
ну-ка затести супер скорость
Тут ситуация интересная. Библиотеку вставил, блок поменял. Просчеты остались.
Частота 300кГц. Счет до 20, результат 39. Счет до 500, результат 1248.
Частота 200кГц. Счет до 20, результат 28. Счет до 500, результат 834.
Частота 150кГц. Счет до 20, результат 22. Счет до 500, результат 628.
Частота 120кГц. Счет до 20, результат 20. Счет до 500, результат 500.
Я раздобыл хороший осциллограф Rigol DS4024. Он, при развертке 20кмс может записать 20-30 импульсов до срабатывания сигнала сброса с ардуино.
Все импульсы просчета я видел на осциллографе и контролировал частотомером, который отрабатывал точно.
Вот несколько картинок. Желтый - сигнал на выходе микросхемы И. Синий - сигнал стоп с 19 пина. Даже видно как четко отрабатывает стоп, практически без задержек.
Не равномерный желтый сигнал вначале - это особенность работы генератора. Но импульсы четкие, не раздвоенные, без шумов.

Отправлено спустя 1 минуту 10 секунд:
Все таки мне кажется проблема в ардуино. Не успевает она считать.
Вложения
Newfile4.png
Newfile3.png
Newfile2.png

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#34

Сообщение Dryundel » 04.02.2022{, 15:11}

Bupper, так я не понял, результат то изменился? Улучшился или нет?
И второй вопрос. Санчо скетч выкладывал. Вы его тестировали?

Отправлено спустя 27 минут 45 секунд:
Bupper писал(а):
04.02.2022{, 14:56}
Все таки мне кажется проблема в ардуино. Не успевает она считать.
Кароч. Поискал я инфу, посчитал. Всё так и есть.
У Arduino 16МГц переход из основного цикла в режим прерывания занимает в среднем 5.5мкс плюс счётчик, плюс отработка сигнального пина...
Меньше чем 6.5 - 7мкс не уложиться.
120 кГц это период 8мкс примерно. Так что да, около 130кГц для Дуньки потолок. Увы.

Отправлено спустя 2 минуты 55 секунд:
Но есть и хорошая новость.
До потолка то мы все-таки допрыгнули! :smile171:

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#35

Сообщение Bupper » 04.02.2022{, 15:52}

Результат улучшился, но не намного.
Со старым блоком V0.1:
Частота 300кГц. Счет до 20, результат 45. Счет до 500, результат 1250.
Частота 200кГц. Счет до 20, результат 32. Счет до 500, результат 834.
Частота 150кГц. Счет до 20, результат 25. Счет до 500, результат 627.
Частота 120кГц. Счет до 20, результат 20. Счет до 500, результат 504.
Sancho писал(а):
03.02.2022{, 16:33}
Чисто проба для Вашей схемы
Что-то у меня странное получилось после прошивки. Убрал инвертор. В момент запуска ардуино 19 пин (аппаратный сброс) низкий уровень. В момент старта счета на 19 пине высокий уровень. И все, считает без конца. Потом можно 19 пин сбросить только через сброс 15 пином.
Если инвертор оставить, то считает как раньше.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#36

Сообщение Sancho » 04.02.2022{, 15:55}

Dryundel писал(а):
04.02.2022{, 15:39}
Кароч. Поискал я инфу, посчитал. Всё так и есть.
У Arduino 16МГц переход из основного цикла в режим прерывания занимает в среднем 5.5мкс плюс счётчик, плюс отработка сигнального пина...
Меньше чем 6.5 - 7мкс не уложиться.
120 кГц это период 8мкс примерно. Так что да, около 130кГц для Дуньки потолок. Увы.
Не совсем так.
Есть режим у счётчика от внешнего пина. два такта на импульс. до 8 мгц. плюс время на обработчик прерываний.
СпойлерПоказать
Отклик на выполнение всех разрешенных прерываний AVR составляет минимум 4 тактовых цикла. В течение 4 тактовых циклов после установки флага прерывания выполняется переход по адресу вектора прерывания для выполнения подпрограммы прерывания. В течение этих 4 циклов содержимое счетчика команд (2 байта) опускаются в стек и указатель стека декрементируется на 2. Вектор указывает переход в подпрограмму обработки прерывания и этот переход занимает 3 тактовых цикла. Если прерывание возникнет во время выполнения многоцикловой команды, то команда завершается до начала обслуживания прерывания. Возврат из подпрограммы обработки прерывания (как и вызов подпрограммы) занимает 4 тактовых цикла. В течение этих 4 циклов состояние счетчика команд (2 байта) извлекается из стека и указатель стека инкрементируется на 2. Когда AVR выходит из прерывания, он всегда возвращается в основную программу и выполняет еще одну команду, прежде, чем начать обслуживание какого либо отложенного прерывания.
Отметим, что регистр статуса SREG не обрабатывается аппаратными средствами AVR, ни для прерываний, ни для подпрограмм.
При обработке подпрограмм прерываний, требующих сохранения в SREG, запись должна выполняться программными средствами пользователя. Для прерываний, запускаемых статическими событиями (например совпадение содержимого регистра сравнения 1A с состоянием таймера/счетчика1) флаг прерывания устанавливается в момент наступления события. Если флаг очищен, но условия возникновения прерывания продолжают существовать, флаг не будет устанавливаться до тех пор, пока это событие не наступит вновь.
Отправлено спустя 2 минуты 40 секунд:
Bupper писал(а):
04.02.2022{, 15:52}
Если инвертор оставить, то считает как раньше.
Изначально код под Ваш рисунок.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#37

Сообщение Bupper » 04.02.2022{, 16:02}

Dryundel писал(а):
04.02.2022{, 15:42}
Так что да, около 130кГц для Дуньки потолок. Увы.
Я это опытным путем определил :D

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#38

Сообщение Sancho » 04.02.2022{, 16:03}

Bupper писал(а):
04.02.2022{, 16:02}
Dryundel писал(а):
04.02.2022{, 15:42}
Так что да, около 130кГц для Дуньки потолок. Увы.
Я это опытным путем определил :D
Там тоже. :)
av писал(а):
04.02.2022{, 15:58}
Андрей эти данные давно уже указаны в справке по скоростному счетчику. Нужно было лишь зайти в справку и ознакомиться с этими данными.
Отправлено спустя 3 минуты 28 секунд:
Bupper, Проведём эксперимент № 2 ?
Будем использовать таймер/счётчик и вход в него.
И лучше простой мк 328 - я уже привык к его обозначению регистров.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Bupper
Рядовой
Сообщения: 25
Зарегистрирован: 16.09.2021{, 13:47}
Репутация: 0
Имя: Алексей

Быстрая обработка данных со скоростного счетчика

#39

Сообщение Bupper » 04.02.2022{, 16:14}

Sancho писал(а):
04.02.2022{, 16:07}
Проведём эксперимент № 2 ?
Я готов.

Отправлено спустя 4 минуты 14 секунд:
У меня ардуино UNO есть с МК328

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Быстрая обработка данных со скоростного счетчика

#40

Сообщение Sancho » 04.02.2022{, 16:48}

Bupper писал(а):
04.02.2022{, 16:18}
Sancho писал(а):
04.02.2022{, 16:07}
Проведём эксперимент № 2 ?
Я готов.

Отправлено спустя 4 минуты 14 секунд:
У меня ардуино UNO есть с МК328
Отлично, но сегодня я до 17.00. Может ещё дома сделаю, но завтра точно, завтра на работе.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ответить

Вернуться в «Начинающим»