FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Понедельник, 11.12.2017, 12:21
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей, Олег, Anydy 
Форум » Основной » Спросить у знатоков » Конфликт блока Сна. (Конфликт при входе и выходе из сна одной кнопкой.)
Конфликт блока Сна.
av Дата: Пятница, 01.12.2017, 01:04 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
Доброго времени суток форумчане ! Есть проект в котором используется пользовательский блок "Сон" от уважаемого Слимпера. Возникла проблема с использованием этого блока. Дело в том ,что вводится ардуинка в сон и выводится из него одной и той же кнопкой ,а именно кнопкой энкодера. Возникает конфликт т.к. прерывание происходит по пину назначеному на эту кнопку. Добавить дополнительную 
кнопку не позволяет сам проект да и нет свободных пинов. Всё управление в проекте берёт на себя энкодер с кнопкой.

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

Что посоветуете, как обойти проблемку.
Прикрепления: 333.flp(389Kb)
 
av Дата: Пятница, 01.12.2017, 13:48 | Сообщение # 2
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
Одну проблему решил ! Но появилась другая.

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

Вначале переменная Sleep_S имеет значение 0 тем самым при подаче питания сразу
вводит ардуину в Сон. После нажатия на кнопку SW на пине 3 происходит внешнее 
прерывание, которое будит ардуину. В этот же момент в переменную Sleep_S записывается 1
блокирую переход в Сон. При долгом нажатии на SW если не активно меню в Sleep_S снова
записывается 0 разрешая и выполняя переход в Сон. Но возникает новая проблема ! При
повторном выводе из Сна. Пробуждения нет, так как блок "Сон_Внешнее_Прерывание"
разрешен на использование только один раз в проекте. Заходим в редактирование блока и
снимаем галочку разрешенно использовать в проекте только один раз. Но вот незадача !!!
После этих манипуляций проект отказывается компилироваться в IDE. Решение мной
видится только обращением к автору блока. Попытаюсь достучаться к пользователю Слимпер
Прикрепления: 4867453.png(66Kb) · 7176309.png(120Kb)
 
pan Дата: Пятница, 01.12.2017, 13:54 | Сообщение # 3
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
Цитата av ()
После этих манипуляций проект отказывается компилироваться в IDE.
после этих манипуляций флпрог добавляет ко всем именам переменных и функций циферки.  так что надо искать другое решение
 
av Дата: Пятница, 01.12.2017, 14:03 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
pan а если при создании пользовательского блока сразу убрать галочку с "Разрешено использовать в проекте только один раз.
Прокатит как вы думаете ?

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

 
pan Дата: Пятница, 01.12.2017, 14:06 | Сообщение # 5
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
не важно когда её убрать. так задумано что бы при использовании одного блока много раз, имена переменных не совпадали.
но некоторые блоки не будут компилиться, как в вашем случае, в них нельзя менять имена, поэтому и стоит галочка.
 
av Дата: Пятница, 01.12.2017, 14:13 | Сообщение # 6
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
О как.... Тогда что же делать ? Как будить ардуинку не один раз, а когда нужно и многократно ?
 
pan Дата: Пятница, 01.12.2017, 14:22 | Сообщение # 7
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
Цитата av ()
разрешен на использование только один раз в проекте
кстати это не означает что блок сработает один раз.
просто добавить в проект можно только 1  такой блок.

ищите причину в алгоритме программы
 
av Дата: Пятница, 01.12.2017, 14:43 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
А что тут искать. Ведь пробуждение происходит по Внешнему прерыванию при появлении низкого уровня на пине (нажатии кнопки). Больше там никакого алгоритма и логики нет (имеется ввиду логических блоков).
Разбудил и всё. А вот в засыпании присутствует логика возможно там собака зарыта. Команда на сон висит постоянно.
Будем копать дальше.

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


Сообщение отредактировал av - Пятница, 01.12.2017, 14:47
 
pan Дата: Пятница, 01.12.2017, 14:52 | Сообщение # 9
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
значит перед сном не сбросилась/установилась какая то переменная отвечающая за пробуждение. вот и не реагирует. но это предположение, честно говоря глубоко вникать нет времени
 
av Дата: Пятница, 01.12.2017, 15:16 | Сообщение # 10
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
Блоки пробуждения и Сна созданы на коде. Может в коде и есть какая нибудь переменная которая
Цитата pan ()
не сбросилась/установилась какая то переменная отвечающая за пробуждение
Увы в коде я не бум бум  wacko .


Сообщение отредактировал av - Пятница, 01.12.2017, 15:17
 
Nikan Дата: Пятница, 01.12.2017, 15:20 | Сообщение # 11
Генерал-майор
Группа: Проверенные
Сообщений: 462
Награды: 13
Репутация: 11
Статус: Offline
кнопкой на пине с прерыванием, инкриминируем  счетчик ,
счетчик сбрасываем по достижении значения  2
сравниваем показания счетчика
 если равен 1 -  вызываем функцию сна.
алгоритм -
прерывание на пине имеет высший статус, соответственно сначала вызовется
функция пробуждения, затем увеличится счетчик, при достижении счетчиком 1
- сон
по идее каждое нажатие должно либо пробуждать, либо баюкать
 
av Дата: Пятница, 01.12.2017, 15:25 | Сообщение # 12
Лейтенант
Группа: Проверенные
Сообщений: 106
Награды: 0
Репутация: 1
Статус: Offline
Nikan прошу меня извинить, но если честно я не понял о чём вы написали.
 
pan Дата: Пятница, 01.12.2017, 15:34 | Сообщение # 13
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
посмотрел проект, не нравится он мне...  зачем там тт триггер , да и такие связи переменных трудно отслеживать
 
Nikan Дата: Пятница, 01.12.2017, 15:35 | Сообщение # 14
Генерал-майор
Группа: Проверенные
Сообщений: 462
Награды: 13
Репутация: 11
Статус: Offline
ща попробую изобразить
Прикрепления: Sleep_one_key.flp(123Kb)


Сообщение отредактировал Nikan - Пятница, 01.12.2017, 15:49
 
pan Дата: Пятница, 01.12.2017, 15:40 | Сообщение # 15
Генерал-полковник
Группа: Проверенные
Сообщений: 1226
Награды: 41
Репутация: 38
Статус: Offline
как то так может заработает
Прикрепления: 123456.flp(393Kb)
 
Форум » Основной » Спросить у знатоков » Конфликт блока Сна. (Конфликт при входе и выходе из сна одной кнопкой.)
Страница 1 из 212»
Поиск:

FLProg © 2017
Яндекс.Метрика