Страница 14 из 16
Версия 6.3.х
Добавлено: 28 апр 2020, 00:52
support
ecoins писал(а): 27 апр 2020, 22:52
Есть небольшой недостаток - если выключить из компиляции плату, на которой создан контакт, то ошибка компиляции. Не критично, но не удобно.
Упс, не знал. Поправил
Отправлено спустя 20 минут 6 секунд:
av писал(а): 27 апр 2020, 22:14
[ref=#00aa00]support[/ref], проблема при создании в коде пользовательского блока. Ситуация следующая: нужно создать два блока для TFT Adafruit ST7735 дисплея главный блок с декларированием, настройками в секции setup и второй блок вывода текста на дисплей с входами координат, цвета и т.д. Блоки созданы все в порядке редактор не ругается. При компиляции в IDE FLProg почему то добавляет к задекларированому имени свой индентефикатор, который не совпадает с именами второго блока без дополнительного индентификатора. См. скриншоты:
[spoiler title=Секция декларации]Declare.png[/spoiler]
[spoiler title=Секция Setup]Setup.png[/spoiler]
[spoiler title=Секция Loop второго блока]Loop.png[/spoiler]
[spoiler title=Схема блоков]Схема блоков.png[/spoiler]
А вот что происходит в IDE:
[spoiler title=IDE]IDE.png[/spoiler]
Примерно догадываюсь почему так происходит. Дело в том что в библиотеке пользовательских блоков есть очень похожий блок, но только для Adafruit ILI9341 и имена в секции декларации такие же. Но ведь блоки для другого дисплея не используются в данном проекте а программа все равно присваивает свои дополнительные маркеры. Попытался дать другое имя но не позволяет вероятно библиотека это сделать. Подскажите как обойти этот баг ?
Вот для решения как раз таких проблемм и создаётся новый редактор. В текущем такую функциональность не реализовать
Версия 6.3.х
Добавлено: 28 апр 2020, 01:01
ecoins
av писал(а): 27 апр 2020, 23:30
Извиняюсь за каламбур, но мне кажется что попал в тему "У кого больше". Уважаемые форумчане давайте не будем тему по отлову ошибок и багов превращать в дискуссионный зал . Для этих целей есть соответствующие разделы.
В предыдущем посте Вы писали о проблемах ST7735. Подобных проблем подымается много и зачастую вопросы больше к не разработчику, а к библиотекам Arduino, которые в большинстве случаев написаны очень неаккуратно. Когда устройство тестируется одно - вроде проблем нет, когда проект разрастается, начинаются проблемы - то связь оборвалась, то блок тормозит, то конфликты с другими библиотеками. В большинстве случаев автор об этом наверное и знает, но решать эти задачи с общим развитием проекта сложно и трудоемко.
Разработчик на это не раз обращал внимание - все коды написаны только им или взяты внешние библиотеки как есть.
Полагаю, что один из действенных способов поддержки FLProg может быть исследования существующих библиотек, при необходимости их доработка/переработка и разработка новых библиотек, эксплуатация которых могла бы снять много из подымаемых в этой теме вопросов.
Для этого полезны и обсуждения, в том числе и в этой теме - автор её всегда видит.
А вот пресекать обсуждения, как Вы это предлагаете, на мой взгляд , путь неверный и не способствует развитию системы.
------
Тем более в последнее время форум "не страдает" от избытков тем и любое оживление во благо.
Версия 6.3.х
Добавлено: 28 апр 2020, 10:24
rw6cm
[ref=#00aa00]support[/ref],
При инициализации массивов, если размер массива больше 8 (когда появляется вертикальный скроил),
Строки которые ниже 8 не возможно редактировать, (поставить курсор в строку)
можно только стереть в ней информацию и заново написать.
Версия 6.3.х
Добавлено: 28 апр 2020, 10:36
ecoins
av писал(а): 28 апр 2020, 08:48
Повторюсь но причем здесь библиотеки не понимаю если все проблемные действия производит сама программа.
Предположу, то в Вашем случае программа FLProg ничего не производит - производит то, что создает Arduino IDE используя имеющиеся библиотеки указанных устройств. FLProg только генерит код и подключает библиотеки.
Для того, чтобы с этим разбираться, надо смотреть получаемые тексты на C++ и в них пробовать искать и выделять проблемы. Именно такая деятельность могла бы оказать прикладное значение и быть полезной для развития проекта FLProg.
Но это работа тяжелая, ею заниматься - своё время тратить, вникать в системный софт не хочется - проще написать в этой ветке (явно/неявно) разработчику, что вот у Вас в FLprog что-то не так работает, система Ваша, Вы и исправляйте, потому что это кому-то (обычно пишут о проблемах непосредственно того, кто обращается) надо...
Подобные подходы распространены, возможно в них есть и здравый смысл, но я лично такое не одобряю, считаю это потребительским подходом... без особых личных вложений.
Версия 6.3.х
Добавлено: 01 май 2020, 01:07
ecoins
Блок "Детектор изменения строки"
---------------------------------------------
В тестовом примере выявилось, что переменная String для этого блока создается не в секции setup, а в начале секции loop();
---------------------------
void loop()
{
String _tempVariable_String;
--------------------------
Это внешне безобидная конструкция для переменной String на Nano отнимает 35 мкс в каждом цикле loop().
Если убрать эту переменную в секцию Setup, то проблема уйдет сама по себе.
-----------------------
P.S. При разработке системных библиотек ecoins, мы тщательно избавляемся от лишних операций - из ни собираются десятки,сотни мкс - а потом процесс выходит из под контроля.
Переменные String - эта проблема в FLProg, поскольку даже любая операция присваивания отнимает время...
Версия 6.3.х
Добавлено: 04 май 2020, 10:26
ecoins
Определение переменных в DeclareSection "uint8_t d1:4, x1:4;"
приводит к коду "uint8_t d1:4, x1:4_54531062_1;"
---
Т.е. первому элементу не присваивается уникальный номер, только последнему.
Это происходит во всех случаях, когда используются определение переменных через запятую - уникальный номер присваивается только последнему элементу.
Версия 6.3.х
Добавлено: 04 май 2020, 10:52
edyapd
ecoins писал(а): 04 май 2020, 10:26
Определение переменных в DeclareSection "uint8_t d1:4, x1:4;"
приводит к коду uint8_t d1:4, x1:4_54531062_1;
Я давно заметил этот баг. Но использовал его как фичу. Таким образом можно создать глобальную переменную, которую можно использовать в нескольких блоках. Только надо вставить ещё проверку на наличие этой переменной.
Версия 6.3.х
Добавлено: 04 май 2020, 14:20
ecoins
edyapd писал(а): 04 май 2020, 10:52
Я давно заметил этот баг. Но использовал его как фичу. Таким образом можно создать глобальную переменную, которую можно использовать в нескольких блоках. Только надо вставить ещё проверку на наличие этой переменной.
И вот когда возникает потребность уменьшить пространство переменных (создавать переменные размером не только кратные байту), возникают трудности.
Остроумен и любопытен подход по использованию бага как фичу. Неожиданно.
Но это ведь рискованно - а внесет разработчик изменения и начнутся проблемы...

Версия 6.3.х
Добавлено: 04 май 2020, 17:44
support
ecoins писал(а): 04 май 2020, 14:20
Но это ведь рискованно - а внесет разработчик изменения и начнутся проблемы...
В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
Блок пользователя.PNG
Блок пользователя1.PNG
Версия 6.3.х
Добавлено: 04 май 2020, 18:35
holodaleksey
скачал на рабочий комп 6,3,1 портабл, столкнулся с невиданным ранее, типа "разорвимойдисплей", винда10. что посоветуете по настройкам интерфейса?
Версия 6.3.х
Добавлено: 04 май 2020, 19:29
EgorKa
[ref]holodaleksey[/ref], так ведь есть настройки размера шрифтов в FLP.
Версия 6.3.х
Добавлено: 04 май 2020, 20:07
aidar_i
av, у Вас в главном блоке должен стоять галочка на Разрешено использовать в проекте один раз!
Версия 6.3.х
Добавлено: 04 май 2020, 21:52
holodaleksey
EgorKa писал(а): 04 май 2020, 19:29
[ref]holodaleksey[/ref], так ведь есть настройки размера шрифтов в FLP.
А с толщиной рамки как быть?
Да и со шрифтами я не совладал полностью, шапки поменял кое как, а с обозначениями выводов внутри блоков - все никак.
Версия 6.3.х
Добавлено: 04 май 2020, 22:29
ecoins
[/quote]
В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
[/quote]
Ух-ты! Многообещающе...
Версия 6.3.х
Добавлено: 04 май 2020, 22:41
DrMario
Ошибка при редактировании описания пользовательского контроллера. После чего программа выдавала что не может открыть файл, пришлось удалить и загрузить из резервной копии. Один контроллер грохнулся окончательно, не успел сохранить
error.log
Версия 6.3.х
Добавлено: 04 май 2020, 22:49
ecoins
support писал(а): 04 май 2020, 17:44
В новом редакторе этой проблеммы не будет. Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
Здорово и соблазнительно.
Версия 6.3.х
Добавлено: 05 май 2020, 03:11
Cancertanly
[ref]holodaleksey[/ref], в новой программе ведь есть масштабирование рабочего поля. Cntrl+колесо мыши по моему
Версия 6.3.х
Добавлено: 05 май 2020, 05:45
support
holodaleksey писал(а): 04 май 2020, 18:35
скачал на рабочий комп 6,3,1 портабл, столкнулся с невиданным ранее, типа "разорвимойдисплей", винда10. что посоветуете по настройкам интерфейса?
Именно в вашей ситуации рекомендую поиграться с настройкой параметра "шаг сетки привязки"
Отправлено спустя 4 минуты 42 секунды:
DrMario писал(а): 04 май 2020, 22:41
Ошибка при редактировании описания пользовательского контроллера. После чего программа выдавала что не может открыть файл, пришлось удалить и загрузить из резервной копии. Один контроллер грохнулся окончательно, не успел сохранить
error.log
Пришлите мне пожалуйста, файлик который не открывается. Если он конечно сохранился. Надо понять в чем дело. По логу понятно почему он не открывается, но вот почему в список контроллеров затесался Nil, надо разобраться.
Версия 6.3.х
Добавлено: 05 май 2020, 07:02
DrMario
Прошлый файл не сохранил, но ошибка повторяется, если вставить текст в описание контроллера. Текст был с даташита контроллера, копипастил с гугл переводчика. Уже удалил все подозрительные символы но ошибка повторяется. Файл прикрепить не могу, слишком большой.
Попробуйте вставить этот текст в описание контроллера, если вылета не будет, то залью куда нибудь архив.
Не в тему. Напрягает ситуация с дозволенными размерами, попахивает старыми добрым временами и компами на Z80
Документ Microsoft Word.doc
Отправлено спустя 42 минуты 44 секунды:
Опять не в тему...
В некоторых контроллерах, например в STM32 номера выводов в портах I2C и SPI могут назначаться по выбору. Ну как в softserial выводы RX TX.
Вот пример с даташита для одного вывода SPI1_NSS/I2S1_WS, SPI3_NSS/I2S3_WS, USART2_CK, EVENTOUT
Сейчас в флпроге в кастомном контроллере можно назначить вывод только для одной какой нибудь шины. Будет возможность исправить этот недостаток?
Версия 6.3.х
Добавлено: 05 май 2020, 11:06
Ardudue
support писал(а): 04 май 2020, 17:44
Я очень постараюсь выпустить семёрку бэта до 15 го числа. Редактор полностью готов, сейчас интегрирую новый блок в проект.
в новом редакторе на такой код не будет ругаться? в 6,3,1 сейчас не пускает volatile и функции void которые декларирую до void setup()
код:
[spoiler]
Код: Выделить всё
#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,10,11,12,13);
volatile int val_fr = 533; // длительность полупериода f=18000000/val_fr/2(Гц),
volatile int dead_time = 91; // пауза между периодами, не должна быть меньше 92 и больше val_fr-92
byte uk=0;
int f_val, d_val;
float rpm, dtm;
// ********************************************************************
// ********************************************************************
void poluper1(void) {
PORTD&=~(1<<5); // на пин 5 лог 0
PORTD|=(1<<4); // на пин 4 лог 1, формируем первый полупериод
if(dead_time<92) {OCR1A=val_fr; uk=2;} // если пауза меньше 92 тогда она формироваться не будет
else {OCR1A=val_fr-dead_time; uk=1;} // иначе уменьшаем полупериод на длительность паузы чтоб сохранить частоту
}
void dead_time1(void) {
PORTD&=~(1<<4); // на пинах 4 и 5 лог 0, формируем dead_time паузу
OCR1A=dead_time; uk=2;
}
void poluper2(void) {
PORTD&=~(1<<4); // на пин 4 лог 0
PORTD|=(1<<5); // на пин 5 лог 1, формируем второй полупериод
if(dead_time<92) {OCR1A=val_fr; uk=0;}
else {OCR1A=val_fr-dead_time; uk=3;}
}
void dead_time2(void) {
PORTD&=~(1<<5); // на пинах 4 и 5 лог 0, формируем dead_time паузу
OCR1A=dead_time; uk=0;
}
// ********************************************************************
void (*mas[4]) (void)={poluper1, dead_time1, poluper2, dead_time2}; // массив указателей функций
// ********************************************************************
// ********************************************************************
void setup()
[/spoiler]