Раньше стоял по умолчанию FBD, сейчас нужно, оказывается, выбирать. Сейчас только увидел

Раньше стоял по умолчанию FBD, сейчас нужно, оказывается, выбирать. Сейчас только увидел
Провел эксперимент: Удалил из существующего проекта переменную и заменил ее на клемму. Разница в размере скетча = 0, а разница в используемой переменными памяти исчисляется единицами байт. Не такой уж большой выигрыш в памяти. Может надо проект переписывать полностью или я не так что-то делаю, но факт остается фактом. Пошел дальше. При замене в проекте 3-х переменных типа int и 2 типа boolean на клеммы разница в памяти под переменные = 8 байт., а размер скетча остался неизменным.ussrtk писал(а): 14 янв 2019, 12:00В перечне базовых элементов есть "клемма". Очень прикольный блок: создаете в одной плате переменную и теперь можете подключать к ней блоки в других платах.
Ранее вы подключали саму переменную из другой платы - но тогда компилятор создавал каждый раз новую глобальную переменную и тратил память. А при использовании клемм память расходуется экономнее.
Когда у вас связей между платами немного или вы все делаете в одной плате - это вам не нужно. А в сложных проектах очень и очень кстати.
Можно на примере? Во вложении был пример. Как там это делается? Буду рад учится. Спасибо.Sancho писал(а): 15 янв 2019, 11:13Для того, что-бы не дублировать код, нужно код завернуть в функцию, блок сделать одноразовым, что-бы имя функции не удрало, а в остальных - просто вызывать функцию со своими параметрами.
Вопросы к автору блока.
Я тоже экспериментировал над оптимизацией, загоняя повторяющиеся куски в пользовательские блоки, после того, как сам Автор отметил, что пользовательские блоки вызываются, как функция, что позволяет экономить память. Видимо, неверно понял.
[/spoiler]support писал(а): 16 дек 2018, 19:18Если использовать пользовательские блоки на FBD или LAD то это именно так и работает. То есть код самого блока вынесен в функцию (при многократном его использовании код не дублируется), а в месте его применения просто вызывается эта функция. Блоки на С немного по другому устроены, но там то же можно подобный функционал написать. Те кто их пишет - поймут какRedSky писал(а): 16 дек 2018, 19:12Внесу предложение в плане развития возможностей программы. Как насчёт создать блок пользователя-функцию. Смысл в том чтобы использовать один и тот же код в разных частях проекта. К примеру расчёт температуры от нескольких терморезисторов с разных аналоговых входов. Сейчас придётся использовать одинаковые блоки на каждый датчик (значительный расход ресурсов для одинаковых действий) или создавать свой блок с функцией на нужное количество датчиков.
[ref=#404040]Alias[/ref], Речь о коде на С++support писал(а):Блоки на С немного по другому устроены, но там то же можно подобный функционал написать.
Так клеммы и предназначены для замены переменных (где это возможно), и облегчения коммутации между платами.ItsMe писал(а): 15 янв 2019, 11:18ри замене в проекте 3-х переменных типа int и 2 типа boolean на клеммы разница в памяти под переменные = 8 байт., а размер скетча остался неизменным.
Это касается блоков FBD и LADAlias писал(а): 15 янв 2019, 11:36что пользовательские блоки вызываются, как функция, что позволяет экономить память
Этот выигрыш будет существенным, если переменных ну очень много, у меня был проект, где памяти для переменных не хватало около 10 байт(тогда еще не умел оптимизировать код), не полезло в Уно, пришлось купить Леонардо, там памяти для переменных больше.
Счастливого пути!!!support писал(а): 15 янв 2019, 11:44Ну всё, убегаю на автобус. Три дня в дороге, так что абонент не абонент))))))
Действительно. У меня версия 303, в ней только и пишу, чтобы хоть что-то сваять без неожиданностей
Да, в FBD и делал, у меня трехканальная система для бойлерной и дублируются по сути основные алгоритмы трижды. Пробовал ради интереса повторяющиеся схемы загонять в пользовательские блоки, чтобы в Нано поместилось, но выгод вообще не заметил, видимо, тот еще ламер. Пришлось много оптимизировать иначе.
Да, теоретически так и должно быть: тело скетча не изменяется, меняется занятость динамической памяти для переменных. Так что ваш эксперимент, вроде, поучился...ItsMe писал(а): 15 янв 2019, 11:18Провел эксперимент: Удалил из существующего проекта переменную и заменил ее на клемму. Разница в размере скетча = 0, а разница в используемой переменными памяти исчисляется единицами байт. Не такой уж большой выигрыш в памяти. Может надо проект переписывать полностью или я не так что-то делаю, но факт остается фактом. Пошел дальше. При замене в проекте 3-х переменных типа int и 2 типа boolean на клеммы разница в памяти под переменные = 8 байт., а размер скетча остался неизменным.ussrtk писал(а): 14 янв 2019, 12:00В перечне базовых элементов есть "клемма". Очень прикольный блок: создаете в одной плате переменную и теперь можете подключать к ней блоки в других платах.
Ранее вы подключали саму переменную из другой платы - но тогда компилятор создавал каждый раз новую глобальную переменную и тратил память. А при использовании клемм память расходуется экономнее.
Когда у вас связей между платами немного или вы все делаете в одной плате - это вам не нужно. А в сложных проектах очень и очень кстати.
Нет, Вы не один! Давно уже акцентирую внимание на этом)))
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя