Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

Разработки ecoins

Библиотеки для разных контроллеров

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#621

Сообщение ecoins » 04.06.2020{, 17:45}

Gordon0007 писал(а):
04.06.2020{, 17:00}
Где это можно переназначить в FLprog?
Мы сейчас создаем новую платформу, там это будет предусмотрено.
Если можете поясните - а какой практический смысл смены пинов i2c на ESP32.
На готовых устройствах (например M5Stack) прибегать к настройке пинов приходиться для совместимости проектов.

Gordon0007
Рядовой
Сообщения: 85
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 12
Откуда: Набережные челны
Имя: Павел

Разработки ecoins

#622

Сообщение Gordon0007 » 06.06.2020{, 09:11}

ecoins писал(а):
04.06.2020{, 17:45}
Если можете поясните - а какой практический смысл смены пинов i2c на ESP32.
Причина простая, на одну шину можно подключить только 8 таких плат, но если их нужно больше, допустим 10шт. Вот второе применение в эти пины просто заняты другими устройствами (дисплеем, часами или просто дискретными сигналами), а переподключать нет возможности и в макетке нет свободного отверстия, так как плата занимает 4 из 5 отверстия.
Снимок.PNG
Причин может быть много, я могу только предположить. Но если есть такая возможность почему бы ей не пользоваться в полной мере.

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#623

Сообщение ecoins » 06.06.2020{, 09:55}

Gordon0007 писал(а):
06.06.2020{, 09:11}
Причин может быть много, я могу только предположить. Но если есть такая возможность почему бы ей не пользоваться в полной мере.
Понятно. Если не вскрывать набор разных нюансов, то подобное использование контроллеров в FLProg лучше избегать.
Это связано связано и с особенностью программного обеспечения для ПЛК - это относится и к FLProg. Приходиться скорее целенаправленно "обрубать" те возможности, которые требуют от пользователя дополнительных знаний аппаратных особенностей контроллера, настраивать дополнительные параметры и т.п.
ПЛК - это и для упрощения. А продвинутые пользователи в принципе могут осуществлять продвинутое программирование на чистом С++ и ассемблере.
-----
Если делать пользовательские блоки на все аппаратные возможности, то система разрастется и "порог вхождения" увеличится.
Насколько я понимаю, разработчик FLProg очень щепетильно относится к росту базовых блоков в системе и это наверное правильно.

Gordon0007
Рядовой
Сообщения: 85
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 12
Откуда: Набережные челны
Имя: Павел

Разработки ecoins

#624

Сообщение Gordon0007 » 06.06.2020{, 12:07}

Добрый день, пользователи программы FLProg

Хочу поделиться с вами результатами испытаний БЛОК ВВОДА-ВЫВОДА mcp23017.
Для начала хочу рассказать причины почему обратился за помощью к ecoins, причины просты я сделал прошивку с использованием стандартного блока mcp23017 на ESP32 и контроллер просто стал зависать. Тогда я начал экспериминтировать и искать причины убрал все лишнее и оставил в прошивке только 2 штуки mcp23017 и собрал на макетке, все провода припаял (чтобы исключить дребизг), на сами MCP23017 припаял светодиоды для индикации их работы. Вот исходник который получился
Проверка MCP23017 урезаная.flp
(661 КБ) 22 скачивания
Зависало по разному:
- дотронулся до проводов - зависло
- подал питание на релюшку - зависло
- сработал дискретный сигнал - зависло
- пошатал контроллер - зависло
- И многое другое необъяснимое
Пытался решить проблему по разному viewtopic.php?f=39&t=6097&sid=c8750cfe0 ... 240#p88326 :
- Игрался с длинной проводов от 25см до 3см - не помогло
- Менял резисты с 10кОм на 4.7кОм..2кОм - помогло, просто стал зависать реже
- Менял источники питания - есть не большой эффект когда работает от батарейки (но на грани самовнушения), ставил конденсатор керамику, электролит и совместно (так и остались висеть параллельно керамика с электролитом)

После того как я намучился и уже почти попустил руки, а мои проблемы с этим модулем не были услышаны разработчиком программы в форуме в ветках "Версия 6.3.х" и "Тестирование версии 7.х". Я начал искать пользовательские блоки на MCP23017 и нашел его тут, сразу скажу (не в обиду ecoins) блок мне был не понятен, пока не было примера его использования, ну и потом дополнилось описание этого блока и слало все понятно.
Проверка MCP23017 урезаная_в03_ESP32_2.flp
(787.09 КБ) 17 скачиваний
Я загрузил его без переделок и начал тестить, свою замечания которые у меня были я писал разработчику блока ecoins. Но правил библиотеку и брал на заметку мое мнение на дальнейшие развитие этого блока.

После того как я разобрался и протестировал встроил ПБ в мою прошивку
Проверка MCP23017 урезаная (ecoins).flp
(403.19 КБ) 26 скачиваний
Функционал аналогичен первой только она НЕ ЗАВИСАЕТ СОВСЕМ!

Испытывал по разному и все тесты прошли на 5 балов
- дотронулся до проводов
- подал питание на релюшку
- сработал дискретный сигнал
- пошатал контроллер
- Игрался с длинной проводов от 25см до 3см
- Резисты припаял на обе 4.7кОм (родные были на одной 10кОм на второй 4.7кОм), решил тестить условно на штатных
- Менял источники питания от импульсных до прерывистого питания с конденцаторами, перепробовал разное
- Эмитировано обрыв одного или другого модуля MCP23017 и обоих сразу. (Сразу скажу не ожидал что пройдет этот тест) Тест прошел отлично после того как подключаешь модуль/модули обратно они продолжают работать практически моментально.
В момент обрыва происходит следующее:
- DI (входы) сбрасываюся на "0" как будто их и не нажимали даже если они были нажаты в момент обрыва связи, после востановления связи сигнал моментально приходит на контроллер "Для меня это нормально и устраивает на все 100%"
- DO (выхода) "не знаю как" сохраняют последние поданные на них данные и пока не востановится связи удерживает эти контакты включенными или выключенными, после востановления связи на модуль приходит именно то состояние контактов которое должно быть по программе, если стоит значение "w". Но есть"НО" У меня стоит значение "W" (W -вывод с записью по изменению.Выполняется при инициализации(1 раз) и при каждом изменении значения регистра), что значит если изменение произошли в момент когда был обрыв связи, то у вас будет висеть старое значение пока не обновится значение следующий раз. "Для меня это не подходит буду ставить значение "w""

Выводы:
В целом впечатление положительное главным образом тем что теперь эти модули можно использовать и приступать к этому проекту с новыми знаниями
Положительные:
- Блок удобен в работе
- не зависает
- не тормозит систему
- имеет тех поддержку
Нейтральные:
-В стандартном блоке можно назначить любой выход как DI так и DO, в ПБ это делается только групой по 8 либа "А" либо "В"
Минусы (да простит меня создатель :D ):
- Требуется дополнительно искать библиотеки (да еще последнюю)
- При использование блока не видно какие пины используются для подключения
- нет возможности смены пинов i2c на ESP32
- нужно добавить обновление после востановление обрыва или потери данных (W -вывод с записью по изменению.Выполняется при инициализации(1 раз) и при каждом изменении значения регистра)

Надеюсь мой отзыв будет кому то полезен и ecoins будет дальше развивать свои ПБ.
Ну а от себя хочу добавить еще раз СПАСИБО!

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#625

Сообщение ecoins » 06.06.2020{, 14:32}

ecoins ,благодарит за развернутый отзыв.
-----------------------------------------------------
И так получилось (время было) реагируем на замечания и предложения.
Gordon0007 писал(а):
06.06.2020{, 12:07}
В момент обрыва происходит следующее:
- DI (входы) сбрасываюся на "0" как будто их и не нажимали даже если они были нажаты в момент обрыва связи, после востановления связи сигнал моментально приходит на контроллер "Для меня это нормально и устраивает на все 100%"
- DO (выхода) "не знаю как" сохраняют последние поданные на них данные и пока не востановится связи удерживает эти контакты включенными или выключенными, после востановления связи на модуль приходит именно то состояние контактов которое должно быть по программе, если стоит значение "w". Но есть"НО" У меня стоит значение "W" (W -вывод с записью по изменению.Выполняется при инициализации(1 раз) и при каждом изменении значения регистра), что значит если изменение произошли в момент когда был обрыв связи, то у вас будет висеть старое значение пока не обновится значение следующий раз. "Для меня это не подходит буду ставить значение "w""
1.По обновлению выходам исправили - в новых версиях это и другое выполним поаккуратнее.
Новую библиотеку версии 2.4 прикрепляю .
RT_11_HW_MCP23017_2.4.ZIP
(12.93 КБ) 31 скачивание
Вроде должно работать, тщательно эту опцию не проверил (занимался шиной i2c на ESP32), теперь и опция W будет восстанавливать значения. Можно добавить выход "обрыв связи", но избегаем добавлять излишние входы/выходы. При желании можете добавить самостоятельно. Это сигнал "z.ok.link" для пользовательского блока.
Gordon0007 писал(а):
06.06.2020{, 12:07}
нет возможности смены пинов i2c на ESP32
2. Это проблема не блока, а то, как удобнее предусмотреть эту опцию для FLProg - интерфейсы могут использовать для разных блоков и для разных контроллеров разных архитектур(AVR,DUE,ESP8266,ESP32,STM32). Настройка для разных контроллеров разная. Сейчас вроде определились с подходом - проходит испытание.
Для Вас сделали блок - он в примере - можно менять номера пинов и частоту шины. Проверил, работает. В примере стоят уже не стандартные параметры!
Проект с настройкой шины i2c для ESP32Показать
Схема mcp23017_v04_ESP32.png
В проекте добавлена первая плата, на которой стоит однократно выполняющийся блок настройки.
3. При более близком знакомстве с библиотекой Wire.h для ESP32 выяснилось:
- она выглядит гораздо приятнее, чем её предшественники;
- как это сказалось на свойствах и огрехах предшественников? Требуются испытания и время.
- по умолчанию стоит частота 100 кГц. Это мало. Проверили замеры для транзакции чтения со входов mcp23017: 100/400/800 кГц -->630/270/210 мкс.
ecoins рекомендует использовать частоту 400 кГц.
-----------------------------
По поводу побитного управления - в широком смысле считаем эту аппаратную возможность к применению на шине i2c злом. Конкретно на шине ESP32 на частоте 100кГц опрос/запись 16 входов/выходов будет занимать 12 мс, вместо 1.3 мс -- почти в 10 раз медленнее.
------------------------------
По поводу Ваших мучений до использования нашего блока mcp23017 ( и библиотеки). Сами сталкиваемся с похожим при работе на макетках.
Чуть пошевелилось и все, что на i2c из стандартных библиотеках Arduino не работает.
В нашей Детской академии доходило до слез - соберет ребенок что-то на макетке и ...
Все наши библиотеки отфильтровывают случайные сбои и поддерживают "горячую" замену.

Аватара пользователя
olddolin
Сержант
Сообщения: 167
Зарегистрирован: 08.09.2017{, 19:47}
Репутация: 10
Откуда: Тверь
Имя: Вадим

Разработки ecoins

#626

Сообщение olddolin » 06.06.2020{, 16:41}

Подтверждаю все вышесказанное, уже год работает пятиканальный блок управления светом на 8266_07+MCP. Пять входов и шесть выходов, шестой технологический для задержки подачи питания на твердотельные реле в момент перезагрузки. Система постпоена на основе блока ecoins, все супер! Ни ложных срабатываний, ни зависаний.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.

vovka1973
Лейтенант
Сообщения: 654
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 20
Откуда: kazahstan

Разработки ecoins

#627

Сообщение vovka1973 » 06.06.2020{, 17:57}

Gordon0007 писал(а):
06.06.2020{, 12:07}
После того как я разобрался
ну раз разобрались то не могли бы ответить ,как узнаете на какой пин идет выход или вход микросхемы что то не могу понять ?
Изображение

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#628

Сообщение ecoins » 06.06.2020{, 18:26}

vovka1973 писал(а):
06.06.2020{, 17:57}
После того как я разобрался
ну раз разобрались то не могли бы ответить ,как узнаете на какой пин идет выход или вход микросхемы что то не могу понять ?
К контроллеру микросхема подключает через i2c (пины SDA,SCL) - на разных контроллерах это разные пины. Нужно не забыть вход reset подтянуть +Vcc.
Вход или выход настраивается через параметры пользователя ПБ.

vovka1973
Лейтенант
Сообщения: 654
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 20
Откуда: kazahstan

Разработки ecoins

#629

Сообщение vovka1973 » 06.06.2020{, 18:30}

ecoins писал(а):
06.06.2020{, 18:26}
Вход или выход настраивается через параметры пользователя ПБ.
вы меня не поняли , я видел в блоке а и в можно на вход и выход ,я говорю про выходы микросхемы как мне сделать 8 входов или выходов на микросхеме вашим блоком где только два А и В и как узнать какой пин микросхемы задействован?
Изображение

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#630

Сообщение ecoins » 06.06.2020{, 20:42}

У микросхемы есть ножки A0,A1...A7 - это регистр А; и ножки B0,B1...B7 - это регистр B.
На пользовательском блоке есть регистры А и B на входе - они задействованы когда соответствующий регистр в пользовательском блоке задействован как "Выход" - это режимы 'W' и 'w'. В этом случае выходы А и В на пользовательском блоке просто не используется.
И все наоборот, если регистры настраиваются на чтение с пинов.
-----
Можно было сделать несколько блоков для разных конфигураций - раньше так и было. Нам не захотелось плодить блоки, и потому вот пока так. Но Вы сами это можете сделать.
----
В новой версии FLProg возможно можно будет добавлять или убирать в пользовательском блоке входы и выходы, но этом попозже будем осваивать.

vovka1973
Лейтенант
Сообщения: 654
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 20
Откуда: kazahstan

Разработки ecoins

#631

Сообщение vovka1973 » 06.06.2020{, 20:54}

ecoins писал(а):
06.06.2020{, 20:42}
У микросхемы есть ножки A0,A1...A7 - это регистр А; и ножки B0,B1...B7 - это регистр B.
получается сколько ног столько блоков ставить?
Изображение

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#632

Сообщение ecoins » 06.06.2020{, 23:23}

vovka1973 писал(а):
06.06.2020{, 20:54}
получается сколько ног столько блоков ставить?
Нет конечно. Посмотрите приложенный проект, будут вопросы - пишите.
Простой проект на mcp23017Показать
Схема mcp23017.png
Проверка MCP23017.flp
(356.66 КБ) 24 скачивания

vovka1973
Лейтенант
Сообщения: 654
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 20
Откуда: kazahstan

Разработки ecoins

#633

Сообщение vovka1973 » 07.06.2020{, 04:17}

ecoins писал(а):
06.06.2020{, 23:23}
будут вопросы - пишите.
СпойлерПоказать
3.JPG
где выделил 1 это что выхода микросхемы? и как можно узнать какие ноги микросхемы , 2 это сюда подавать на вход кнопки переменные можно? можете пример составить 8 переменных на выходе и на входе ?
Изображение

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#634

Сообщение ecoins » 07.06.2020{, 10:47}

vovka1973 писал(а):
07.06.2020{, 04:17}
где выделил 1 это что выхода микросхемы? и как можно узнать какие ноги микросхемы , 2 это сюда подавать на вход кнопки переменные можно? можете пример составить 8 переменных на выходе и на входе ?
Пример прикладываю.
Cхема проектаПоказать
Схема mcp23017_в02.png
Проверка MCP23017 в02.flp
(204.52 КБ) 25 скачиваний
--------------------------------------------------------------------------
8 кнопок (между входами и GND mcp23017) подключены к регистру А.
8 светодиодов (между выходами и GND mcp23017) через резистор 470 Ом подключены к регистру B.
По нажатию кнопки светится соответствующий светодиод.
Обновление данных каждые 50мс, время транзакции 502мкс.
-------------------------------------------------------------------------
!!! Потратил изрядное время и пришел к выводу, что внутренние резисторы подтяжки не всегда выполняют свою функцию - проверил на нескольких микросхемах.
Поэтому входы следует подтянуть к Vcc через резисторы 10-47 кОм.

Gordon0007
Рядовой
Сообщения: 85
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 12
Откуда: Набережные челны
Имя: Павел

Разработки ecoins

#635

Сообщение Gordon0007 » 08.06.2020{, 12:01}

ecoins писал(а):
06.06.2020{, 14:32}
сделали блок - он в примере - можно менять номера пинов и частоту шины.
Такой вопрос, а если блок настроек не поставить работать будет?
Я так понял что работать будет просто на штатных настройках: частоту 100 кГц; пины SDA,SCL согласно контроллеру.

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#636

Сообщение ecoins » 08.06.2020{, 12:09}

Gordon0007 писал(а):
08.06.2020{, 12:01}
Такой вопрос, а если блок настроек не поставить работать будет?
Я так понял что работать будет просто на штатных настройках: частоту 100 кГц; пины SDA,SCL согласно контроллеру.
Все так, как Вы написали.
Опция изменения параметров шины i2c для контроллера по сути является внешней по отношению к блокам пользователя, которые используют эту шину и потому её лучше выполнять через отдельный блок.
В новых разработках этот блок будет универсальным для разных платформ.

Taser
Рядовой
Сообщения: 7
Зарегистрирован: 05.06.2020{, 00:21}
Репутация: 0
Имя: Sergey

Разработки ecoins

#637

Сообщение Taser » 09.06.2020{, 18:43}

Здравствуйте!
У меня проблема, четвертая строка переносится на первую
esp32, hd44780 i2c FLProg-7.0.1
Вложения
Screenshot_1.png
Screenshot_2.png
test lcd.flp
(209.26 КБ) 12 скачиваний

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#638

Сообщение ecoins » 09.06.2020{, 22:16}

Уже новые библиотеки - прикладываю.
05.ДИСПЛЕЙ LCD HD44780.ubl
(468.53 КБ) 26 скачиваний
RT_10_HW_LCD44780_v2.3.zip
(27.49 КБ) 23 скачивания
Попробовал править Ваши пример, но у меня после его загрузки перестал грузиться Arduino IDE (FLProg 6.3.1).
Попробовал перейти в 7.0.1, назад - не помогло. Стер папку \AppData\Roaming\flprog не помогло.
Раньше как-то получалось - а теперь никак.
Так что пока без FLProg...
Если подскажите последовательность преодоления проблемы - быстро набросаю пример.

ecoins
Лейтенант
Сообщения: 655
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 95
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#639

Сообщение ecoins » 09.06.2020{, 23:57}

Прикрепляю проверенный на ESP32 Ваш проект с добавлениями.
Адрес дисплея поменять надо на свой - установлен 63, у Вас 39.
test lcd_newLibrary_02.flp
(252.94 КБ) 24 скачивания
СпойлерПоказать
Схема.png
IMG_2711.JPG

Gordon0007
Рядовой
Сообщения: 85
Зарегистрирован: 19.04.2018{, 13:37}
Репутация: 12
Откуда: Набережные челны
Имя: Павел

Разработки ecoins

#640

Сообщение Gordon0007 » 10.06.2020{, 11:43}

Добрый день,
Хотел узнать, не собираетесь ли вы выпусти блоки и библиотеки для NEXTION дисплеев?
Так как штатные очень тормозят систему. В частности если передавать на дисплей массив 400 точек для графика, контроллер примерно на минуту (67сек) останавливает выполнение основной программы, тем самым если включена защита от зависания контроллер не дождавшись 10 сек просто перезагружается. Так же при работе с этим дисплеем все жалуются на долгий отклик и многое другое.
Заранее спасибо.
Последний раз редактировалось Gordon0007 11.06.2020{, 11:20}, всего редактировалось 1 раз.

Ответить

Вернуться в «Библиотеки пользователей»