Микроконтроллеры MC68HC908JL3/JK3/JK1
фирмы Motorola
Фирма Motorola явяляется одним из крупнейших мировых производителей микропроцессоров и микроконтроллеров. До недавнего времени продукция фирмы в основном была ориентирована на крупных заказчиков, поэтому немногие российские разработчики с ней хорошо знакомы. Большим шагом в сторону малого потребителя стал выпуск на рынок микроконтроллерв семейства MC68HC908. Эти кристаллы имеют внутрисхемно загружаемую флэш-память программ и возможность внутрисхемной отладки. Впервые фирма Motorola санкционировала выпуск бесплатного программного обеспечения для поддержки своих изделий.
Контроллеры построены на базе популярного 8-разрядного процессорного ядра HC08, являющегося развитием HC05 и имеющего следующие особенности:
- напряжение питания 3 или 5 В;
- частота внутренней шины до 8 МГц;
- объединенная память программ и данных (архитектура фон Неймана);
- 16 режимов адресации;
- 16-разрядные индексный регистр и указатель стека;
- пересылки из памяти в память;
- аппаратное умножение 8.8 разрядов;
- аппаратное деление 16/8 разрядов;
- аппаратная поддержка двоично-десятичной арифметики.
Микроконтроллеры MC68HC908JL3, JK3 и JK1 отличаются только количеством выводов и объемом флэш-памяти (табл. 1):
Таблица 1. Различия микроконтроллеров MC68HC908JL3, JK3 и JK1
|
Количество выводов (портов) |
Объем флэш-памяти, байт |
MC68HC908JL3 |
28 (23) |
4096 |
MC68HC908JK3 |
20 (15) |
4096 |
MC68HC908JK1 |
20 (15) |
1536 |
Дальнейшее описание будем проводить на примере JL3, с соответствующими поправками оно будет справедливо и для остальных контроллеров.
Существуют также версии данных микроконтроллеров, предназначенные для работы с RC-генератором. Они имеют обозначение HRC вместо HC.
Способы адресации и система команд
Процессор имеет следующие регистры:
- 8-разрядный аккумулятор A;
- 16-разрядный индексный регистр H:X;
- 16-разрядный указатель стека SP;
- 16-разрядный счетчик команд PC;
- 8-разрядный регистр флагов CCR, включающий следующие биты:
- C— флаг переноса;
- Z — флаг нулевого результата;
- N— флаг отрицательного результата;
- V— флаг переполнения;
- H— флаг переноса из 3 в 4 разряд;
- I — флаг маскирования прерываний.
Способы адресации процессора HC08 приведены в таблице 2. Особенностью системы адресации 8-разрядных процессоров фирмы Motorola является широкое использование индексных регистров. Для многих операций аргумент может быть выбран непосредственно из памяти. Это удобно при сокращенном регистровом банке. Перечисленные особенности позволяют классифицировать HC08 как CISC-ядро.
Таблица 2. Способы адресации
Обозначение |
Для одноадресных команд |
Название |
Операнд |
REG |
Регистровая |
Операнд – регистр A или X |
IMM |
Непосредственная |
Байт данных в телекоманды |
DIR |
Прямая |
Байт адреса в телекоманды |
EXT |
Расширенная |
2 байта адреса в телекоманды |
IX |
Индексная без смещения |
Адрес операнда в H:X |
IX+ |
Индексная без смещения с инкрементом |
H:X инкрементируется после выполнения команды |
IX1+ |
Индексная с 1-байтовым смещением и инкрементом |
Адрес операнда образуется путем сложения содержимого H:X и смещения |
IX2 |
Индексная с 2-байтовым без смещения |
REL |
Относительная (1-байтное смещение) |
Адрес операнда образуется путем сложения содержимого PC и смещения |
SP1 |
Указатель стека с 1-байтовым смещением |
Адрес операнда образуется путем сложения содержимого SP и смещения |
SP2 |
Указатель стека с 2-байтовым смещением |
|
для команды пересылки: |
Источник |
Приемник |
DD |
Прямая |
Прямая |
IMD |
Непосредственная |
Прямая |
IX+D |
Индексная без смещения с инкрементом |
Прямая |
DIX+ |
Прямая |
Индексная без смещения с инкрементом |
Система команд процессора включает команды арифметико-логических операций, пересылки, передачи управления. Все команды процессора одноадресные, вторым операндом (если он предусмотрен) в большинстве случаев выступает аккумулятор. Исключение составляет команда пересылки MOV, способы адресации для которой также приведены в таблице 2.
В таблице 3 приведены команды арифметико-логических операций. Помимо стандартных логических операций, и сдвигов в системе команд присутствуют операции умножения и деления. Операция умножения выполняется над регистрами X и A, результат записывается в регистровую пару X:A. В операции деления содержимое регистровой пары H:A делится на регистр X. Частное записывается в аккумулятор, а остаток от деления — в регистр H.
Таблица 3. Арифметико-логические команды
Мнемокод |
Операция |
Виды адресации |
ADC |
Сложение с учетом переноса |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
ADD |
Сложение |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
AIS |
Добавить непосредственный |
IMM |
AIX |
Добавить непосредственный операнд к H:X |
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 |
Очистка флага C |
- |
CLI |
Очистка флага I |
- |
CLR |
Очистка байта |
REG, DIR, IX1, IX, SP1 |
CMP |
Сравнение с A |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
COM |
Инверсия |
REG, DIR, IX1, IX, SP1 |
CPHX |
Сравнение 16-разрядного слова с H:X |
IMM, DIR |
CPX |
Сравнение с 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 |
Установка бита C |
- |
SEI |
Установка бита I |
- |
SUB |
Вычитание |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
TST |
Тестирование байта |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
В таблице 4 приведены команды пересылки. Эта группа команд осуществляет обмен содержимого регистров, регистров и памяти, позволяет сохранять и восстанавливать данные из стека.
Таблица 4. Команды пересылки
Мнемокод |
Операция |
Виды адресации |
LDA |
Загрузка аккумулятора |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
LDHX |
Загрузка H:X |
IMM, DIR |
LDX |
Загрузка X |
IMM, DIR, EXT, IX2, IX1, IX, SP1, SP2 |
MOV |
Пересылка |
DD, DIX+, IMD, IX+D |
AIX |
Сохранение A в стеке PSHA |
- |
PSHH |
Сохранение H:X в стеке |
- |
PSHX |
Сохранение X в стеке |
- |
PULA |
Восстановление A из стека |
- |
PULH |
Восстановление H:X из стека |
- |
PULX |
Восстановление X из стека |
- |
RSP |
Инициализация SP |
- |
STA |
Сохранение A в памяти |
DIR, EXT, IX2, IX1, IX, SP1, SP2 |
STHX |
Сохранение H:X в памяти |
DIR |
STX |
Сохранение X в памяти |
DIR, EXT, IX2, IX1, IX, SP1, SP2 |
TAP |
Пересылка A в CCR |
- |
TAX |
Пересылка A в X |
- |
TPA |
Пересылка CCR в A |
- |
TSX |
Пересылка SP в X |
- |
TXA |
Пересылка X в A |
- |
TXS |
Пересылка X в SP |
- |
Таблица 5 содержит команды управления. Большую долю этих команд занимают условные переходы. Операндом команд условного перехода является 8-разрядное знаковое смещение. Помимо стандартных операций, в состав системы команд входят переходы по биту маски прерывания I и состоянию внешнего вывода IRQ процессора.
Таблица 5. Команды управления
Мнемокод |
Операция |
Виды адресации |
BCC |
Переход, если C=0 |
REL |
BCS |
Переход, если C=1 |
REL |
BEQ |
Переход, если нулевой результат |
REL |
BGE |
Переход, если больше или равно |
REL |
BGT |
Переход, если больше |
REL |
BHCC |
Переход, если H=0 |
REL |
BHCS |
Переход, если H=1 |
REL |
BHI |
Переход, если выше |
REL |
BHS |
Переход, если выше или равно |
REL |
BIH |
Переход, если на IRQ напряжение лог. 0 |
REL |
BIL |
Переход, если на IRQ напряжение лог. 1 |
REL |
BLE |
Переход, если меньше или равно |
REL |
BLO |
Переход, если ниже |
REL |
BLS |
Переход, если ниже или равно |
REL |
BLT |
Переход, если меньше |
REL |
BMC |
Переход, если I=0 |
REL |
BMI |
Переход, если отрицательный результат |
REL |
BMS |
Переход, если I=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 |
Остановить процессор |
- |
Команда SWI является вызовом программного прерывания. Программное прерывание немаскируемое, то есть происходит независимо от состояния флага I в CCR. При вызове прерывания процессор сохраняет все регистры и переходит к выполнению программы с адреса, содержащегося в векторе прерывания.
Команды WAIT и STOP позволяют задействовать режимы пониженного энергопотребления микроконтроллера. Данные режимы аналогичны режимам IDLE и POWER DOWN в микроконтроллерах MCS51. В режиме WAIT отключается тактовый сигнал от процессора, периферия микроконтроллера продолжает функционировать. Выход из режима осуществляется либо по прерыванию, либо по сигналу сброса.
В режиме STOP прекращается работа процессора и периферийных устройств. Выход из режима возможен только под влиянием внешних факторов — внешнего прерывания или сигнала сброса.
Карта памяти
В таблице 6 представлено распределение памяти в микроконтроллерах MC68HC908JL3 и JK3. В скобках приведены адреса для микроконтроллера JK1.
Таблица 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 |
Обработка прерываний
При запросе прерывания MC68HC908JL3 заканчивает выполнение текущей команды, сохраняет в стеке адрес возврата, регистры A, X и CCR и переходит к выполнению программы с адреса, записанного в векторе прерывания. Регистр H в стеке не сохраняется для обеспечения совместимости с семейством HC05.
В части запуска обработчика прерывания архитектура HC05/08 отходит от сложившейся в области микроконтроллеров традиции, когда управление передается непосредственно на вектор. Здесь из вектора выбирается адрес, и уже по этому адресу осуществляется переход.
Всего имеется 8 векторов прерываний, онприведены в таблице 7. Приоритет прерываний увеличивается по мере увеличения адреса вектора: самый высокий приоритет имеет сигнал Reset, самый низкий — АЦП. Любое прерывание, кроме Reset и SWI, может быть запрещено — в регистрах управления соответствующих устройств имеются маскировочные флаги. Все прерывания одновременно могут быть запрещены установкой бита I в регистре CCR.
Таблица 7. Вектора прерываний
Адрес вектора |
Назначение |
0xFFDE:0xFFDF |
АЦП |
0xFFE0:0xFFE1 |
Клавиатура |
0xFFF2:0xFFF3 |
Переполнение таймера |
0xFFF4:0xFFF5 |
Внешний вывод 1 таймерного блока |
0xFFF6:0xFFF7 |
Внешний вывод 0 таймерного блока |
IRQ 0xFFFA:0xFFFB |
Внешний вывод |
0xFFFC:0xFFFD |
Программное прерывание SWI |
0xFFFE:0xFFFF |
Сигнал сброса Reset |
Периферийные устройтсва
В состав периферийных устройств микроконтроллеров входят:
- порты ввода—вывода;
- таймерный блок;
- АЦП;
- сторожевой таймер и детектор аварии питания;
- отладочный модуль.
Порты ввода—вывода. В состав микроконтроллера входят три параллельных порта, обозначаемые буквами 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 МГц. Учитывая, что цикл преобразования АЦП занимает 16 тактов, рекомендованная частота преобразования составляет 62,5 кГц.
АЦП запускается при записи нового значения в регистр управления ADSCR. Сигналом завершения цикла преобразования является установка бита COCO в том же регистре. АЦП может сгенерировать прерывание, сигнализирующее об окончании цикла. В зависимости от значения бита ADCO в регистре ADSCR после завершения цикла преобразования АЦП либо останавливается, либо начинает новое измерение.
Сторожевой таймер микроконтроллера MC68HC908JL3 предназначен для борьбы с зацикливанием или зависанием процессора. Он представляет собой 6-разрядный счетчик, тактируемый от сигнала переполнения системного таймера. 12-разрядный системный таймер работает независимо от процессора и другой периферии, синхронизируется непосредственно от тактового генератора и служит для отсчета временных интервалов в служебных процессах в микроконтроллере.
Сторожевой таймер производит сброс микроконтроллера в том случае, если он достиг значения переполнения. Значение переполнения может составлять либо 218–24, либо 213–24 периодов частоты тактового генератора. Для того чтобы сброса не происходило, сторожевой таймер должен периодически сбрасываться путем записи любого значения в регистр COPCTL.
Детектор аварии питания позволяет подавать сигнал сброса в случае, когда напряжение питания падает ниже допустимого уровня.
С помощью регистра конфигурации CONFIG2 может быть выбран уровень срабатывания 4 В (для питания 5 В) или 2,4 В (для питания 3 В).
Отладочный модуль обеспечивает аппаратную поддержку точек останова. Точкой останова считается одно из двух событий:
- адрес, сгенерированный процессором, совпал с адресом, записанным в служебном регистре отладочного модуля;
- программа установила бит BRKA в регистре управления отладочным модулем.
При обнаружении точки останова отладочный модуль генерирует прерывание по вектору SWI. При этом останавливаются таймеры микроконтроллера, в том числе сторожевой.
При возврате из прерывания с помощью инструкции RTI нормальная работа микроконтроллера восстанавливается.
Режим монитора
Особенностью микроконтроллеров семейства MC68HC908 является наличие так называемого режима монитора. В режиме монитора управление ресурсами микроконтроллера осуществляет специальная программа-монитор, записанная в ПЗУ. Режим монитора позволяет запускать программу пользователя, находящуюся во флэш-памяти или в ОЗУ и контролировать содержимое памяти и регистров микроконтроллера по однопроводному последовательному интерфейсу. С помощью монитора организуется также программирование флэш-памяти.
Решение о входе в режим монитора микроконтроллер принимает при подаче питания или после аппаратного сброса. Вход в режим осуществляется в двух случаях:
- Вектор прерывания по сигналу 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.
Александр Емелин
|