i
МИКРОКОНТРОЛЛЕРЫ
\
jrap
exit
cond 2: bttl
%Ы, 00000001b
; Нажата ли кнопка "торшера" (лог.0)
jnz
exit
; Пока нет - Завершить обработчик
movl
%a0,3
; Теперь новое состояние автомата = 3
btcl
%Ь2,00000001b
; Отключить лампочку.
jmp
exit
cond 3: bttl
%Ы, 00000001b
; Отпущена ли кнопка "торшера" (лог.1)
jnz
exit
.....
; Пока нет - Завершить обработчик
movl
%a0,0
; Теперь новое состояние автомата
0
ex^t:
movl
%dl,00100000b
; <1> Снова разрешить прерывания от порта А
V
rti
; <2> Выход из обработчика прерываний.
.end
По большому счету, новый ва-
риант автомата отличается только
тем, что вместо бесконечного цик-
ла на метку again, как было в пре-
дыдущем варианте, выполняется
переход на метку exit. Меткой exit
помечен участок завершения обра-
ботки прерывания, в котором сле-
дует обязательно выполнить сле-
дующие действия:
1. Сбросить сигнал прерывания,
установленный аппаратурой про-
цессора. Для этого, как правило,
достаточно считать или записать
какую-либо информацию в управ-
ляющий (или - для портов - рабо-
чий) регистр внешнего устройства.
Подобным же образом необходимо
поступать при обработке прерыва-
ний от интервального таймера и
ЭСППЗУ (на этом автор остановит-
ся отдельно).
2. Возвратиться из обработчи-
ка прерываний. Напомним читате-
лю, что возврат из обработчика
прерывания выполняется
только
специальной командой
rti.
^1так, чего же мы добились та-
ким усложненным способом? Да,
теперь микроконтроллер, как тот
нетерпеливый малыш из эпиграфа,
не теребит внешние устройства на
предмет проверки терминального
символа - когда терминальный
символ появится, ему об этом со-
общат. Но ведь зато теперь про-
цессор микроконтроллера боль-
шую часть времени просто стоит,
а раньше он занимался хоть какой-
то работой (хотя правильнее было
бы сказать - имитацией “бурной
деятельности”).
Так вот - вместо команды
wait
вы можете занести в программу
все, что угодно.
Например, вмес-
то нее вы Можете написать некий
кусок программы, наигрывающий
новогоднюю песенку, которая бу-
дет непрерывно “крутиться” в том
месте, где раньше была команда
wait.
Когда вы нажмете (или отпу-
стите) кнопку “торшера”, микрокон-
троллер на краткий миг отвлечет-
ся от наигрывания мелодии, вклю-
чит или отключит лампу “торшера”
и тут же продолжит мелодию. На
слух вы, скорее всего, даже ниче-
го и не заметите! В программистс-
кой литературе для такой постоян-
но выполняющейся в “свободное
время” программы принят специ-
альный термин -
фоновый про-
цесс,
потому что эта программа
выполняется только тогда, когда
микроконтроллер ничем срочным
не занят (например, обработкой
прерываний). Фоновый процесс не
обязательно должен быть таким
примитивным - в нем, например,
может выполняться цифровая
фильтрация сигнала, которая явля-
ется одной из наиболее “затрат-
ных” задач, решаемых с помощью
микроконтроллера, при этом мик-
роконтроллер сохранит свою спо-
собность оперативно отреагиро-
вать на внешние “раздражители”,
каковыми в нашем примере явля-
ется кнопка “торшера”.
Подведем предварительный
итог. Наличие механизма прерыва-
ний в микроконтроллере позволя-
ет разгрузить аппаратуру микро-
контроллера от непрерывных опро-
сов различных сигналов, и позво-
ляет создавать в микроконтролле-
ре
фоновый процесс,
который
может выполнять длинные неспеш-
ные вычисления,заставляя микро-
контроллер, таким образом, зани-
маться несколькими делами одно-
временно.
Механизм прерыввний
идеальным образом ложится на
технологию автоматного про-
граммирования,
потому что тер-
минальные символы автомата, как
правило, имеют однозначное соот-
ветствие тем или иным сигналам
прерывания микроконтроллера.
Все это позволяет микроконтрол-
леру
управлять несколькими ус-
тройствами
или
решать несколь-
ко задач одновременно!
Еще
одно немаловажное достоинство
программирования “от прерыва-
ний”, о котором мы уже вскользь
упоминали -
экономичность в
плане энергопотребления:
при-
менив вместо команды
wait
коман-
ду sip, мы получим устройство со
сверхмалым потреблением энер-
гии, которая будет тратить ее толь-
ко на реальное управление объек-
том, а не на бесконечные опросы
сигналов. Одна маленькая бата-
рейка на годы работы устройства
- это ли не плюс! Поэтому в силу
вышесказанного умение работы с
механизмом прерываний микро-
контроллера является необходи-
мым навыком для радиолюбителя.
ф
Продолжение в №12/2005
\
41
Радиолюбитель - 1
1/2005 |
предыдущая страница 39 Радиолюбитель 2005-11 читать онлайн следующая страница 41 Радиолюбитель 2005-11 читать онлайн Домой Выключить/включить текст