1
]
МИКРОКОНТРОЛЛЕРЫ
о
-
со
смещением.
Помимо обмена данными между рабочими
регистрами и ячейками ОЗУ, в микроконтроллере АТМеда128
можно загружать данные и из памяти программ (команда
LPM, причем с двумя способами адресации - косвенной и
косвенной с пост-инкрементом), а также - внимание! - и со-
хранять их в область памяти программ (команда SPM).
РЕГИСТРЫ ВВОДА/ВЫ ВОДА
Набор регистров ввода/вывода микроконтроллера вклю-
чает в себя как известные по АГПпу15 регистры, так и но-
вые, специфичные для микроконтроллера АТМеда128. Из “из-
вестных” следует отметить, во-первых, регистры управления
портами. Как и в микроконтроллере АГПпу15, их имеется по
три на каждый порт. Порты в микроконтроллере АТМеда128
имеют нумерацию от А до G, причем последний порт - не-
полный, содержит всего 5 линий. Следует отметить, что порт
F микроконтроллера - единственный порт, расположенный
в т.н. расширенном пространстве регистров ввода/вывода.
По этом причине с ним нельзя работать с помощью команд
НМ, OUT, SBI и им подобных. Компилятор с языка высокого
уровня строит для этого порта особый код (с применением
команд LD.
.. и ST.
..). Работа с портами в АТМеда128 ничем
не отличается от работы с портами в АГПпу15. Названия
регистров портов для микроконтроллера ATMega128 - от
DDRA, PORTA, PINA до DDRG, PORTG, PING.
Следующие регистры, имеющие прямые аналоги с
АТПпу15 - регистр состояния SREG и регистр OSCCAL, слу-
жащий для подстройки частоты задающего генератора. Их
формат и назначение аналогичны соответствующим регист-
рам ATTinyl 5.
Для работы с ЭСППЗУ в микроконтроллере АТМеда128
используются регистры EECR, EEDR и EEAR. Назначение и
формат регистров в точности соответствуют регистрам мик-
роконтроллера АГПпу15, но регистр EEAR теперь состоит из
двух регистров EEARL и EEARH (старший и младший байт
адреса соответственно) - объем ЭСППЗУ в микроконтрол-
лере 4 Кбайт, и одного байта для ее адресации, разумеется,
недостаточно.
Регистр MCUCSR (аналог регистра MCUSR микроконт-
роллера ATTinyl 5) пополнился двумя дополнительными би-
тами:
- бит 7 - бит, запрещающий работу интерфейса JTAG.
Интерфейс JTAG - средство отладки программ непосред-
ственно на “живом” микроконтроллере. Он позволяет оста-
навливать выполнение программы в заданных точках, а так-
же считывать и изменять значения любого регистра (байта
ОЗУ) непосредственно в микроконтроллере с помощью
“внешней силы” (аппаратно-программного отладчика, под-
ключенного к персональному компьютеру). Бит 7 предназ-
начен для того, чтобы отключать работу этого интерфейса
программным путем (например, для защиты программы от
несанкционированного копирования). Рассматривать рабо-
ту этого интерфейса мы не будем;
- бит 4 - бит, указывающий, что сброс микроконтролле-
ра произошел программным путем через интерфейс JTAG.
Регистр MCUCR, присутствующий в АТМеда128, имеет
несколько отличный от ATTinyl 5 формат:
- бит 7 - включение режима внешней памяти. К микро-
контроллеру ATMegal 28, помимо 4 Кбайт встроенного ОЗУ,
можно подключать внешнюю память данных размером до
64 Кбайт. Установка этого бита в лог.1 позволяет микрокон-
троллеру работать с этой памятью. Следует иметь в виду,
что при включении этого бита становятся недоступными “по
прямому назначению” порты А, С и линии 0.
.2 порта G;
- бит 6 - бит состояния ожидания. Совместно с дополни-
тельным регистром XMCRA используется для задания вре-
мени обращения ко внешней памяти;
- бит 5 - разрешение выполнения команды sleep. Пол-
ный аналог соответствующего бита из ATTinyl 5;
- бит 4.
.2 - способы обработки команды sleep. В отличие
от ATTinyl 5, имеющего три режима обработки команды sleep,
в ATMegal 28 таких режимов - шесть. Более подробно за
описанием дополнительных режимов отправляем читателя
к документации по ATMegal 28;
- бит 1 .
.0 - используются для указания о том, где распо-
лагается таблица векторов прерываний. Дело в том, что в
микроконтроллере ATMegal 28 появилась новая возможность
- т.н. boot loader. Идея этого режима в том, что с появлением
в системе команд микроконтроллера команды SPM (запись
в память программ), микроконтроллер теперь стало возможно
перепрограммировать не только с помощью программато-
ра, но и “на ходу”, непосредственно в процессе его работы.
Новая версия программы для микроконтроллера может быть
получена каким угодно образом (передана по последователь-
ному порту, считана из другого микроконтроллера, или даже
построена на основании анализа исходных данных!), но для
того, чтобы перепрограммировать таким способом микро-
контроллер, в нем в любом случае должен присутствовать
некий неизменный участок кода, который бы занимался при-
емом программы из какого-либо источника, и контролиро-
вал процесс записи новой версии программы в память про-
грамм. Этот участок кода и называется boot loader (“загруз-
чик”), и именно он первым получает управление при включе-
нии микроконтроллера, если режим boot loader включен (он
включается с помощью битов-предохранителей). Проблема
при работе загрузчика заключается в том, что у загрузчика
должна быть своя собственная таблица векторов прерыва-
ний - ведь загрузчик и загружаемая программа почти на-
верняка используют разные прерывания различным обра-
зом. Вот для выбора нужной таблицы прерываний в каче-
стве активной и используются биты 1 .
.0 регистра MCUCR.
Более подробно этот режим мы рассмотрим позднее.
Значительные изменения произошли в регистрах, управ-
ляющих внешними прерываниями. Если в микроконтролле-
ре ATTinyl 5 линия внешнего прерывания всего одна, то в
ATMegal 28 таких линий восемь (линии портов D[0].
.D[3] и
Е[4].
.Е[7], соответствуют INT0.
.INT7). Для их управления ис-
пользуются теперь четыре регистра:
- регистр EIMSK - регистр маски прерываний. Установ-
ка соответствующего бита в регистре в лог.1 разрешает ге-
нерацию прерывания соответствующей линией. Соответ-
ствие между битами и линиями - позиционное;
40
и р а д и о л ю б и т е л ь - 0 8 / 2 0 0 8
предыдущая страница 40 Радиолюбитель 2008-08 читать онлайн следующая страница 42 Радиолюбитель 2008-08 читать онлайн Домой Выключить/включить текст