Микроконтроллера mc68hc908gp32
Структура и функционирование
Общая структура микроконтроллера MC68HC908GP32
Микроконтроллер MC68HC908GP32 содержит 8-разрядный процессор CPU08, Flash-память емкостью 32 Кбайт, ОЗУ данных емкостью 512 байт и большой набор служебных и периферийных модулей (рис. 1). Процессор CPU08 выполняет обработку 8-разрядных операндов и реализует набор из 90 команд. Он содержит пять программно-доступных регистров: 8-разрядный аккумулятор A и регистр признаков CCR, 16-разрядный индексный регистр H:X, указатель стека SP и программный счетчик PC.
В состав служебных модулей входят:
– генератор тактовых импульсов CGM08;
– модуль системной интеграции SIM08;
– модуль контроля напряжения питания LVI08;
– модуль прерывания в контрольной точке BREAK08;
– модуль управления внешним прерыванием IRQ08;
– сторожевой таймер COP08;
– базовый таймер TBM08.
Модуль генератора импульсов CGM08 генерирует импульсные сигналы, на базе которых модуль системной интеграции SIM08 формирует тактовые импульсы. Выходные сигналы модуля CGM08 определяют частоту тактовых импульсов для работы процессора и периферийных модулей.
Модуль системной интеграции SIM08 выполняет ряд функций, обеспечивающих совместную работу различных модулей микроконтроллера. Он работает совместно с другими служебными модулями: CGM08, LVI08, IRQ08, BREAK08, COP08, выполняя формирование тактовых импульсов, запуск микроконтроллера, организацию обслуживания прерываний.

Рис. 1. Структура микроконтроллера MC68HC908GP32
Модуль прерывания в контрольной точке BREAK08 обеспечивает останов выполнения программы в заданной контрольной точке и используется в процессе отладки программного обеспечения.
Модуль управления внешним прерыванием IRQ08 принимает внешний запрос прерывания, поступающий на вход IRQ#, и обеспечивает различные варианты его обслуживания.
Сторожевой таймер COP08 осуществляет контроль выполнения текущей программы.
Модуль LVI08 вырабатывает сигнал перезапуска микроконтроллера при снижении его напряжения питания ниже порогового уровня.
Модуль базового таймера TBM08 обеспечивает периодическое формирование запросов прерывания.
Периферийные модули обеспечивают обмен данными и совместную работу микроконтроллера с другими устройствами, входящими в состав системы управления. Микроконтроллер MC68HC908GP32 содержит следующие периферийные модули:
– пять параллельных портов A, B, C, D, E для ввода–вывода данных;
– асинхронный последовательный порт SCI08;
– синхронный последовательный порт SPI08;
– модуль контроля клавиатуры KBI08;
– 8-разрядный аналого-цифровой преобразователь ADC08;
– два таймерных модуля TIM08.
Двунаправленные порты A, B, C, D, E обеспечивают параллельный обмен данными с внешними устройствами. Порты A, B имеют по 8 линий ввода–вывода, порт E – 2 линии, а порты C, D – от 5 до 8 линий в зависимости от числа выводов корпуса, в котором смонтирован микроконтроллер.
Выводы параллельных портов A, B, D, E совмещены с выводами других периферийных модулей – KBI08, ADC08, TIM08-1, TIM08-2, SPI08, SCI08 (рис. 1). При работе вышеуказанных модулей соответствующие выводы параллельных портов служат для передачи сигналов, необходимых для функционирования модуля, и не могут использоваться для параллельного ввода–вывода данных.
Последовательные порты SCI08, SPI08 реализуют соответственно последовательный асинхронный и синхронный обмен данными между микроконтроллером и внешними устройствами.
Таймерный модуль TIM08 выполняет широкий набор функций, включая фиксацию времени поступления входных сигналов, выдачу выходных сигналов в заданный момент времени, формирование последовательности импульсов заданной частоты и длительности.
Модуль аналого-цифрового преобразования ADC08 производит преобразование значения потенциала, поступающего на один из 8 аналоговых входов, в 8-разрядное двоичное число.
Модуль контроля клавиатуры KBI08 обеспечивает формирование запроса прерывания при поступлении сигнала на определенные входы параллельных портов, обычно используемые для подключения клавиатуры.
Организация и адресация памяти
Микроконтроллеры семейства 68HC08/908 адресуют 64 Кбайт внутренней памяти (адреса $0000-FFFF). Распределение адресного пространства задается картой памяти, вид которой определяется объемом внутренней памяти и набором периферийных устройств, входящих в состав данной модели микроконтроллера. На рис. 2 приведена карта памяти для микроконтроллеров MC68HC908GP32. В адресном пространстве имеется ряд неиспользуемых позиций, которые соответствуют ячейкам памяти, отсутствующим в данной модели микроконтроллеров. При обращении к этим адресам производится перезапуск микроконтроллера.
| $0000 $003F | Регистрыпериферийных и служебных модулей (64байт) |
| $0040 $023F | ОЗУ данных (512 байт) |
| $0080 $7FFF | Не используется (32192 байт) |
| $8000 $FDFF | Flash-память (32 256 байт) |
| $FE00 | Регистр SBSR (модуль BREAK08) |
| $FE01 | Регистр SRSR (указывает причинузапуска) |
| $FE02 | Резервировано |
| $FE03 | Регистр SBFCR (модуль BREAK08) |
| $FE04 | Регистр INT1 (запросы прерывания) |
| $FE05 | Регистр INT2 (запросы прерывания) |
| $FE06 | Регистр INT3 (запросы прерывания) |
| $FE07 | Резервировано |
| $FE08 | Регистр FLCR (управление Flash-памятью) |
| $FE09 | Регистр BRKh (модуль BREAK08) |
| $FE0A | Регистр BRKl (модуль BREAK08) |
| $FE0B | Регистр BRKSCR(модуль BREAK08) |
| $FE0C | Регистр LVISR (модуль LVI08) |
| $FE0D $FE1F | Не используются (19 байт) |
| $FE20 $FE52 | ПЗУ – мониторотладки (307 байт) |
| $FE53 $FF7D | Не используются (43 байт) |
| $FF7E | Регистр FLBPR (управление Flash-памятью |
| $FF7F $FFDB | Не используются (93 байт) |
| $FFDC $FFFF | Вектора запуска ипрерываний (36 байт) |
Рис. 2. Карта памяти для микроконтроллера MC68HC908GP32.
Младшие 64 позиции адресного пространства (адреса $000–$003F) занимают регистры служебных и периферийных модулей (табл. 1). Отметим, что 16-разрядные регистры таймерных модулей TCNТ, TMOD, TCHx занимают по две позиции адресного пространства: младший байт с суффиксом l, старший байт с суффиксом h.
В адресном пространстве ОЗУ располагаются ячейки стека, которые адресуются с помощью указателя стека SP. При установке микроконтроллера в начальное состояние (запуске) содержимое SP принимает значение $00FF, адресуя ячейку ОЗУ с данным адресом.
В процессе выполнения программы можно установить любое значение указателя стека с помощью команды TXS, которая загружает в SP содержимое индексного регистра H:X, уменьшенное на 1. После записи байта в стек содержимое SP уменьшается на 1, адресуя следующую незаполненную ячейку стека. Таким образом, стек заполняется в направлении уменьшения адресов. Адрес вершины стека (последней заполненной ячейки стека) можно загрузить в регистр H:X с помощью команды TSX.
Микроконтроллер MC68HC908GP32 имеет внутреннюю Flash-память, содержимое которой может стираться и записываться при работе в режиме отладки или в процессе выполнения прикладной программы. Допускается до 10000 циклов стирания программирования, время хранения информации составляет более 10 лет. Необходимое для программирования повышенное напряжение обеспечивается внутренним преобразователем, поэтому не требуется подключение внешнего источника. Специальный механизм защиты позволяет предотвратить случайное стирание содержимого Flash-памяти. Наличие байтов секретности позволяет предотвратить несанкционированное считывание информации.
На кристалле микроконтроллера содержится 512 байт статической оперативной памяти, ячейки которой имеют адреса в диапазоне $0040–$023F. Обычно ОЗУ используется для хранения переменных и реализации стека.
Часть адресного пространства занята ячейками служебного ПЗУ, в котором содержится программа-монитор, которая реализует необходимые процедуры при работе микроконтроллера в режиме отладки, обеспечивая возможность контроля его внутреннего состояния. Это масочно-программируемое ПЗУ, содержимое которого записывается в процессе изготовления микроконтроллера.
В старших позициях адресного пространства располагаются вектора начального запуска и прерываний.
Таблица 1
Адреса регистров периферийных модулей

Генерация тактовых импульсов и запуск
микроконтроллера
Тактовые импульсы с частотой Ft формируются модулем системной интеграции SIM08 на базе импульсных сигналов, которые генерируются модулем CGM08. В микроконтроллерах MC68HC908GP32 этот модуль обеспечивает умножение частоты в сотни раз, что позволяет подключать в качестве частотно-задающего элемента дешевые и стабильные кварцевые кристаллы с резонансной частотой Fq = 32,768 кГц, широко применяемые в часовой промышленности («часовые» кварцы). Для получения тактовых сигналов заданной частоты Ft необходимо выполнить программирование модуля CGM08. Однако в лабораторном стенде ЛС–1 этого не требуется, т.к. микроконтроллер работает в режиме отладки с фиксированной тактовой частотой Ft = 2,4576 МГц.
Запуск микроконтроллера выполняется с помощью модуля системной интеграции SIM08. Он автоматически производится в следующих случаях:
1. Включение напряжения питания Vп.
2. Поступление внешнего сигнала сброса RST# = 0.
3. Поступление сигнала сброса от сторожевого таймера COP08.
4. Выборка неправильного кода команды.
5. Обращение к ячейке памяти, которая отсутствует в адресном пространстве данной модели микроконтроллера.
6. Поступление от модуля LVI08 сигнала о недопустимом снижении напряжения Vп.
В процессе запуска микроконтроллера выполняются следующие действия:
– запускается ГТИ, который формирует тактовые импульсы с частотой Ft = Fq, задаваемой кварцевым резонатором;
– в программный счетчик PC поступают два байта (старший байт PCh, младший байт PCl) из ячеек памяти с адресами $FFFE-FF (рис.2), которые задают адрес первой команды, выполняемой микроконтроллером после запуска;
– в указатель стека SP заносится число $FF, адресующее начальную ячейку стека;
– в регистре признаков CCR устанавливается значение маски прерываний I = 1, которое запрещает обслуживание любых аппаратных прерываний;
– устанавливается необходимое начальное состояние регистров периферийных модулей.
Режимы функционирования
Микроконтроллеры MC68HC908GP32 могут функционировать в одном из следующих режимов:
– рабочий режим,
– режим ожидания,
– режим останова,
– режим отладки.
Режим ожидания (Wait mode) реализуется после поступления команды WAIT.
При этом прекращается работа процессора, но все остальные модули микропроцессора продолжают функционировать. Потребление мощности в этом режиме снижается в несколько раз (табл. 2). Возврат из режима ожидания в рабочий режим происходит при поступлении сигнала сброса или запроса прерывания (внешнего IRQ# или от периферийных модулей). При поступлении сигнала сброса производится процедура запуска микроконтроллера, описанная выше. Если возврат выполняется по сигналу сброса, то в программный счетчик PC загружается вектор начального запуска, если по запросу прерывания, то в PC загружается соответствующий вектор прерывания (табл. 8).
Режим останова (Stop mode) реализуется после поступления команды STOP. В этом случае прекращается работа процессора и большинства других модулей микроконтроллера. Продолжают работать модули BREAK08, IRQ08, KBI08. Функционирование модуля контроля напряжения питания LVI08 и базового таймера TBM08 в режиме останова можно разрешить при записи соответствующего содержимого в регистры конфигурации микроконтроллера. Потребляемый ток в режиме останова снижается до единиц микроампер, если запрещена работа всех модулей микроконтроллера (табл. 2).
Таблица 2
Значения тока питания микроконтроллера MC68HC908GP32
в различных режимах функционирования
| Модель микроконтроллера | Ток питания | Условия функционирования | ||
| Рабочий режим | Режим ожидания | Режим останова | ||
| МС68НС908GР32 | 15 мА | 4 мА | 3/300 мкА | Uп=5,0 В, Ft=4 МГц |
| 4,5 мА | 1,7 мА | 2/200 мкА | Uп=3,0 В, Ft=4 МГц |
Выход из режима останова происходит при поступлении внешних сигналов сброса RST# и прерывания IRQ#, а также по запросам внутренних модулей LVI08, BREAK08, KBI08, TBM08, если разрешена работа соответствующего модуля в режиме останова. При этом в PC загружается вектор запуска или соответствующего прерывания (табл. 8). При поступлении команд WAIT и STOP в регистре признаков CCR устанавливается значение маски прерывания I = 0, чтобы разрешить последующий выход из режима ожидания или останова по запросам прерывания.
Режим отладки. Реализация этого режима является специфической особенностью микроконтроллеров семейства 68HC08/908. Микроконтроллер подключается к персональному компьютеру и работает под управлением внешних команд. Эти команды позволяют контролировать и модифицировать текущее состояние микроконтроллера, выполнять чтение и запись содержимого любой ячейки адресуемой памяти, производить стирание и запись содержимого внутренней Flash-памяти. Данный режим обеспечивает выполнение основных операций, реализуемых в процессе отладки программ.
Функционирование микроконтроллера в этом режиме обеспечивается с помощью специальной программы-монитора, которая записывается в его масочно-программируемое ПЗУ в процессе изготовления. Ввод микроконтроллера в режим отладки осуществляется при подаче на его выводы определенной комбинации потенциалов. На вход IRQ# подается повышенный потенциал Vh = Vp + 2,5 В. Вывод PTA0 порта A служит для последовательного обмена данными между микроконтроллером и персональным компьютером.
В режиме отладки обеспечивается возможность записи содержимого Flash-памяти. Таким образом, можно выполнить программирование микроконтроллера, работающего непосредственно в составе системы управления (ISP – In-System Programming).
При этом запись или модификация рабочей программы производится с помощью персонального компьютера без использования специальных программаторов и не требует удаления микроконтроллера из реализованной системы управления.
Программно-логическая модель
центрального процессора
Центральный процессор СРU08 выполняет действия над 8-разрядными операндами. Программно-логическая модель СРU8 содержит шесть регистров (рис. 3):
– 8-разрядный аккумулятор А;
– два 8-разрядных индексных регистра X и Н, которые могут быть объединены в 16-разрядный регистр Н:Х;
– указатель стека SP;
– счетчик адреса РС;
– регистр признаков ССR.

Рис. 3. Программно-логическая модель центрального процессора НС08
Аккумулятор А представляет собой 8-разрядный регистр, в котором хранятся операнды, результаты арифметических и логических операций.
Индексный регистр Х:Н состоит из двух регистров Н и X, позволяющих осуществлять индексный доступ к внутренней памяти объемом 64 Кб. Регистр Н содержит старший, а регистр X – младший байт адреса. Кроме того, в индексном регистре временно хранятся данные, тем самым осуществляется дополнительная ра
