Страница 1 из 1
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 12:09
electrobitstorm
Tему с ошибками Flprog (Bug Tracker) не смог найти, буду признателен, если модератор создаст такую... Или укажите мне пожалуйста куда в следующий раз стучаться.
Имеем простенький скетч (рис1), где вторая плата работает в цикле при переменной prog_mode = 1.
Из цикла её выключить кнопкой не получается.
1.jpg
дело оказалось в защите от дребезга...
Если в настройке входа снять галочку защиты и на каждой плате использовать после выхода базовый блок Bounce, то всё работает как надо. (рис2)
2.jpg
Это баг? думаю да, ведь проблемма не очевидна, и проявилась при использовании цикла платы.
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 13:16
Dryundel
electrobitstorm писал(а): 24 фев 2023, 12:09
Tему с ошибками Flprog (Bug Tracker) не смог найти, буду признателен, если модератор создаст такую...
Не надо вам в такую тему. Здесь, в песочнице норм с такими "багами".
[ref]electrobitstorm[/ref], Вы когда о чем то спрашиваете или утверждаете, прикладывайте проект пожалуйста.
Итак, по первому скрину.
Ваша переменная prog-mode, с таким подключением может переключаться только в true. А в плате по условию, только в false.
Как то все очень закручено. никак не могу понять логику того, что Вы хотите добиться.
Поясните пожалуйста основную идею на словах.
Отправлено спустя 20 минут 39 секунд:
Попробую пованговать.
Если Вы просто хотите включать выключать генератор, то плат по условию не нужно.
1.jpg
Если требуется все-таки включать выключать с одной кнопки работу платы, то так.
2.jpg
Для кнопки обязательно включайте подтяжку и инвертируйте выход блока "Вход", если конечно нет физической.
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 13:27
Sancho
При установке режима входа "защита от дребезга" генерируется код, который размещается в начале блока loop. Выход обработанных данных один для всего проекта. Считывание данных со входа - каждый раз в начале цикла.
При использовании блоков - необходимый код вставляется перед каждым входом. Сколько раз используется вход, столько раз будет происходить считывание входа мк и запускаться своя часть кода( со своими переменными) обработки дребезга.
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 13:37
electrobitstorm
Dryundel, если бы всё так просто было... этот маленький скетч сделан мною, чтобы просто и наглядно было... (естественно я это использую в большом проэкте где 5плат и очень много ресурсоёмких блоков и скорость важна)
вторая плата должна работать в цикле (весь остальной скетч при этом останавливается) до смены переменной на ноль
3.jpg
Отправлено спустя 4 минуты 27 секунд:
w4.flp
уберите блоки дребезга и поставьте галку у входа и почуствуйте разницу
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 13:38
Dryundel
electrobitstorm писал(а): 24 фев 2023, 13:32
вторая плата должна работать в цикле (весь остальной скетч при этом останавливается) до смены переменной на ноль
Ну хоть что то стало понятно. Сейчас сделаем...
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 13:48
electrobitstorm
Sancho, я так понимаю, что при использовании Цикла while, в нем не должно ломаться обработка защиты от дребезга входа, он ведь по смыслу должен работать на всё программу, а она ломается
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 14:35
Ingwar
electrobitstorm писал(а): 24 фев 2023, 13:48
обработка защиты от дребезга входа
Банальная установка конденсатора неприемлема?
Или это дело принципа?

Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 14:43
Sancho
electrobitstorm писал(а): 24 фев 2023, 13:48
Sancho, я так понимаю, что при использовании Цикла while, в нем не должно ломаться обработка защиты от дребезга входа, он ведь по смыслу должен работать на всё программу, а она ломается
Как я уже писал
Sancho писал(а): 24 фев 2023, 13:27
При установке режима входа "защита от дребезга" генерируется код, который размещается в начале блока loop. Выход обработанных данных один для всего проекта. Считывание данных со входа - каждый раз в начале цикла.
Поэтому в цикле платы Вы никогда не узнаете о нажатой кнопке.
Обсуждалось уже, один раз точно!
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 14:44
Dryundel
[ref]electrobitstorm[/ref], да, это в принципе можно назвать багом. Санчо правильно сказал.
Sancho писал(а): 24 фев 2023, 13:27
При установке режима входа "защита от дребезга" генерируется код, который размещается в начале блока loop.
И так для каждого входа. Даже если это отдельный вход(кнопка) и используется только в цикле.
.
electrobitstorm писал(а): 24 фев 2023, 13:48
я так понимаю, что при использовании Цикла while, в нем не должно ломаться обработка защиты от дребезга входа
В цикл while этот код не попадает, т.к. находится в Loop. Надо что то придумывать с функцией.
Отправлено спустя 1 минуту 12 секунд:
Sancho писал(а): 24 фев 2023, 14:43
Поэтому в цикле платы Вы никогда не узнаете о нажатой кнопке.
О нажатой кнопке то узнаем. А вот про таймер дребезга увы нет.
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 14:48
Sancho
Обсуждали
тут
Добавлю. Используйте блок bounce, как Вы и сделали, он будет на этой-же плате, и вход ноги мк будет считываться именно в этом месте, а не перед первой платой.
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 14:56
Dryundel
Надо либо прописывать этот кусок в while, либо что то с функцией для антидребезга придумывать.
Отправлено спустя 6 минут 57 секунд:
[ref]electrobitstorm[/ref], а пока могу предложить следующее.
При компиляции скопировать вот такой кусок кода из начала секции Loop и вставить его в начало (можно и в конец) цикла while для платы.
[spoiler]
Код: Выделить всё
bool _bounceInputTmpD2 = (digitalRead (2));
if (_bounseInputD2S)
{
if (millis() >= (_bounseInputD2P + 40))
{
_bounseInputD2O= _bounceInputTmpD2;
_bounseInputD2S=0;
}
}
else
{
if (_bounceInputTmpD2 != _bounseInputD2O)
{
_bounseInputD2S=1;
_bounseInputD2P = millis();
}
}
[/spoiler]
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 15:03
electrobitstorm
Sancho, Dryundel, вот я и пару часов потратил, чтобы это понять.. А ведь Flprog (сделана не для программистов

должна этот момент учитывать... значит в программе нужно дописать, что при использовании цикла все входы, которые используются в цикле, и имеют программную защиту от дребезга, надо ещё раз добавлять bounce (или в справке хотя-бы добавить) иначе ещё не одна тема появится...
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 15:17
Dryundel
electrobitstorm писал(а): 24 фев 2023, 15:03
вот я и пару часов потратил, чтобы это понять.. А ведь Flprog (сделана не для программистов
FLProg для будущих программистов!
Отправлено спустя 1 минуту 46 секунд:
[ref]electrobitstorm[/ref], И может быть как то попроще с проектом? Типа так.
[spoiler]
3.jpg
w4_New.flp
[/spoiler]
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 15:40
electrobitstorm
Так не будет работать... выбрвться из while не получается... только если добавить bounce/
а с таймерами и доп диодами сделано, чтобы наглядней было.. это не проект, а для демонстрации
Не совместимость защиты от дребезга и цикла платы
Добавлено: 24 фев 2023, 16:24
Dryundel
electrobitstorm писал(а): 24 фев 2023, 15:40
Так не будет работать... выбрвться из while не получается... только если добавить bounce/
Для того чтобы работало надо скопировать код в while, как я писал выше.
Или добавить блоки bounce перед триггерами и выключить дебонс в блоке входа, как писал Sancho.
Любой из этих вариантов будет работать.