помогите алгоритмом, схоже с многопоточным интерпритатором

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

помогите алгоритмом, схоже с многопоточным интерпритатором

Сообщение aleksandr-zh »

парни, подможите дельным советом!

есть устройство, имеющее 15 входов (кнопка на "землю", но это не существенно)

МК опрашивает эти входы, при нажатии кнопки из внешней EEPROM из ранее заданной области памяти считывается строка, содержащая команды. Т.е., в МК реализовано что-то навроде интерпритатора.
всё понятно и логично: сработал вход - выполнились команды - снова на опрос входов

но возникла необходимости расширения команд, а именно: добавление паузы перед выполнением.
просто заснуть на это время нельзя, так как остальные входы могут изменить своё состояние и надо выполнить соответствующие действия!
т.е., вход1 изменил своё состояние, считываем ранее заданную "программу", выполняем. Встречаем команду Пауза_40_секунд, прекращаем дальнейшее выполнение "программы" входа1, выходим
Вход2 изменяет своё состояние, считываем "программу" входа2, выполняем.
Как только завершилась пауза_40_сек - продолжим выполнение "программы" входа 1

т.е., может быть так, что все 15 входов будут иметь команду Пауза_Х_секунд!

как это правильно реализовать? учитывая, что flash у меня осталось 1.2 кб, и озу - байт 30-40 от силы
Реклама
Аватара пользователя
Chat_vert
Потрогал лапой паяльник
Сообщения: 304
Зарегистрирован: Ср фев 20, 2013 00:46:02
Откуда: РФ

Re: помогите алгоритмом, схоже с многопоточным интерпритатор

Сообщение Chat_vert »

интерпритатор интерпретатор

Возьмите две 155ив1 и с выхода старшей G подайте на прерывание

Такая схема в учебнике была.

Если поможет скажите спасибо бедному студенту. :)
Ваше мнение очень важно для нас. Оставьте своё сообщение в нашей теме.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: помогите алгоритмом, схоже с многопоточным интерпритатор

Сообщение YS »

как это правильно реализовать?
Запилить счетчик времени. Прерывание лишнее есть? Вот в нем инкрементируйте переменную, например, каждые 10 мс.

Если поступила команда на задержку - запоминайте текущее время, ставьте соответствующий флаг в переменной состояния и, пока он стоит, в главном цикле проверяйте, истекло нужное количество времени или нет. Все получится вполне асинхронненько.

Ну и это не интерпретатор, конечно. Скорее это конечный автомат.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ответить

Вернуться в «Разные вопросы по МК»