и
МИКРОКОНТРОЛЛЕРЫ
і
Таблица 2. Векторы прерываний микроконтроллера АТТшу15
Адрес
Назначение
0x0000
Сброс микроконтроллера, начальный адрес запуска программы
0x0001
Внешнее прерывание
0x0002
Прерывание по изменению сигналов на линиях порта В
0x0003
Прерывание от регистра сравнения А таймера 1
0x0004
Прерывание по переполнению таймера 1
0x0005
Прерывание по переполнению таймера 0
0x0006
Прерывание по завершению операции с ЭСППЗУ
0x0007
Прерывание от аналогового компаратора
0x0008
Прерывание по завершению операции оцифровки сигнала АЦП
разберем позднее). Список векторов
прерываний приведен в
таблице 2.
Регистр маски общих прерываний
С1М8К управляет прерываниями по
векторам 0x0001 и 0x0002. Формат ре-
гистра:
- бит 6 - разрешено прерывание от
линии порта В[2] (внешнее прерывание)
с вектором 0x0001;
- бит 5 - разрешено прерывание при
изменении сигнала на любой из линий
порта В с вектором 0x0002.
Остальные биты регистра не ис-
пользуются и должны быть установле-
ны в лог.0. Регистр общих прерываний
01РЬ имеет точно такую же структуру и
хранит в соответствующих битах лог. 1,
если прерывания не было, и лог.О-если
прерывание произошло. Если прерыва-
ние произошло, и была вызвана соот-
ветствующая программа обработки, со-
ответствующий бит в этом регистре ав-
томатически сбрасывается (сбрасыва-
ется, в данном случае, означает уста-
новку в
лог.1
!). Таким образом, при вхо-
де в соответствующий обработчик пре-
рываний соответствующий бит в реги-
стре СI Б1_ всегда оказывается сброшен-
ным, и никакой пользы от его анализа
программе нет. Если же прерывания в
данный момент были запрещены, то в
этом случае можно, путем опроса и ана-
лиза соответствующего бита, в любой
момент определить, имело ли место то
или иное прерывание. В этом случае
бит прерывания можно сбросить и вруч-
ную, занеся в него лог.1. Это - факти-
чески альтернативный способ исполь-
зования механизма прерываний - “пре-
рывания без прерываний”. В микрокон-
троллере КР1878ВЕ1 регистры, анало-
гичные Э1РЦ также присутствуют, но
они скрыты от программиста и про-
граммнонедоступны. Итак, программи-
сту АТПпу, и вообще, любых А№пе1, в
отличие от КР1878ВЕ1, доступны два
способа обработки прерываний - “клас-
сический”, связанный с автоматичес-
ким вызовом обработчика прерыва-
ний, и “ручной”, когда программа сама
опрашивает соответствующие биты в
регистрах прерываний и определяет,
какое именно прерывание произошло.
На взгляд автора, “классический” спо-
соб в любом случае предпочтительнее
механизма опроса (в том числе в пла-
не экономичности), о чем он доста-
точно недвусмысленно высказался в
предыдущем цикле статей, тем не ме-
нее, возможность “ручного” опроса ока-
зывается в некоторых случаях весьма
полезной.
Регистр маски прерываний от тай-
меров TIMSK управляет прерываниями
по векторам 0x0003, 0x0004 и 0x0005.
Его формат:
- бит 6 - разрешено прерывание по
совпадению содержимого счетного ре-
гистра таймера 1 (TCNT1) и регистра
сравнения таймера 1 (OCRA1) с векто-
ром 0x0003;
- бит 2 - разрешено прерывание по
переполнению таймера 1 с вектором
0x0004;
- бит 1 - разрешено прерывание по
переполнению таймера 0 с вектором
0x0005.
Остальные биты регистра не ис-
пользуются и должны быть равны нулю.
Регистр прерываний от таймеров TIFR
имеет точно такую же структуру. Все
вышесказанное относительно GIFR ос-
тается справедливым и для TIFR -
при “классическим” способе обработки
прерываний, необходимости использо-
вания регистра TIFR нет.
Регистр управления микроконтрол-
лером MCUCR содержит следующие
биты:
- бит 6 - отключить (лог. 1 ) “подтяги-
вающие” резисторы на линиях порта В;
- бит
5
- разрешить выполнение
команды sleep. Если этот бит не уста-
новлен (лог.О), команда sleep будет вы-
полнена как команда пор;
- биты
4
и 3 - режим выполнения
команды sleep (будет описано ниже);
- биты 1 и 0 - способ генерации сиг-
нала внешнего прерывания (будет опи-
сано ниже).
Остальные биты этого регистра не
используются и должны быть установ-
лены в лог.О. Назначение бита 6 при-
мерно соответствует подрегистру 5 уп-
равляющего регистра портов микро-
контроллера КР1878ВЕ1, но включает
резисторы не индивидуально, а одно-
временно на всех линиях. Следует от-
метить, что в точности такой же бит
присутствует, например, и в микрокон-
троллере ATMegal 28, хотя с большим
трудом можно вообразить, для чего
может вдруг понадобиться одновремен-
ное отключение резисторов на всех
семи его портах. Бит 5 обязательно сле-
дует устанавливать, если в программе
планируется применение команды
sleep. Причину появления такого бита
автор назвать затрудняется. Биты 4 и 3
обеспечивают различный режим вы-
полнения команды sleep:
- комбинация “0(Г - режим ожида-
ния. Соответствует команде wait мик-
роконтроллера КР1878ВЕ1;
- комбинация “01” - режим снижения
шумов АЦП;
- комбинация “10” - режим отключе-
ния тактового генератора. Соответству-
ет команде sip микроконтроллера
КР1878ВЕ1;
- комбинация “11” - не использу-
ется.
Особый интерес представляет ком-
бинация “01”. Ей следует пользоваться
всегда, когда в программе требуется
высокая точность оцифровки сигнала.
Технически очень сложно добиться вы-
сокой точности, когда в нескольких мик-
ронах от АЦП гсшосит-надрывается про-
цессор! Именно для того, чтобы умень-
шить шумы процессора, и предназна-
чен этот особый режим ожидания. Для
42
U
Радиолюбитель - 0 5 /2 0 0 7
предыдущая страница 42 Радиолюбитель 2007-05 читать онлайн следующая страница 44 Радиолюбитель 2007-05 читать онлайн Домой Выключить/включить текст