Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2017, 20:41

Часовой пояс: UTC + 5 часов



    • JLCPCB for PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Блокировка аппаратных ресурсов
СообщениеДобавлено: 16 май 2017, 17:01 
Только пришел

Зарегистрирован: 26 май 2016, 20:52
Сообщения: 6
Имеется поделка на микроконтроллере. По ходу дела обросла большим функционалом.
Хочется немного рефракторнуть имеющийся код.
Суть проблемы устройство имеет индикацию на 4 светодиодах.
По ним пользователь получает всю необходимую информацию об устройстве.
(со стороны пользователя проблем с восприятием нет).
Проблемы есть у меня как у разработчика.
Состояние Led может изменяться разными модулями программы.
Подключили зарядку - нужно отображать уровень заряда и его статус.
Нажали на кнопку - показывать состояние насоса и клапана.
Зашли в режим настройки - там свои режимы индикации.
Сейчас проверка происходит с помощью if и нужно помнить как это все
связано друг с другом. Правка кода часто приводит к многим ошибкам.
Может кто-то уже имел подобные проблемы - поделитесь опытом?
Сейчас мысль какая - нужно сделать семафор. Захватил ресурс- отдал ресурс.
Перехватить ресурс может только задача с более высоким приоритетом. И необходимо знать кто был хозяином ресурса последнее время?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 16 май 2017, 18:01 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2192
Откуда: Санкт-Петербург
Самый тупой вариант: каждый модуль поддерживает _своё_ состояние (ну там, 4 бита на светодиоды, или ещё как, если светодиод может не только гореть/не гореть, но ещё и мигать с разной частотой) + _одна_ функция отображения, которая выбирает из этих состояний актуальное. Функцию дёргать или по таймеру, или при изменении состояния.
Плюсы: модулям не надо знать друг про друга.
Минусы: некоторый оверхед по памяти и времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 16 май 2017, 18:43 
Только пришел

Зарегистрирован: 26 май 2016, 20:52
Сообщения: 6
Спасибо, проблему решает. Правим только функцию отображения. Память не проблема.
С пищалкой тоже так можно разрулить?
Пищалка может пищать
1. непрерывно (ошибка злая).
2. прерывисто 3 вида ( варнинг).
3. от нажатия по кнопке. (коротко)
Нажатие кнопки сейчас все портит. (буззер ON - задержка 0.2с, буззер OFF )
Выключает если было непрерывно.
Или сбивает КА на мелодии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 16 май 2017, 22:12 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 559
Откуда: Киев
Ключевые слова: системный таймер и конечный автомат. Switch-case с переменной состояния (автоматное программирование).
Можно сделать сколько угодно независимых программ с любым функционалом. Минус - большой объём кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 16 май 2017, 22:13 
Старожил

Зарегистрирован: 05 фев 2013, 00:58
Сообщения: 1925
Откуда: Тольятти
Нужно посадить сверху Хозяина, главного по индикации, и ходить к нему на поклон - "включи, пожалуйста, светодиод номер 1" - и иногда от него получать от ворот поворот: "Вас много, а я один, подождешь. Занят он, индицирует". Ну, и всем задачам расставить приоритеты по важности доступа к телу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 17 май 2017, 01:17 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2192
Откуда: Санкт-Петербург
С пищалкой чутка сложнее, у неё состояние не задаётся 4 битами (для мелодии, к примеру, можно держать номер мелодии и текущую позицию в ней, чтобы после перерыва на бип продолжить воспроизведение), да и меняется чаще. Но, в принципе, тоже можно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блокировка аппаратных ресурсов
СообщениеДобавлено: 17 май 2017, 12:02 
Только пришел

Зарегистрирован: 26 май 2016, 20:52
Сообщения: 6
Спасибо всем за идеи. Вопрос закрыт.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB