1
МИКРОКОНТРОЛЛЕРЫ
ї
Таблица 2
Текущее
состояние
автомата
Терминальный
символ
Новое
состояние
автомата
Выходной символ
0
Нажата кнопка
1
Пуск 20 мсек
1
Прошло время
2
Включить красный и пуск время
1
Отпущена кнопка
0
Стоп таймера
2
Прошло время
3
Отключить красный и стоп таймера
3
Нажата кнопка
1
Пуск 20 мсек
3
Отпущена кнопка
4
Пуск 20 мсек
4
Нажата кнопка
3
Стоп таймера
4
Прошло время
0
Стоп таймера
Далее этот процесс повторяется.
Первый вариант гораздо проще в
реализации, но у него есть один не-
достаток - с его помощью нельзя
отсчитывать интервалы времени
короче одного тика таймера. Если
вам необходимо отсчитывать ин-
тервалы с точностью до одной мил-
лисекунды, именно с такой часто-
той и должны поступать тики от ре-
'■
’^ального таймера, а значит, обра-
ботчик прерывания от таймера бу-
дет запускаться 1000 раз в секун-
ду! Сделайте точность отсчета в
10.
..20 микросекунд - и микрокон-
троллер просто захлебнется в пре-
рываниях! Поэтому таким спосо-
бом обычно реализуют виртуаль-
ные таймеры, для которых доста-
точна точность в единицы и десят-
ки миллисекунд. Второй вариант
этого недостатка лишен (там ни
одного лиш него преры вания не
возникает), но в реализации он на-
много сложнее (особенно на мик-
роконтроллерах). Этот вариант ре-
ализации применяют в основном в
т.н.
системах реального времени,
во всех остальных случаях предпо-
читают пользоваться первым вари-
антом.
Итак, расписываем автомат на-
шего устройства
(рис. 3).
Посколь-
ку работа разных кнопок отличает-
ся только временем горения красно-
го светодиода, автомат, очевидно,
будет для всех кнопок одинаковым:
1. М нож ество терм инальны х
символов: {“Нажата кнопка”, “Отпу-
щена кнопка”, “Прошло время”}
2. Множество нетерминальных
символов: 0.
.4
3. Множество выходных симво-
лов: {“Пуск 20 мсек” , “Вклю чить
красный и пуск время”, “Стоп тай-
мера”, “Отключить красный и стоп
таймера”}
4. Начальное состояние автома-
та Ы0 = 0
5. Множество заключительных
состояний пусто.
6. Таблица переходов/выходов
(см.
таблицу 2).
О братите внимание на очень
любопытный переход - из состоя-
ния 3 в состояние 1.
.Согласно ус-
ловиям задачи, в то время, когда
горит красный светодиод, устрой-
ство на нажатия кнопки не реаги-
рует - следовательно, мы можем
щелкать ей, как нам заблагорассу-
дится. Поэтому к моменту погаса-
ния красного светодиода кнопка
может быть либо еще (или уже!)
нажата - и тогда нам ее надо пра-
вильно отпустить (переходы 3 -» 4),
либо отпущена - и тогда нам надо
ее правильно нажать (именно это
и обеспечивает переход 3 -> 1).
Разумеется, можно было бы услож-
нить автомат, заставив его следить
за щелчками кнопки, пока горит
красный светодиод, но данное ре-
шение - более простое.
Реализацию нашего устройства
на этот раз выполним с помощью
интерпретатора автоматной табли-
цы, но предварительно давайте
разберем еще один вопрос. Не-
смотря на то, что таблица автома-
та у нас общая, кнопки, соответ-
ствую щ ие терминальным симво-
лам автомата, подсоединены к раз-
ным линиям порта А. Это значит,
что терминальный символ “Кнопка
нажата” для разных автоматов бу-
дет обозначать совершенно раз-
ные сигналы на линиях порта А.
Точно та к же выходной символ
“Включить красный и запустить за-
держку” в разных автоматах дол-
жен изменять совершенно разные
линии порта В и запускать таймер
на различное время. Из этой ситу-
ации возможны два выхода:
• либо для каждого из автома-
тов должна существовать индиви-
дуальная автоматная таблица (с
индивидуальными программами,
анализирующими и устанавливаю-
щими именно эти сигналы, а не
какие-либо другие)
• либо внутри программ анали-
за или выхода требуется писать на-
бор сложных условий типа “если
это - кнопка 1, то установи линию
3 порта В, а если - кнопка 2, то ус-
танови линию 4 порта В”.
Рис. 3
Прошло время
I
37
Радиолюбитель - 1
2/2005 |
предыдущая страница 34 Радиолюбитель 2005-12 читать онлайн следующая страница 36 Радиолюбитель 2005-12 читать онлайн Домой Выключить/включить текст