Ассемблерная вставка в FLProg

Создаем свой блок. Вопросы, помощь знатоков.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Re: Ассемблерная вставка в FLProg

Сообщение ecoins »

dstrufanov писал(а): 05 май 2025, 10:37 Пишу блок МодбасРТУ слейв, CRC рассчитываю табличным методом ради скорости, таблица размещается во флеш. Для работы с флеш подключаю библиотеку "avr/pgmspace.h", но флпрог перед загрузкой ардуино ругается, что не видит ее, при том, что сама ардуина молчит. На результат вроде не влияет, но хотелось бы понять, что не так?
2025-05-05_10-31-44.png
Известная проблема, на которую можно не обращать внимание.
FLProg проверяет наличие библиотек в папках libraries - таких папок две.
Подключаемая библиотека в ядре - \FLProg его не проверяет.
Если вы Вы не отключали библиотеку #include "flprogUtilites.h", то в Вашем случае таких проблем не было бы.
Но Вы наверное оптимизируете свою работу под Nano...
Есть приемы для обхода предупреждения - мы ими пользуемся, но в Вашем случае это вряд ли важно.
Не обращайте внимание на указанные предупреждения - они на компиляцию не влияют.
С уважением, ecoins
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:53, всего редактировалось 1 раз.
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:53, всего редактировалось 2 раза.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Re: Ассемблерная вставка в FLProg

Сообщение ecoins »

dstrufanov писал(а): 17 май 2025, 19:47
dstrufanov писал(а): 05 май 2025, 20:06 Даже не под нано, хочу слейв (8 дискретных входов и 4 коила) уместить в atmega48 с 4кБ флеши, а FlprogUtilities съедает чуть ли не 3кБ
Спасибо!
Вот так примерно виделся мне этот слейв (модуль расширения):
2025-05-17_19-14-30.png
Скетч занимает 2766 байт памяти программ и 851 байт ОЗУ, т.е. помещается в мегу48.
Плата 1 это системный генератор на таймере с прерываниями. Платы 2 и 3 выполняются от его синхросигналов.
Плата 2 это МодбасРТУСлейв, который по прерываниям складывает входные данные USART в буфер, в цикле обрабатывает кадр и формирует в буфере ответ, который потом по прерываниям отправляется мастеру. Поддерживаются скорости 9600, 19200, 38400 и 76800, команды 0х01, 0х02, 0х05 и 0х0F.
Плата 3 это 8 дискретных входов с антидребезгом и 4 дискретных выхода (коила).

Поскольку я очень плохо ориентируюсь в Си, подскажите кто-нибудь, как из разных функциональных блоков работать с одним и тем же буфером в ОЗУ. Он у меня объявляется в блоке МодбасРТУСлейв как глобальный массив (byte buffer[256];) и я думал, что его указатель (buffer[0]) будет виден в скетче другим блокам (входам и выходам). Но оказалось, что это не так. Пришлось объявить указатель и в блоках ввода/вывода, но я теперь не уверен, что это одна и та же переменная во всех блоках.
Т.е. компилятор понимает, что переменная buffer[0] лежит в нулевой ячейке массива buffer[256]?
Вы пожалуй выбрали не посильную задачу(протокол Modbus) и не подходящие средства (здесь надо полностью делать на С++) без блоков, они сами по себе потребляют память. А средства, которыми пользуется разработчик(меню слева), Вам не доступны технически.
В принципе Вы можете попробовать заменить библиотеки Modbus разработчика на собственные попроще с таким же API - но это потребует глубоких знаний С++.
И в воздухе так и висит вопрос: "Зачем такая трудоемкая работа, когда уже сделана хорошая работа - надо только выбрать подходящий недорогой чип"? Выбор чипов большой.
С уважением, ecoins.
lfgjikjjyj
Сержант
Сообщения: 100
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 6 раз

Re: Ассемблерная вставка в FLProg

Сообщение lfgjikjjyj »

для STM8S103F3P6 который пишется кодом асемблера либо С вероятно и влезет по оперативе но опять же она должна что то считывать с каких то датчиков им тоже надо место

примерно понятно сколько
поже тоже планировал модбас ей запихать и читать какойнить одиночный датчик
на данный момент это пока самый дешманский мк за 30руб и вполне удобной пайкой и не обделёный портами но память как украли
но пока он смотрится куда интереснее тини и 168
я его даже одно время расматривал как идеальный расширитель портов к примеру кинул связь по уарту и делай вкл выкл либо чтение кнопок особенно по прерыванию их там вроде 6шт
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:52, всего редактировалось 2 раза.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Re: Ассемблерная вставка в FLProg

Сообщение ecoins »

dstrufanov писал(а): 18 май 2025, 08:29
ecoins писал(а): 17 май 2025, 23:29 И в воздухе так и висит вопрос: "Зачем такая трудоемкая работа, когда уже сделана хорошая работа - надо только выбрать подходящий недорогой чип"? Выбор чипов большой.
Зачем люди делают из УАЗиков бигфуты и лезут в грязь, когда можно купить какой-нить приличный седанчик и ездить по асфальту? Выбор авто большой
У меня все влезает в мегу48, даже 3 буфера по 256 байт, хотя они не нужны в данной задаче (работа с дискретными входами и выходами)
Достаточно точно сформулировали - кому-то нравится грязь. И ездить хочется по грязи.
Даже есть уже хорошо построенные дороги - в данном случае современные и недорогие чипы.
С другой стороны то, что Вы пытаетесь делать, возможно расширит Ваши компетентности в С и Ассемблере.
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:52, всего редактировалось 1 раз.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Re: Ассемблерная вставка в FLProg

Сообщение ecoins »

dstrufanov писал(а): 18 май 2025, 21:12 Так и не получилось у меня объявить глобальную переменную для работы с ней из любого функционального блока. Это особенность ФЛП, она при сборке проекта присваивает индексы переменным, что делает все переменные блоков локальными.
Придется делать дополнительные входы инпутам и коилам для задания им указателя на их таблицы и соединять их проводным или именованным соединением. Что поделаешь, придется ездить в этой грязи :D
Вы видимо пользуетесь базовым редактором.
Там можно объявить глобальную переменную указав "однократное" использование.
В профессиональном редакторе возможностей побольше.
Еще Вы можете создать глобальные переменные во внешней библиотекой и пользоваться этими переменными.
А можно взять недорогой, но современный чип.
Например этот.
https://aliexpress.ru/item/100500574819 ... 5303134775
----
Вы достаточно активны на форуме и могли бы много полезно сделать, добавить, поучаствовать.
Хочется, чтобы Вы разрешили тем или иным способом поставленные задачи и возможно взялись бы за задачи связанные с новыми версиями FLProg.
----
Успехов.
С уважением, ecoins.
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:52, всего редактировалось 1 раз.
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:51, всего редактировалось 2 раза.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Re: Ассемблерная вставка в FLProg

Сообщение ecoins »

dstrufanov писал(а): 28 май 2025, 13:11
ecoins писал(а): 17 май 2025, 23:29 Вы пожалуй выбрали не посильную задачу(протокол Modbus) и не подходящие средства (здесь надо полностью делать на С++) без блоков
С уважением, ecoins.
Таки осилил непосильную задачу на неподходящем ассемблере :D :
2025-05-28_11-51-08.png
Проверил работу функций 0х01, 0х02, 0х05 (чтение/запись инпутов и коилов) на скоростях 9600, 19200, 38400. Скорость 76800 тоже заложена, но не поддерживается МастерOPC, поэтому не проверил. Вот проект слейва на 8 инпутов и 4 коила, кто хочет, может поизучать или попробовать:
ModbusRTUSlave.flp
C интересом посмотрел Ваш проект.
Впечатлен объемом сделанной работы, Вашей тщательностью и настойчивостью.
Не удалось запустит проект - возможно в последний момент были изменены функциb void Input(x,y,z) - у меня не компилируется:
Modbus_assem.png

-------------------------
Вы реализовали посильную задачу - протокол Modbus на на ассемблере.
И достигли поставленной Вами цели.
Однако для среды Arduino IDE и FLProg предложенное решение не вполне приемлемо.
Arduino IDE создана была прежде всего для простого использования разработчиком разных контроллеров.
Ваш проект ориентирован на устаревший микроконтроллер семейства AVR.
У FLProg гораздо более широкие цели относительно Arduino IDE - визуализация проектирования, поддержка многоплатформенности прозрачной для конечного пользователя, многозадачность в режиме реального времени, быстрая адаптация новых процессоров и контроллеров.
При всем при этом Вы проделали большую работу с которой было интересно познакомиться.
С уважением, ecoins.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

Re: Ассемблерная вставка в FLProg

Сообщение Naladchik »

dstrufanov писал(а): 28 май 2025, 13:11 Таки осилил непосильную задачу на неподходящем ассемблере :D :
Впечатляет!
Компилируется без проблем.
1.png
Успехов в дальнейших изысканиях.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:51, всего редактировалось 1 раз.
lfgjikjjyj
Сержант
Сообщения: 100
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 6 раз

Re: Ассемблерная вставка в FLProg

Сообщение lfgjikjjyj »

Ну тут как раз таки на Arduino Приходится их опрашивать по сути-то
А вот зачем их на тех опрашивать я не понимаю есть же пины прерывания в большем количестве чем на Arduino но функция не реализована для них в флпроге
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

Re: Ассемблерная вставка в FLProg

Сообщение Rovki »

lfgjikjjyj писал(а): 29 май 2025, 18:16 Ну тут как раз таки на Arduino Приходится их опрашивать по сути-то
А вот зачем их на тех опрашивать я не понимаю есть же пины прерывания в большем количестве чем на Arduino но функция не реализована для них в флпроге
У вас клавиша "," не работает?
Электронщик до мозга костей и не только
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:50, всего редактировалось 2 раза.
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

Re: Ассемблерная вставка в FLProg

Сообщение Rovki »

dstrufanov писал(а): 30 май 2025, 08:12
Naladchik писал(а): 29 май 2025, 08:10 Успехов в дальнейших изысканиях.
Благодарю! Новосибирску привет, я на Лежена жил :)
А я на Карла Маркса :yes:
Электронщик до мозга костей и не только
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

Re: Ассемблерная вставка в FLProg

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:50, всего редактировалось 1 раз.
Ander
Лейтенант
Сообщения: 508
Зарегистрирован: 31 окт 2023, 12:50
Имя: Андрей
Благодарил (а): 21 раз
Поблагодарили: 94 раза

Re: Ассемблерная вставка в FLProg

Сообщение Ander »

а я на затулинке
Ответить

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

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

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