Конфликт блока Сна.

На этом форуме Вы можете задать вопросы знатокам программы и автору.
av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#1

Сообщение av » 01.12.2017{, 01:04}

Доброго времени суток форумчане ! Есть проект в котором используется пользовательский блок "Сон" от уважаемого Слимпера. Возникла проблема с использованием этого блока. Дело в том ,что вводится ардуинка в сон и выводится из него одной и той же кнопкой ,а именно кнопкой энкодера. Возникает конфликт т.к. прерывание происходит по пину назначеному на эту кнопку. Добавить дополнительную 
кнопку не позволяет сам проект да и нет свободных пинов. Всё управление в проекте берёт на себя энкодер с кнопкой.

При нажатии на кнопку ардуинка должна уходить в сон, но при нажатии на эту кнопку так же срабатывает внешнее прерывание на этом пине и ардуинка просыпается не успев уснуть.

Что посоветуете, как обойти проблемку.
Вложения
333.flp
(389.42 КБ) 56 скачиваний

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#2

Сообщение av » 01.12.2017{, 13:48}

Одну проблему решил ! Но появилась другая.

Решение первой проблемы:

Вначале переменная Sleep_S имеет значение 0 тем самым при подаче питания сразу
вводит ардуину в Сон. После нажатия на кнопку SW на пине 3 происходит внешнее 
прерывание, которое будит ардуину. В этот же момент в переменную Sleep_S записывается 1
блокирую переход в Сон. При долгом нажатии на SW если не активно меню в Sleep_S снова
записывается 0 разрешая и выполняя переход в Сон. Но возникает новая проблема ! При
повторном выводе из Сна. Пробуждения нет, так как блок "Сон_Внешнее_Прерывание"
разрешен на использование только один раз в проекте. Заходим в редактирование блока и
снимаем галочку разрешенно использовать в проекте только один раз. Но вот незадача !!!
После этих манипуляций проект отказывается компилироваться в IDE. Решение мной
видится только обращением к автору блока. Попытаюсь достучаться к пользователю Слимпер
Вложения
7176309.png
4867453.png

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#3

Сообщение pan » 01.12.2017{, 13:54}

av писал(а):После этих манипуляций проект отказывается компилироваться в IDE.
после этих манипуляций флпрог добавляет ко всем именам переменных и функций циферки.  так что надо искать другое решение

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#4

Сообщение av » 01.12.2017{, 14:03}

pan а если при создании пользовательского блока сразу убрать галочку с "Разрешено использовать в проекте только один раз.
Прокатит как вы думаете ?

Добавлено (01.12.2017, 14:03)
---------------------------------------------
Получается вывод из сна только один раз и всё дальше блок у же не работает.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#5

Сообщение pan » 01.12.2017{, 14:06}

не важно когда её убрать. так задумано что бы при использовании одного блока много раз, имена переменных не совпадали.
но некоторые блоки не будут компилиться, как в вашем случае, в них нельзя менять имена, поэтому и стоит галочка.

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#6

Сообщение av » 01.12.2017{, 14:13}

О как.... Тогда что же делать ? Как будить ардуинку не один раз, а когда нужно и многократно ?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#7

Сообщение pan » 01.12.2017{, 14:22}

av писал(а):разрешен на использование только один раз в проекте
кстати это не означает что блок сработает один раз.
просто добавить в проект можно только 1  такой блок.

ищите причину в алгоритме программы

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#8

Сообщение av » 01.12.2017{, 14:43}

А что тут искать. Ведь пробуждение происходит по Внешнему прерыванию при появлении низкого уровня на пине (нажатии кнопки). Больше там никакого алгоритма и логики нет (имеется ввиду логических блоков).
Разбудил и всё. А вот в засыпании присутствует логика возможно там собака зарыта. Команда на сон висит постоянно.
Будем копать дальше.

Но вот ,что странно алгоритм засыпания и пробуждения один раз срабатывает. При повторном вводе в Сон засыпает нормально.
А повторного пробуждения уже нет. Как будто блок уже не работает.
Последний раз редактировалось av 01.12.2017{, 14:47}, всего редактировалось 1 раз.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#9

Сообщение pan » 01.12.2017{, 14:52}

значит перед сном не сбросилась/установилась какая то переменная отвечающая за пробуждение. вот и не реагирует. но это предположение, честно говоря глубоко вникать нет времени

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#10

Сообщение av » 01.12.2017{, 15:16}

Блоки пробуждения и Сна созданы на коде. Может в коде и есть какая нибудь переменная которая
pan писал(а):не сбросилась/установилась какая то переменная отвечающая за пробуждение
Увы в коде я не бум бум   .
Последний раз редактировалось av 01.12.2017{, 15:17}, всего редактировалось 1 раз.

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Конфликт блока Сна.

#11

Сообщение Nikan » 01.12.2017{, 15:20}

кнопкой на пине с прерыванием, инкриминируем  счетчик ,
счетчик сбрасываем по достижении значения  2
сравниваем показания счетчика
 если равен 1 -  вызываем функцию сна.
алгоритм -
прерывание на пине имеет высший статус, соответственно сначала вызовется
функция пробуждения, затем увеличится счетчик, при достижении счетчиком 1
- сон
по идее каждое нажатие должно либо пробуждать, либо баюкать

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#12

Сообщение av » 01.12.2017{, 15:25}

Nikan прошу меня извинить, но если честно я не понял о чём вы написали.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#13

Сообщение pan » 01.12.2017{, 15:34}

посмотрел проект, не нравится он мне...  зачем там тт триггер , да и такие связи переменных трудно отслеживать

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Конфликт блока Сна.

#14

Сообщение Nikan » 01.12.2017{, 15:35}

ща попробую изобразить
Вложения
Sleep_one_key.flp
(122.97 КБ) 66 скачиваний
Последний раз редактировалось Nikan 01.12.2017{, 15:49}, всего редактировалось 1 раз.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#15

Сообщение pan » 01.12.2017{, 15:40}

как то так может заработает
Вложения
123456.flp
(393.27 КБ) 58 скачиваний

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#16

Сообщение av » 03.12.2017{, 12:16}

pan Ваш вариант не работает частично. Засыпает нормально и первое пробуждение работает. Но после второго засыпания больше уже не пробуждается. Скорее всего проблема всё таки в блоке пробуждения по внешнему прерыванию.

Вариант от Nikan мне не подходит так как кнопка ввода и вывода так же используется в проекте (кнопка энкодера). А добавить ещё
одну кнопку не позволяет проект.

Буду дальше ковырять может как-то получится решить проблему.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Конфликт блока Сна.

#17

Сообщение pan » 03.12.2017{, 12:26}

av, вы тестировали этот кусочек или в составе какого то проекта?
просто посудите сами, если просыпается 1 раз, значит дело не в блоках. ну это я так думаю может ошибаюсь.
может попробовать помять срабатывание прерывания по спаду например на изменение. или тип сна поменять. поэкспериментируйте.

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#18

Сообщение av » 03.12.2017{, 12:40}

pan Ваш совет понял. Экспериментировал уже с различными сигналами на входе всего 4 вида этих сигналов. Изменений нет !
А вот режимы Сна не пробовал. Проверю все какие есть в настройках блока. Ещё попробовал поставить блок пробуждения
первым ,что бы обработка кода успевала обрабатывать перемменые блока до засыпания. Эффект тот же. Один раз будит
второй раз отказывается.

Создается такое впечатление ,что блок для одноразового использования (имеется ввиду блок Сон_Внешнее_Прерывание).

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Конфликт блока Сна.

#19

Сообщение Nikan » 03.12.2017{, 13:09}

av писал(а):Вариант от Nikan мне не подходит так как кнопка ввода и вывода так же используется в проекте (кнопка энкодера). А добавить ещё
вы мою идею на работоспособность проверили или нет?
если работает, что мешает сделать запрет счетчику пока
прога в меню находиться?
av писал(а):Ещё попробовал поставить блок пробужденияпервым
еще раз повторю - прерывание на пине имеет наивысший приобретет,
соответственно при нажатии на кнопку СРАЗУ будет выполнен код пробуждения.
независимо от того где этот код в программе. та устроены команды в МК.
если не просыпается - где то сидит постоянная команда - спать

av
Подполковник
Сообщения: 1424
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 127
Имя: Алексей

Конфликт блока Сна.

#20

Сообщение av » 03.12.2017{, 14:10}

Nikan насчет запрета счетчику я чёт не подумал. Попробую развить ваш вариант. О результатах сообщу.

Да и ваш вариант отличается другими блоками Сна и прерывания. Возможно они будут работать в моем проекте.

Добавлено (03.12.2017, 14:10)
---------------------------------------------
Nikan увы и ваш вариант не работает с первоначальной настройкой. Не просыпается. 

После изменения настроек в блоке пробуждение ,а именно сменил сигнал прерывания с пина на LOW.
Ардуинка стала просыпаться ,но тут же засыпает. 

В варианте который предложили вы ни чего не добавлял из своего проекта все переменные не изменял.

Ответить

Вернуться в «Спросить у знатоков»