Блок мультиплексора 74HC4051 из скетча
Блок мультиплексора 74HC4051 из скетча
Добрый день.
есть скетч работы мультиплексора 74HC4051 я попробовал создать пользовательский блок Посмотрите пожалуйста правильно ли я его сделал?
Правильно ли назначил и присвоил типы данных на входы и выходы блока?
есть скетч работы мультиплексора 74HC4051 я попробовал создать пользовательский блок Посмотрите пожалуйста правильно ли я его сделал?
Правильно ли назначил и присвоил типы данных на входы и выходы блока?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Naladchik
- Капитан
- Сообщения: 899
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 21 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
Блок мультиплексора 74HC4051 из скетча
Добрый день и спасибо за ответ, а то я уж было отчаялся.Naladchik писал(а): 19 апр 2021, 07:47Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
принцип и описания работы, впрочем как и сам скетч, я взял отсюда
как вытащить отправку в сериал порт не представляю да и не знаю засем
1. Нет входа задания канала. Каналы перебираются по циклу. Как определить с какого канала поступили данные?
2. Нет выхода данных с канала. Как Вы планируете использовать в программе данные с этого блока?
3. Внутрь блока вставлен вывод в сериал порт - могут быть конфликты с другими частями/блоками программы.
1) в порядке очередности через точку с запятой
2) 3) за это не знаю - а как правильно
1) а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?1. Два входа. Разрешение работы блока и задание номера опрашиваемого канала.
2. Один выход. Данные с опрашиваемого канала.
3. Номера пинов для подключения модуля должны задаваться в параметрах блока, а не его выходами
2) один выход с данными есть
3) если честно не понял
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок мультиплексора 74HC4051 из скетча
Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
в блоке поменяй под свои пины.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Naladchik
- Капитан
- Сообщения: 899
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 21 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
[ref]Ushakovkz[/ref],
Код из Вашего блока:
...
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
...
Получается если на канале нет сигнала "Mux1_State[(х)] < 100", то на выходе блока значение - "a(х+1) = (х+1)",
иначе, если есть сигнал то на выходе блока нуль - "a(х+1) = 0"
Как то нелогично, или это так и задумано?
Код из Вашего блока:
...
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
...
Получается если на канале нет сигнала "Mux1_State[(х)] < 100", то на выходе блока значение - "a(х+1) = (х+1)",
иначе, если есть сигнал то на выходе блока нуль - "a(х+1) = 0"
Как то нелогично, или это так и задумано?
Блок мультиплексора 74HC4051 из скетча
делал блок под свои нужды, "опрос кнопок".
Если не нажимать кнопку то на выходе 1023, при нажатии прыгает от 20 до 0 поэтому от поставил от фонаря "< 100"
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
если номер в массиве равен 0 и значение меньше 100 - записать в переменную int а1-1, иначе а1 = 0
if(Mux1_State[1] < 100) {a2 = 2; } else {(a2 = 0);}
если номер в массиве равен 1 и значение меньше 100 - записать в переменную int а2 - 2, иначе а2 = 0
...................................................................и.т.д.
Отправлено спустя 17 минут 17 секунд:
вот пример, делал на скорую руку.
Если не нажимать кнопку то на выходе 1023, при нажатии прыгает от 20 до 0 поэтому от поставил от фонаря "< 100"
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
если номер в массиве равен 0 и значение меньше 100 - записать в переменную int а1-1, иначе а1 = 0
if(Mux1_State[1] < 100) {a2 = 2; } else {(a2 = 0);}
если номер в массиве равен 1 и значение меньше 100 - записать в переменную int а2 - 2, иначе а2 = 0
...................................................................и.т.д.
Отправлено спустя 17 минут 17 секунд:
вот пример, делал на скорую руку.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Labu559
- Лейтенант
- Сообщения: 359
- Зарегистрирован: 25 янв 2018, 22:23
- Откуда: Bukovyna
- Имя: Василий
- Поблагодарили: 1 раз
Блок мультиплексора 74HC4051 из скетча
С таким подходом, даже при успешной реализации Вашего проекта играть вживую/совершенствовать технику игры/получать удовольствие на таком инструменте будет невозможно. Время от нажатия клавиши до начала воспроизведения семпла (ноты) должно быть как можно меньше и не превышать ~20mSec (из моего практического опыта) и так-же с отпусканием клавиши/прекращением воспроизведения. Повторю для концентрации внимания: для живой игры, а не запуска секвенсера (лупа) как на многих подобных видео из Youtube (например). Для примера в моем Roland-е рассинхронизация (задержка) живой игры с автоакомпаниментом равна 7 mSec. При использования в качестве семплера внешнего устройства (особенно програмного, VST/DXi) задержка соответственно увеличивается. Нужно чистить всё лишнее, разбивать микропрограмму на отдельные части/выполняемые только по определённому условию/совпадению условий. Применение аналогового мультиплексора для МИДИ клавиатур связано по моему мнению с аналоговыми сигналами от клавиатуры для определения скорости нажатия клавиши и послекасания (MIDI parameters- velocity,aftertouch). Для саксофона роль первого параметра задается (вероятно) датчиком давления воздуха. Другие аналоговые параметры МИДИ (или SysEx сообщения) для GM их 128 не являются настолько критичными к скорости отработки. На мой взгляд нажатие/отпускание клавиш должно обрабатываться мгновенно, по внешнему прерыванию, запускать алгоритм определения ноты (номер клавиши/сочетания клавиш - к счастью это одноголосный инструмент) и уровня её громкости, а остальные параметры (в том числе легато), рассчитываться и корректироваться уже по ходу воспроизведения семпла. Это моё личное мнение и опыт использования (не проектирования !!!) клавишных инструментов и можете игнорировать это сообщение при наличии твёрдой уверенности в успешном исходе Вашего начинания.konsys писал(а): 19 апр 2021, 11:18 а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?
Я рассмотрел эту тему в контексте этой другой темы ув. ТС, как общий подход к программированию МК.
Последний раз редактировалось Labu559 20 апр 2021, 14:46, всего редактировалось 1 раз.
-
Naladchik
- Капитан
- Сообщения: 899
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 21 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Не подскажете?
кто нибудь сможет помочь с таким блоком, реально уже не туда копаю.
viewtopic.php?p=102787#p101858
кто нибудь сможет помочь с таким блоком, реально уже не туда копаю.
viewtopic.php?p=102787#p101858
Блок мультиплексора 74HC4051 из скетча
Собрал макетку - буду пробовать 4 варианта программ мультиплексораUshakovkz писал(а): 20 апр 2021, 06:49 Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
Давайте в данной теме обсуждать мультиплексор, а инструмент в другой теме.
-
Labu559
- Лейтенант
- Сообщения: 359
- Зарегистрирован: 25 янв 2018, 22:23
- Откуда: Bukovyna
- Имя: Василий
- Поблагодарили: 1 раз
Блок мультиплексора 74HC4051 из скетча
Какой именно мультиплексор предлагаете обсуждать? Тот, что в 1-м сообщении? О нём уже всё сказано в сообщении ув. [ref]Naladchik[/ref], и более добавить нечего.
[spoiler title=5 -й вариант для случая, если стенка окажется крепче черепа:][/spoiler]konsys писал(а): 21 апр 2021, 15:32 Собрал макетку - буду пробовать 4 варианта программ мультиплексора
Странно, помогаешь человеку, а в ответ получаешь словесные гадости и минусы, как бы на 51-ом уже, не "молодо-зелено".
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:04, всего редактировалось 1 раз.
Блок мультиплексора 74HC4051 из скетча
[ref]Labu559[/ref], я вижу, что у вас собран проект в Протеусе. Если вы ещё не удалили его, попробуйте загнать в него вот это
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Naladchik
- Капитан
- Сообщения: 899
- Зарегистрирован: 04 окт 2015, 19:10
- Откуда: Новосибирск
- Имя: Павел
- Благодарил (а): 21 раз
- Поблагодарили: 22 раза
Блок мультиплексора 74HC4051 из скетча
Ну тогда и я свой вариант предложу, может кому то будет интересно.
Версия FLP 7.3.5
Вся необходимая информация в описании блока.
Из особенностей: пины задаются в самом блоке, 2 режима работы (номер канала/все каналы).
Вся необходимая информация в описании блока.
Из особенностей: пины задаются в самом блоке, 2 режима работы (номер канала/все каналы).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Labu559
- Лейтенант
- Сообщения: 359
- Зарегистрирован: 25 янв 2018, 22:23
- Откуда: Bukovyna
- Имя: Василий
- Поблагодарили: 1 раз
Блок мультиплексора 74HC4051 из скетча
Здравствуйте ув. Эдуард, рад Вашему возвращению! По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние [spoiler title= Симуляция и схема.][/spoiler]edyapd писал(а): 22 апр 2021, 05:03 [ref]Labu559[/ref], ... попробуйте загнать в него вот это Multiplexer74HC4051_v2.flp
Конечно интересно, по крайней мере мне, спасибо Вам! Тоже работает отлично! [spoiler title= До кучи:][/spoiler]
Вам успехов и всем нам меньше агрессии и больше уважения в конце Большого Поста и накануне Светлого Праздника!
Исправил вторую симуляцию в Протеусе.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:21, всего редактировалось 1 раз.
Блок мультиплексора 74HC4051 из скетча
Благодарю за помощь, честно говоря не ожидал, что столько человек откликнется!
Работа исходного кода
Хочу сказать сразу
Возможно я сделал ошибки в создании и подключении блоков и метода перебора
Мультиплексор от Naladchik написал в личку
Код от Ushakovkz я не понял как правильно назначить пины ардуино
Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения
Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил
Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления
Работа исходного кода
Хочу сказать сразу
Возможно я сделал ошибки в создании и подключении блоков и метода перебора
Мультиплексор от Naladchik написал в личку
Код от Ushakovkz я не понял как правильно назначить пины ардуино
Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения
Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил
Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось konsys 22 апр 2021, 14:05, всего редактировалось 2 раза.
Блок мультиплексора 74HC4051 из скетча
Спасибо, что опробовали. Да, я забыл упомянуть о сигнале выбора микросхемы мультиплексора, там изменения всё правильно. Ну а кнопки они конечно никак не влияют, так как не участвуют в коде.Labu559 писал(а): 22 апр 2021, 10:25 По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние
Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал. Сперва со старыми данными, потом с обновлёнными. И кажется я нашёл причину. Нужно в блок отправки, на вход send подавать сигнал разрешения с выхода R-триггера, который разрешает запись переменной Input(в моём проекте). В вашем думаю тоже можно обойтись косметическими изменениями, чтобы не было двойной отправки.
Теперь из личного опыта работы с мультиплексорами. Я не использовал 4051, не знаю как она будет работать. Использовал её советский аналог КП2. Так вот, при напряжении питания 3.3В, её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор. Но для моего проекта это было не критично, так как я собирал данные по освещённости и влажности.
Второе, пока я искал как избавиться от мусора на выходе мультиплексора, наткнулся на обсуждение снятия сигнала с DRUM-установки. Там тоже боролись с тем, что шёл перенос сигнала с предыдущего канала. При этом чем сильнее был сигнал, тем он сильнее влиял. Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его. И считывание производить чередуя с ним. Например 0 вход заземлён, тогда считывание будет выглядеть как 1-0-2-0-3-0-4-0-5-0-6-0-7-0-1.....
Либо находить задержку на считывание, после переключения адресов.
-
Labu559
- Лейтенант
- Сообщения: 359
- Зарегистрирован: 25 янв 2018, 22:23
- Откуда: Bukovyna
- Имя: Василий
- Поблагодарили: 1 раз
Блок мультиплексора 74HC4051 из скетча
Ув.Эдуард, нет повода для смущений. Включив порядок выполнения блоков, всё становится на свои места- отправка в UART по изменению данных, сначала отправляется значения счётчика, потом значение АЦП и это две (вторая и предпоследняя) части одной строки. На самом деле данные по отдельности меняются один раз. [spoiler title= Конечно в наших проектах можно вывод в монитор легко поправить: ][/spoiler] А в проекте Ув. Павла это все происходит неразрывно (атомарно?) в пользовательском блоке.edyapd писал(а): 22 апр 2021, 13:18 Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал.
И я о том же, об практическом опыте, потому у меня в проекте стоит слабо подтягивающий к земле аналоговый выход резистор, и в момент переключения я сначала кратковременно отключаю выход мультимплексора (подаю HIGH на INH), пока идет расчёт данных, а PULLDOWN делает свою работу с А0. Кроме того в наших версиях можно использовать несколько мультиплексоров на единственном общем аналоговом входе и на уже используемых (тоже общие для всех) цифровых А, В, С, управляя по отдельности выводом INH для каждого мультиплексора раздельными выходами МК. Для таких именно случаев у меня отдельный INH, а не на земле постоянно.edyapd писал(а): 22 апр 2021, 13:18 ...её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор...Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его...
Приятно вести разговор с людьми, которые понимают о чём речь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 17:09, всего редактировалось 4 раза.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя
