Компоненты и технологии, № 6'2002
Микроконтроллеры MC68HC908JL3/JK3/JK1
фирмы Motorola
Фирма Motorola является одним из крупнейших мировых производителей микропроцессоров и микроконтроллеров. До недавнего времени продукция фирмы в основном была ориентирована на крупных заказчиков, поэтому немногие российские разработчики с ней хорошо знакомы. Большим шагом в сторону малого потребителя стал выпуск на рынок микроконтроллеров семейства MC68HC908.
Эти кристаллы имеют внутрисхемно загружаемую флэш-память программ и возможность внутрисхемной отладки. Впервые фирма Motorola санкционировала выпуск бесплатного программного обеспечения для поддержки своих изделий.
Александр Емелин
Контроллеры построены на базе популярного 8-разрядного процессорного ядра НС08, являющегося развитием НС05 и имеющего следующие особенности:
• напряжение питания 3 или 5 В;
• частота внутренней шины до 8 МГц;
• объединенная память программ и данных (архитектура фон Неймана);
• 16 режимов адресации;
• 16-разрядные индексный регистр и указатель стека;
• пересылки из памяти в память;
• аппаратное умножение 8x8 разрядов;
• аппаратное деление 16/8 разрядов;
• аппаратная поддержка двоично-десятичной арифметики.
Микроконтроллеры МС68НС908ІЬ3, ІК3 и ІК1 отличаются только количеством выводов и объемом флэш-памяти (табл. 1):
Таблица 1. Различия микроконтроллеров МС68НС908Л.3, Ж3 и Ж1
Количество выводов (портов) Объем флэш-памяти, байт
MC68HC908JL3 28 (23) 4096
MC68HC908JK3 20 (15) 4096
MC68HC908JK1 20 (15) 1536
Дальнейшее описание будем проводить на примере 1Ь3, с соответствующими поправками оно будет справедливо и для остальных контроллеров.
Существуют также версии данных микроконтроллеров, предназначенные для работы с ИС-генерато-ром. Они имеют обозначение НИС вместо НС.
Способы адресации и система команд
Процессор имеет следующие регистры:
• 8-разрядный аккумулятор А;
• 16-разрядный индексный регистр Н:Х;
• 16-разрядный указатель стека 8Р;
• 16-разрядный счетчик команд РС;
• 8-разрядный регистр флагов ССИ, включающий следующие биты:
- С — флаг переноса;
- Z — флаг нулевого результата;
- N — флаг отрицательного результата;
- V — флаг переполнения;
- H — флаг переноса из 3 в 4 разряд;
- I — флаг маскирования прерываний.
Способы адресации процессора HC08 приведены в
таблице 2. Особенностью системы адресации 8-разрядных процессоров фирмы Motorola является широкое использование индексных регистров. Для многих операций аргумент может быть выбран непосредственно из памяти. Это удобно при сокращенном регистровом банке. Перечисленные особенности позволяют классифицировать HC08 как CISC-ядро.
Таблица 2. Способы адресации
Обозна- Для одноадресных команд
чение Название Операнд
REG Регистровая Операнд - регистр А или X
IMM Непосредственная Байт данных в телекоманды
DIR Прямая Байт адреса в телекоманды
EXT Расширенная 2 байта адреса в телекоманды
IX Индексная без смещения Адрес операнда в Н:Х
IX+ Индексная без смещения с инкрементом Н:Х инкрементируется после выполнения команды
IX1 + Индексная с 1-байтовым смещением и инкрементом Адрес операнда образуется путем сложения содержимого Н:Х и смещения
IX2 Индексная с 2-байтовым без смещения
REL Относительная (1-байтное смещение) Адрес операнда образуется путем сложения содержимого РС и смещения
SP1 Указатель стека с 1-байтовым смещением Адрес операнда образуется путем сложения содержимого $Р и смещения
SP2 Указатель стека с 2-байтовым смещением
| для команды пересылки:
Источник Приемник
DD Прямая Прямая
IMD Непосредственная Прямая
IX+D Индексная без смещения с инкрементом Прямая
DIX+ Прямая Индексная без смещения с инкрементом
Компоненты и технологии, № 6'2002
Система команд процессора включает команды арифметико-логических операций, пересылки, передачи управления. Все команды процессора одноадресные, вторым операндом (если он предусмотрен) в большинстве случаев выступает аккумулятор. Исключение составляет команда пересылки МОУ, способы адресации для которой также приведены в таблице 2.
В таблице 3 приведены команды арифметико-логических операций. Помимо стандартных логических операций, и сдвигов в систе-
Таблица 3. Арифметико-логические команды
Мнемо- код Операция Виды адресации
ADC Сложение с учетом переноса IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
ADD Сложение IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
AIS Добавить непосредственный операнд к БР IMM
AIX Добавить непосредственный операнд к Н:Х IMM
AND Логическое И IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
ASL Арифметический сдвиг влево REG, DIR, IX1, IX, SP1
ASR Арифметический сдвиг вправо REG, DIR, IX1, IX, SP1
BCLR Очистка битов DIR
BIT Тестирование битов IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
BSET Установка битов DIR
CLC Очистка флага С -
CLI Очистка флага I -
CLR Очистка байта REG, DIR, IX1, IX, SP1
CMP Сравнение с А IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
COM Инверсия REG, DIR, IX1, IX, SP1
CPHX Сравнение 16-разрядного слова с Н:Х IMM, DIR
X C Сравнение с X IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
DAA Двоично-десятичная коррекция аккумулятора -
DEC Декремент REG, DIR, IX1, IX, SP1
DIV Деление -
EOR Исключающее ИЛИ IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
INC Инкремент REG, DIR, IX1, IX, SP1
LSL Логический сдвиг влево REG, DIR, IX1, IX, SP1
LSR Логический сдвиг вправо REG, DIR, IX1, IX, SP1
MUL Умножение -
NEG Изменение знака REG, DIR, IX1, IX, SP1
NOP Нет операции -
NSA Перестановка тетрад в аккумуляторе -
ORA Логическое ИЛИ IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
ROL Циклический сдвиг влево REG, DIR, IX1, IX, SP1
ROR Циклический сдвиг вправо REG, DIR, IX1, IX, SP1
SBC Вычитание с учетом заема IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
SEC Установка бита С -
SEI Установка бита I -
SUB Вычитание IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
TST Тестирование байта IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
ме команд присутствуют операции умножения и деления. Операция умножения выполняется над регистрами X и А, результат записывается в регистровую пару Х:А. В операции деления содержимое регистровой пары Н:А делится на регистр X. Частное записывается в аккумулятор, а остаток от деления — в регистр Н.
В таблице 4 приведены команды пересылки. Эта группа команд осуществляет обмен содержимого регистров, регистров и памяти, позволяет сохранять и восстанавливать данные из стека.
Таблица 4. Команды пересылки
Таблица 5. Команды управления
Мнемо- код Операция Виды адресации
LDA Загрузка аккумулятора IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
LDHX Загрузка Н:Х IMM, DIR
LDX Загрузка X IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2
MOV Пересылка DD, DIX+, IMD, IX+D
PSHA Сохранение А в стеке -
PSHH Сохранение Н:Х в стеке -
PSHX Сохранение X в стеке -
PULA Восстановление А из стека -
PULH Восстановление Н:Х из стека -
PULX Восстановление Х из стека -
RSP Инициализация БР -
STA Сохранение А в памяти DIR, EXT, IX2, IX1, IX, SP1, SP2
STHX Сохранение Н:Х в памяти DIR
STX Сохранение Х в памяти DIR, EXT, IX2, IX1, IX, SP1, SP2
TAP Пересылка А в ССР -
TAX Пересылка А в Х -
TPA Пересылка ССР в А -
TSX Пересылка БР в Х -
TXA Пересылка Х в А -
TXS Пересылка Х в БР -
Таблица 5 содержит команды управления. Большую долю этих команд занимают условные переходы. Операндом команд условного перехода является 8-разрядное знаковое смещение. Помимо стандартных операций, в состав системы команд входят переходы по биту маски прерывания I и состоянию внешнего вывода IRQ процессора.
Команда SWI является вызовом программного прерывания. Программное прерывание немаскируемое, то есть происходит независимо от состояния флага I в CCR. При вызове прерывания процессор сохраняет все регистры и переходит к выполнению программы с адреса, содержащегося в векторе прерывания.
Команды WAIT и STOP позволяют задействовать режимы пониженного энергопотребления микроконтроллера. Данные режимы аналогичны режимам IDLE и POWER DOWN в микроконтроллерах MCS51. В режиме WAIT отключается тактовый сигнал от процессора, периферия микроконтроллера продолжает функционировать. Выход из режима осуществляется либо по прерыванию, либо по сигналу сброса.
В режиме STOP прекращается работа процессора и периферийных устройств. Выход из режима возможен только под влиянием внеш-
Мнемо- код Операция Виды адреса- ции
BCC Переход, если С=0 REL
BCS Переход, если С=1 REL
BEQ Переход, если нулевой результат REL
BGE Переход, если больше или равно REL
BGT Переход, если больше REL
BHCC Переход, если Н=0 REL
BHCS Переход, если Н=1 REL
BHI Переход, если выше REL
BHS Переход, если выше или равно REL
BIH Переход, если на 1РО напряжение лог. 0 REL
BIL Переход, если на 1РО напряжение лог. 1 REL
BLE Переход, если меньше или равно REL
BLO Переход, если ниже REL
BLS Переход, если ниже или равно REL
BLT Переход, если меньше REL
BMC Переход, если 1=0 REL
BMI Переход, если отрицательный результат REL
BMS Переход, если 1=1 REL
BNE Переход, если ненулевой результат REL
BPL Переход, если неотрицательный результат REL
BRA Безусловный переход REL
BRCLR Переход, если бит в ячейке очищен DIR
BRSET Переход, если бит в ячейке установлен DIR
BSR Переход к подпрограмме REL
CBEQ Сравнение и переход, если равно DIR, IMM, X1+, IX+, SP1
DBNZ Декремент и переход, если не нуль DIR, REG, IX1+, IX+, SP1
JMP Длинный переход DIR, EXT, IX2, IX1, IX
JSR Длинный переход к подпрограмме DIR, EXT, IX2, IX1, IX
RTI Возврат из обработчика прерывания -
RTS Возврат из подпрограммы -
STOP Остановить тактовый генератор -
SWI Программное прерывание -
WAIT Остановить процессор -
них факторов — внешнего прерывания или сигнала сброса.
Карта памяти
В таблице 6 представлено распределение памяти в микроконтроллерах МС68НС9081Ь3 и 1К3. В скобках приведены адреса для микроконтроллера 1К1.
Таблица 6. Распределение памяти
Диапазон адресов Тип памяти Объем, байт
0x0000-0x003F Регистры ввода-вывода 64
0x0040-0x007F Зарезервировано 64
0x0080-0x00FF ОЗУ 128
0x0100-0xEBFF 0x0100-0xF5FF Нет памяти 60160 (62720)
0xEC00-0xFBFF 0xF600-0xFBFF Флэш-память 4096 (1536)
0xFC00-0xFDFF ПЗУ монитора 512
0xFE00-0xFE0F Системные регистры 16
0xFE10-0xFFCF ПЗУ монитора 448
0xFFD0-0xFFFF Вектора прерываний 48
Компоненты и технологии, № 6'2002
Обработка прерываний
При запросе прерывания MC68HC908JL3 заканчивает выполнение текущей команды, сохраняет в стеке адрес возврата, регистры A, X и CCR и переходит к выполнению программы с адреса, записанного в векторе прерывания. Регистр H в стеке не сохраняется для обеспечения совместимости с семейством HC05.
В части запуска обработчика прерывания архитектура HC05/08 отходит от сложившейся в области микроконтроллеров традиции, когда управление передается непосредственно на вектор. Здесь из вектора выбирается адрес, и уже по этому адресу осуществляется переход.
Всего имеется 8 векторов прерываний, они приведены в таблице 7. Приоритет прерываний увеличивается по мере увеличения адреса вектора: самый высокий приоритет имеет сигнал Reset, самый низкий — АЦП.
Таблица 7. Вектора прерываний
Адрес вектора Назначение
0xFFDE:0xFFDF АЦП
0xFFE0:0xFFE1 Клавиатура
0xFFF2:0xFFF3 Переполнение таймера
0xFFF4:0xFFF5 Внешний вывод 1 таймерного блока
0xFFF6:0xFFF7 Внешний вывод 0 таймерного блока
0xFFFA:0xFFFB Внешний вывод IRQ
0xFFFC:0xFFFD Программное прерывание SWI
0xFFFE:0xFFFF Сигнал сброса Reset
Любое прерывание, кроме Reset и SWI, может быть запрещено — в регистрах управления соответствующих устройств имеются маскировочные флаги. Все прерывания одновременно могут быть запрещены установкой бита I в регистре CCR.
Периферийные устройства
В состав периферийных устройств микроконтроллеров входят:
• порты ввода—вывода;
• таймерный блок;
• АЦП;
• сторожевой таймер и детектор аварии питания;
• отладочный модуль.
Порты ввода—вывода. В состав микроконтроллера входят три параллельных порта, обозначаемые буквами A, B, D.
Порт A микроконтроллера MC68HC908JL3 имеет 7 выводов. В микроконтроллерах JK3 и JK1 присутствует только вывод PA6.
Каждый вывод порта A может работать как входной или выходной. Для настройки направления передачи данных служит регистр DDRA. Если какой-либо бит DDRA установлен в 0, соответствующий вывод порта A будет входом, если в 1 — то выходом. Для передачи данных в порт и чтения выводов служит регистр PTA.
Для всех выводов порта A имеется возможность подключить внутренние подтягивающие резисторы величиной около 30 кОм. Включением подтяжек управляет регистр PTAPUE.
Вывод PA6 находится на особом положении, так как он совмещен с выходом тактово-
го генератора. Его можно использовать в качестве вывода порта только при наличии внешнего генератора. Включением вывода PA6 управляет бит 7 регистра PTAPUE.
Все выводы порта A (кроме PA6) обладают характеристикой, называемой фирмой Motorola «LED drive capability». Это означает, что нагрузочная способность вывода при питании 5 В составляет не менее 10 мА.
Порт A имеет также альтернативное назначение — его выводы можно использовать как интерфейс клавиатуры. По перепаду напряжения на любом из выводов PA0 ... PA6 может быть сгенерировано прерывание от клавиатуры. Интерфейс клавиатуры продолжает функционировать в режимах пониженного потребления, прерывание от клавиатуры выводит микроконтроллер из этих режимов.
Порт — это двунаправленный 8-разрядный порт. Для управления портом B служат регистр направления DDRB и регистр данных PTB; подтягивающих резисторов порт B не имеет. Альтернативное назначение порта В — его выводы можно использовать в качестве входов АЦП, каналов 0-7.
Порт D микроконтроллера MC68HC908JL3 имеет 8 выводов, у микроконтроллеров JK3 и JK1 исключены выводы PD0 и PD1. Порт D двунаправленный (им управляют регистры DDRD и PTD), его выводы имеют различные альтернативные функции.
Выводы PD2, PD3, PD6, PD7 имеют «LED drive capability».
Выводы PD0-PD3 могут служить входами АЦП, каналов 8-11.
Выводы PD4 и PD5 служат входами счетчика событий, каналов 0 и 1.
Выводы PD6 и PD7 имеют возможность функционировать в режиме «Slow-edge». В этом режиме вывод порта представляет собой выход с открытым коллектором с возможностью потребления тока величиной до 25 мА. Также на этих выводах могут быть включены подтягивающие резисторы величиной 5 кОм. Включением режима «Slow-edge» и подтяжек управляет регистр PDCR.
Таймерный блок. Центральным компонентом таймерного блока является 16-разрядный счетчик. Его текущее значение доступно через регистровую пару TCNTH:TCNTL. Тактовая частота счетчика образуется из частоты системной шины с помощью делителя. Для хранения кода коэффициента деления отведены 3 бита в регистре управления таймером TSC. Коэффициент деления может принимать 7 значений: 1, 2, 4, 8, 16, 32, 64.
При счете, в зависимости от установленного режима, счетчик может сбрасываться в 0 либо при достижении значения 216 (переполнении разрядной сетки), либо какого-то другого значения, называемого модулем счета. Для хранения модуля счета используется регистровая пара TMODH:TMODL. При переходе счетчика через 0 таймерный блок может, в зависимости от настроек, сгенерировать прерывание переполнения.
Таймерный блок имеет два канала с внешними выводами, которые могут функционировать в двух режимах: Input Capture и Output Compare, причем каждый канал программиру-
ется на тот или иной режим независимо. В режиме Input Capture канал проверяет состояние внешнего вывода и фиксирует в регистровой паре TCH0H:TCH0L (или TCH1H:TCH1L) момент прихода фронта сигнала. В зависимости от настройки канал может реагировать на нарастающий или на спадающий фронт, либо на любой из этих фронтов.
В режиме Output Compare все происходит с точностью до наоборот: в момент времени, заданный в регистрах TCHxH:TCHxL, происходит переключение внешнего вывода. В зависимости от настройки переключение может производиться в 0, в 1, или в состояние, обратное предшествующему.
Существует два варианта режима Output Compare. В первом, так называемом Unbuffered, вывод управляется только регистровой парой, соответствующей каналу 0 или 1. Это более простой вариант, он позволяет задействовать два канала независимо друг от друга. Недостаток данного варианта в том, что запись нового значения в регистры TCHxH:TCHxL может вызвать неправильную работу в течение двух периодов перезагрузки таймера. Рассмотрим ситуацию, когда новое записанное значение больше старого. Если во время записи счетчик еще не достиг старого значения, но уже превысил новое, переключение внешнего вывода произойдет только после того, как счетчик пройдет полный цикл до модуля счета, и затем — от нуля до нового значения.
Второй вариант режима — Buffered Output Compare — свободен от данного недостатка, однако требует одновременного использования всех регистров — TCH0H:TCH0L и TCH1H:TCH1L, при этом работает только канал 0. Непосредственно после запуска период выбирается из регистров TCH0H:TCH0L. Для смены периода новое значение надо записать в TCH1H:TCH1L, при этом текущий цикл отрабатывается по старому значению в TCH0H:TCH0L. Начиная со следующего цикла период выбирается уже из TCH1H:TCH1L, а при необходимости сменить значение его надо записывать в TCH0H:TCH0L и т. д. Таким образом, регистровые пары загружаются и работают попеременно.
Используя режим Output Compare и отслеживая переполнение счетчика, можно организовать генерацию сигнала с широтно-импульсной модуляцией (ШИМ). Для этого в регистры модуля счета заносится период ШИМ, в регистры TCHxH:TCHxL — время включения. Режим ШИМ требует активизации двух прерываний: от интерфейсного канала и по переполнению таймера.
АЦП имеет 12 измерительных каналов и разрешение 8 бит. Опорным напряжением для АЦП служит напряжение питания микроконтроллера.
Для синхронизации АЦП используется делитель, на вход которого подается сигнал синхронизации системной шины. В зависимости от значения в регистре управления делителем ADICLK коэффициент деления может составлять 1, 2, 4, 8 или 16. Рекомендуется устанавливать коэффициент деления таким образом, чтобы частота синхронизации АЦП составляла приблизительно 1 МГц. Учитывая, что
Компоненты и технологии, № 6'2002
цикл преобразования АЦП занимает 16 тактов, рекомендованная частота преобразования составляет 62,5 кГц.
АЦП запускается при записи нового значения в регистр управления ADSCR. Сигналом завершения цикла преобразования является установка бита COCO в том же регистре. АЦП может сгенерировать прерывание, сигнализирующее об окончании цикла. В зависимости от значения бита ADCO в регистре ADSCR после завершения цикла преобразования АЦП либо останавливается, либо начинает новое измерение.
Сторожевой таймер микроконтроллера MC68HC908JL3 предназначен для борьбы с зацикливанием или зависанием процессора.
Он представляет собой 6-разрядный счетчик, тактируемый от сигнала переполнения системного таймера. 12-разрядный системный таймер работает независимо от процессора и другой периферии, синхронизируется непосредственно от тактового генератора и служит для отсчета временных интервалов в служебных процессах в микроконтроллере.
Сторожевой таймер производит сброс микроконтроллера в том случае, если он достиг значения переполнения. Значение переполнения может составлять либо 218-24, либо 213-24 периодов частоты тактового генератора. Для того чтобы сброса не происходило, сторожевой таймер должен периодически сбрасываться путем записи любого значения в регистр COPCTL.
Детектор аварии питания позволяет подавать сигнал сброса в случае, когда напряжение питания падает ниже допустимого уровня.
С помощью регистра конфигурации CONFIG2 может быть выбран уровень срабатывания 4 В (для питания 5 В) или 2,4 В (для питания 3 В).
Отладочный модуль обеспечивает аппаратную поддержку точек останова. Точкой останова считается одно из двух событий:
• адрес, сгенерированный процессором, совпал с адресом, записанным в служебном регистре отладочного модуля;
• программа установила бит BRKA в регистре управления отладочным модулем.
При обнаружении точки останова отладочный модуль генерирует прерывание по вектору SWI. При этом останавливаются таймеры микроконтроллера, в том числе сторожевой. При возврате из прерывания с помощью инструкции RTI нормальная работа микроконтроллера восстанавливается.
Режим монитора
Особенностью микроконтроллеров семейства МС68НС908 является наличие так называемого режима монитора. В режиме монитора управление ресурсами микроконтроллера осуществляет специальная программа-монитор, записанная в ПЗУ. Режим монитора позволяет запускать программу пользователя, находящуюся во флэш-памяти или в ОЗУ и контролировать содержимое памяти и регистров микроконтроллера по однопроводному последовательному интерфейсу. С помощью монитора организуется также программирование флэш-памяти.
Решение о входе в режим монитора микроконтроллер принимает при подаче питания или после аппаратного сброса. Вход в режим осуществляется в двух случаях:
• Вектор прерывания по сигналу Reset (другими словами, стартовый адрес программы пользователя) содержит значение 0xFFFF. В этом случае микроконтроллер считается незапрограммированным, так как по такому адресу программа пользователя располагаться не может.
• На внешний вывод IRQ микроконтроллера подано повышенное напряжение (7-8 В). При обнаружении повышенного напряжения микроконтроллер считывает состояние выводов порта B: PB1 и PB2. Если на них установлена условленная комбинация логических уровней 10, то микроконтроллер начинает процедуру входа в режим монитора. После осуществления входа в режим монитора выводы PB1 и PB2 могут быть использованы по усмотрению пользователя.
В первом случае микроконтроллер входит в режим монитора без каких-либо дополнительных действий со стороны пользователя. Во втором случае должен состояться сеанс обмена сообщениями по отладочному интерфейсу между микроконтроллером и отладочным терминалом — персональным компьютером. В зависимости от того, насколько соблюден протокол сеанса рукопожатия, микроконтроллер принимает решение, входить ли в режим монитора и разрешить ли чтение флэш-памяти.
Под отладочный интерфейс отведен вывод PB0 микроконтроллера, который не может быть использован для других целей. Обмен по интерфейсу осуществляется в режиме «запрос—ответ». Частота обмена по отладочному интерфейсу связана с тактовой частотой микроконтроллера. Как правило, выбирается стандартная частота обмена 9600 бод.
Во время сеанса рукопожатия, для получения разрешения на чтение флэш-памяти, инструментальный ПК должен передать микроконтроллеру 8 секретных байтов. Значения этих байтов представляют собой содержимое 8 ячеек из области векторов прерываний. Таким образом осуществляется защита программы во флэш-памяти от несанкционированного доступа. Если микроконтроллеру будут переданы неправильные значения, единственная операция, которая может быть проделана с флэш-памятью, — это ее полное стирание.
Если вход в режим монитора прошел успешно, микроконтроллер готов к приему и выполнению команд инструментального ПК. Эти команды позволяют производить чтение и запись памяти, а также запуск программы с любого адреса.
В связи с тем, что управление ресурсами микроконтроллера в режиме монитора осуществляется ПЗУ монитора, существуют некоторые особенности обработки прерываний. Вектора прерываний Reset, Break и SWI становятся недоступными пользователю и жестко указывают на обработчики в ПЗУ монитора. С помощью этих обработчиков инструментальный ПК организует трассировку программы, находящейся в памяти микроконтроллера.
Средства разработки программ
Компания Motorola рекомендует использовать для семейства микроконтроллеров HC908 инструментальные средства фирмы P&E Micro (http://www.pemicro.com). Фирма выпускает внутрисхемные отладчики, программаторы и программное обеспечение для всех семейств микроконтроллеров Motorola.
Для семейства HC908 предлагает недорогой внутрисхемный программатор MON08 Cyclone. Этот программатор является интерфейсом между персональным компьютером и платой пользователя, он позволяет программировать и отлаживать все микроконтроллеры семейства HC908 в режиме монитора. Связь с ПК осуществляется по стандартному последовательному порту.
Фирма предлагает также бесплатно распространяемую интегрированную программную среду разработки, функционирующую в среде Windows, которая включает:
• редактор;
• ассемблер;
• программатор;
• программный симулятор;
• внутрисхемный симулятор;
• внутрисхемный отладчик.
Различие между внутрисхемным симулятором и внутрисхемным отладчиком требует пояснения.
Внутрисхемный отладчик позволяет загружать программу в память микроконтроллера и выполнять ее по шагам. Также он позволяет запустить программу на выполнение. При этом можно задать только одну точку останова, так как задействуется отладочный модуль микроконтроллера. Достоинством внутрисхемного отладчика является то, что программа выполняется самим микроконтроллером в реальном масштабе времени.
При использовании внутрисхемного симулятора процесс выполнения программы эмулируется на ПК, а микроконтроллеру только посылается информация о состоянии внешних выводов. Симулятор предлагает более богатые возможности отладки — точно такие же, как программный симулятор. Однако программа выполняется не в реальном масштабе времени.
Кроме продукции фирмы P&E Micro, можно упомянуть свободно распространяемый программатор фирмы Softec Microsystems, который можно найти на сайте www.softecmicro.com. Программатор имеет возможность более тонкой настройки, чем программатор P&E Micro. Также он более удобен для программирования серии микросхем в процессе производства.
Фирма КТЦ-МК (http://www.cec-mc.ru) предлагает макетно-отладочную плату Kit JL3, на которой установлены все базовые компоненты, необходимые для работы с микроконтроллером MC68HC908JL3. Kit служит для освоения возможностей MC68HC908JL3, отладки программ в режимах внутрисхемного отладчика и внутрисхемного симулятора, а также быстрого макетирования устройств на базе микроконтроллера. Для работы с платой можно использовать программное обеспечение P&E Micro или Softec Microsystems.