|
dposhish
|
|
Блокировка аппаратных ресурсов15.05.2017, 16:14. Показов 2939. Ответов 6
Метки нет (Все метки)
Имеется поделка на микроконтроллере. По ходу дела обросла большим функционалом.
Хочется немного рефракторнуть имеющийся код. Суть проблемы устройство имеет индикацию на 4 светодиодах. По ним пользователь получает всю необходимую информацию об устройстве. (со стороны пользователя проблем с восприятием нет). Проблемы есть у меня как у разработчика. Состояние Led может изменяться разными модулями программы. Подключили зарядку - нужно отображать уровень заряда и его статус. Нажали на кнопку - показывать состояние насоса и клапана. Зашли в режим настройки - там свои режимы индикации. Сейчас проверка происходит с помощью if и нужно помнить как это все связано друг с другом. Правка кода часто приводит к многим ошибкам. Может кто-то уже имел подобные проблемы - поделитесь опытом? Сейчас мысль какая - нужно сделать семафор. Захватил ресурс- отдал ресурс. Перехватить ресурс может только задача с более высоким приоритетом. И необходимо знать кто был хозяином ресурса последнее время? |
|
| 15.05.2017, 16:14 | |
|
Ответы с готовыми решениями:
6
Блокировка ресурсов. Блокировка сторонних ресурсов Блокировка интернет ресурсов |
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 15.05.2017, 17:14 | |
|
Самый тупой вариант: каждый модуль поддерживает _своё_ состояние (ну там, 4 бита на светодиоды, или ещё как, если светодиод может не только гореть/не гореть, но ещё и мигать с разной частотой) + _одна_ функция отображения, которая выбирает из этих состояний актуальное. Функцию дёргать или по таймеру, или при изменении состояния.
Плюсы: модулям не надо знать друг про друга. Минусы: некоторый оверхед по памяти и времени.
0
|
|
|
dposhish
|
|
| 15.05.2017, 17:56 | |
|
Спасибо, проблему решает. Правим только функцию отображения. Память не проблема.
С пищалкой тоже так можно разрулить? Пищалка может пищать 1. непрерывно (ошибка злая). 2. прерывисто 3 вида ( варнинг). 3. от нажатия по кнопке. (коротко) Нажатие кнопки сейчас все портит. (буззер ON - задержка 0.2с, буззер OFF ) Выключает если было непрерывно. Или сбивает КА на мелодии. |
|
|
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
|
|
| 15.05.2017, 21:25 | |
|
Ключевые слова: системный таймер и конечный автомат. Switch-case с переменной состояния (автоматное программирование).
Можно сделать сколько угодно независимых программ с любым функционалом. Минус - большой объём кода.
0
|
|
|
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
|
|
| 15.05.2017, 21:26 | |
|
Нужно посадить сверху Хозяина, главного по индикации, и ходить к нему на поклон - "включи, пожалуйста, светодиод номер 1" - и иногда от него получать от ворот поворот: "Вас много, а я один, подождешь. Занят он, индицирует". Ну, и всем задачам расставить приоритеты по важности доступа к телу.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 16.05.2017, 00:30 | |
|
С пищалкой чутка сложнее, у неё состояние не задаётся 4 битами (для мелодии, к примеру, можно держать номер мелодии и текущую позицию в ней, чтобы после перерыва на бип продолжить воспроизведение), да и меняется чаще. Но, в принципе, тоже можно.
0
|
|
|
dposhish
|
|
| 16.05.2017, 11:15 | |
|
Спасибо всем за идеи. Вопрос закрыт.
|
|
| 16.05.2017, 11:15 | |
|
Помогаю со студенческими работами здесь
7
Блокировка ресурсов mail.ru, google.com, yandex.ru и т.д
Блокировка клавиши при нажатии в одной форме и блокировка в другой, третьей Ссылки на файлы ресурсов в скомпилированном .exe (подходы к менеджменту ресурсов)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|