Пособие HCS12 & Elvis II v.7.01
.pdfПосредством неё осуществляется выход из подпрограммы. В результате этого из стека извлекается адрес и по нему возобновляется исполнение основной программы (т.е. с адреса команды, которая следует за BSR / JSR).
Инструкция CALL используется для вызова подпрограммы из расширенной памяти. Т.е. в том случае, если объём адресного пространства больше 64К (максимальный адрес больше $FFFF). Выход из подпрограммы будет осуществляться с помощью директивы RTC. Для программной совместимости сделано так, что инструкции CALL и RTC выполняются корректно, даже если в устройстве способности к расширенной адресации.
Команды обслуживания прерываний нужны для того, чтобы передавать управление подпрограммам, которые выполняют критичные по приоритету и времени исполнения задачи. Программные прерывания входят в т.н. исключения центрального процессора, т.е. в события, которые требуют специальной обработки вне нормального исполнения инструкций.
Команда программного прерывания (SWI) вызывает синхронную обработку события. Таким образом, можно воспользоваться обычной подпрограммой как программой прерывания. При выполнении команды SWI автоматически помещается в стек адрес возврата. Затем туда же загружаются регистры CCR, A, В, X, Y. После этого осуществляется переход по адресу, который указан в ячейках памяти $FFF6 и $FFF7 сегмента векторов прерывания.
Выполнение команды SWI позволяет вызвать прерывание без поступления запроса на прерывание. Эта инструкция не подавляется глобальными битами прерываний I и X в регистре CCR . Поэтому программное прерывание часто называют немаскируемым. Его выполнение по команде SWI влечёт за собой установку флага I в единицу. Если программное прерывание началось, то маскируемые прерывания автоматически запрещаются до тех пор, пока бит I равен нулю. При выходе из подпрограммы прерывания команда RTI восстановит значения регистров центрального процессора, и МК продолжит выполнение прикладной программы с команды, которая была следующей за командой SWI (аналогично как и в случаях с командами BSR / JSR).
Табл. 1.15. Команды вызова подпрограмм и обслуживания прерываний
|
Мнемокод |
Операция |
Выполняемое |
Способ |
Влияние на |
|
|
действие |
адресации |
признаки |
|||
|
|
|
||||
|
|
Вызов подпрограммы |
SP ← (SP) − 2, |
|
|
|
|
|
|
|
|
||
|
|
записанной по адресу, |
M(SP) : M(SP)+1 |
|
(CCR) = const |
|
BSR |
rel |
код смещения которого |
REL |
|||
← |
||||||
указан во втором байте |
|
|||||
|
|
команды. |
RTNH : RTNL, |
|
|
|
|
|
|
|
|
||
|
|
|
PC ← (PC) + rel |
|
|
|
|
|
Вызов подпрограммы. |
SP ← (SP) − 2, |
|
|
|
JSR |
adr |
Адрес подпрограммы |
M(SP) : M(SP)+1 |
DIR, EXT |
|
|
хранится в ячейке |
|
|||||
JSR |
opr,r |
памяти (ОЗУ или ПЗУ). |
← |
IDX, IDX1, IDX2 |
(CCR) = const |
|
JSR [opr,r] |
Адрес ячейки задан |
RTNH : RTNL, |
[IDX2] |
|
||
JSR |
[D,r] |
используемым в команде |
|
[D,IDX] |
|
|
|
|
способом адресации. |
PC ← Subroutine |
|
|
|
|
|
|
Address |
|
|
|
|
|
Возврат из |
PCH : PCL |
|
|
|
RTS |
|
подпрограммы. |
← |
|
|
|
|
Адрес возврата |
(M(SP) : M(SP)+1), |
INH |
(CCR) = const |
||
|
|
загружается из стека в |
|
|
|
|
|
|
счетчик команд. |
SP ← (SP) + 2 |
|
|
41
|
|
Вызов подпрограммы из |
(SP) ← SP − 2, |
|
|
|
|
M(SP) : M(SP)+1 |
|
|
|
|
|
расширенной памяти. |
|
|
|
CALL |
adr |
Адрес подпрограммы |
← |
EXT |
|
хранится в ячейке |
RTNH : RTNL, |
|
|||
CALL |
opr,r |
памяти (ОЗУ или ПЗУ). |
|
IDX, IDX1, IDX2 |
(CCR) = const |
CALL |
[opr,r] |
Адрес ячейки задан |
SP ← SP − 1, |
[IDX2] |
|
CALL |
[D,r] |
используемым в команде |
M(SP) ← (PPAGE), |
[D,IDX] |
|
|
|
способом адресации. |
PPAGE ← page, |
|
|
|
|
|
PC ← Subroutine |
|
|
|
|
|
Address |
|
|
|
|
Возврат из |
(M(SP)) ← PPAGE |
|
|
|
|
SP ← (SP) + 1 |
|
|
|
|
|
подпрограммы, |
|
|
|
RTC |
|
вызванной по команде |
PCH : PCL |
INH |
(CCR) = const |
|
CALL. Адрес возврата |
← |
|||
|
|
|
|
||
|
|
загружается из стека в |
(M(SP) : M(SP)+1), |
|
|
|
|
счетчик команд. |
SP ← (SP) + 2 |
|
|
|
|
|
|
|
|
|
|
|
SP ← SP − 2 |
|
|
|
|
|
M(SP) : M(SP)+1 |
|
|
|
|
|
← |
|
|
|
|
|
RTNH : RTNL |
|
|
|
|
|
SP ← SP − 2 |
|
|
|
|
|
M(SP) : M(SP)+1 |
|
|
|
|
|
← |
|
|
|
|
|
YH : YL |
|
|
|
|
Программное |
SP ← SP − 2 |
|
|
SWI |
|
M(SP) : M(SP)+1 |
INH |
I = 1 |
|
|
прерывание. |
||||
|
|
|
← |
|
|
|
|
|
XH : XL |
|
|
|
|
|
SP ← SP − 2 |
|
|
|
|
|
M(SP) : M(SP)+1 |
|
|
|
|
|
← |
|
|
|
|
|
B : A |
|
|
|
|
|
SP ← SP − 1 |
|
|
|
|
|
M(SP) ← CCR |
|
|
|
|
|
I ← 1 |
|
|
|
|
|
PC ← (SWI Vector) |
|
|
42
|
|
CCR ← (M(SP)) |
|
|
|
|
|
SP ← SP + 1 |
|
|
|
|
|
B : A |
|
|
|
|
|
← |
|
|
|
|
|
(M(SP) : M(SP)+1) |
|
|
|
|
|
SP ← SP + 2 |
|
|
|
|
|
XH : XL |
|
|
|
|
Возврат из прерывания. |
← |
|
|
|
|
(M(SP) : M(SP)+1) |
|
(CCR) = var, |
||
RTI |
Восстанавливается |
|
|
||
|
INH |
X только |
|||
содержимое регистров |
SP ← SP + 4 |
||||
|
|
1 → 0 |
|||
|
CPU и счетчика команд. |
|
|
||
|
PCH : PCL |
|
|
||
|
|
|
|
||
|
|
← |
|
|
|
|
|
(M(SP) : M(SP)+1) |
|
|
|
|
|
SP ← SP − 2 |
|
|
|
|
|
YH : YL |
|
|
|
|
|
← |
|
|
|
|
|
(M(SP) : M(SP)+1) |
|
|
|
|
|
SP ← SP + 4 |
|
|
1.4.7. Команды перехода в режимы пониженного энергопотребления
Как видно из табл. 1.14., существует две команды перевода микроконтроллера в режим пониженного энергопотребления.
Инструкция STOP помещает в стек адрес возврата и содержимое регистров ЦП, а затем выключает систему тактирования.
Команда WAI также отправляет в стек адрес возврата и содержимое регистров ЦП. После этого микроконтроллер начинает ожидать поступления запроса на прерывание. При этом система тактирования остаётся включённой.
Для выхода из любого из двух режимов требуется, чтобы произошло прерывание или сброс.
|
Табл. 1.16. Команды вызова подпрограмм и обслуживания прерываний |
||||
Мнемокод |
Операция |
Выполняемое |
Способ |
Влияние на |
|
действие |
адресации |
признаки |
|||
|
|
||||
WAI |
Переводит МК в режим |
I ← 0 |
INH |
I = 0, после |
|
ожидания (wait mode) |
выхода |
||||
STOP |
Переводит МК в режим |
Остановка системы |
INH |
– |
|
остановки (stop mode) |
тактирования |
43
2.Микроконтроллер MC9S12C128
2.1.Общая характеристика
Вданном лабораторном практикуме Вами будет детально изучаться однокристальный 16-разрядный микроконтроллер семейства HCS12: MC9S12C128.
Основные технические характеристики этого МК:
•16-разрядное процессорное ядро HCS12.
•Напряжение питания 2.97..5.5 В. В лабораторном макете составляет 5 В.
•Развитая система тактирования. Тактирование микроконтроллера возможно как от внешних источников, так и от внутренних. В лабораторном стенде используется элемент, относящийся к первому типу: кварцевый резонатор. Частота тактового сигнала, который он генерирует, составляет 4 МГц. При этом частота внутренней шины микроконтроллера fBUS уменьшается вдвое и равна 2 МГц. Максимальное её значение для этой модели микроконтроллера составляет
20 МГц;
•Резидентная память программ (ПЗУ). Её объем равен 128K = 131072 ячеек (128
КБ). Память выполнена по технологии flash с эмуляцией EEPROM, число циклов записи/стирания составляет не менее 100000.
•Резидентная память данных (ОЗУ). Объём составляет 4 КБ.
•Общее число выводов микроконтроллера – 40. Тип корпуса – QFP (Quad Flat Package).
На кристалле микроконтроллера имеются следующие периферийные модули:
•Порты ввода/вывода. Всего доступно 9 портов, более подробное их описание приведено в табл. 2.1.;
•Модуль таймера TIM с 16-разрядным счетчиком временной базы и восемью каналами IC/OC/PWM.
•Встроенный аналого-цифровой преобразователь ATD. Число каналов оцифровки равно 8, разрядность – 10 бит.
•Последовательные интерфейсы: синхронный SPI и асинхронный SCI, а также модуль CAN со скоростью до 1 Мбит/с.
•Модуль обработки внешних прерываний INT.
•Сторожевой таймер COP.
•Модуль неразрушающей отладки BDM с однопроводным интерфейсом связи с ПК.
44
Табл. 2.1. Порты микроконтроллера MC9S12C128
Название |
Имена ножек |
Функции ножек |
Краткое описание |
|
Порт A |
PA[7:0] |
ADDR[15:8] / DATA[15:8] / GPIO |
Ввод/вывод общего назначения |
|
или шины адреса/данных в |
||||
|
|
|
расширенных режимах работы МК. |
|
|
|
|
Ввод/вывод общего назначения |
|
Порт B |
PB[7:0] |
ADDR[7:0] / DATA[7:0] / GPIO |
или шины адреса/данных в |
|
|
|
|
расширенных режимах работы МК. |
|
Порт AD |
PAD[7:0] |
ATD[7:0] |
Аналоговые входы АЦП. |
|
|
PE7 |
NOACC / XCLKS / GPIO |
Ввод/вывод общего назначения |
|
|
PE6 |
IPIPE1 / MODB / GPIO |
или альтернативные функции. |
|
|
PE5 |
IPIPE0 / MODB / GPIO |
|
|
Порт E |
PE4 |
ECLK / GPIO |
|
|
PE3 |
LSTRB / TAGLO / GPIO |
|
||
|
|
|||
|
PE2 |
R/W / GPIO |
|
|
|
PE1 |
IRQ / GPI |
|
|
|
PE0 |
XIRQ / GPI |
|
|
Порт J |
PJ[7:0] |
GPIO |
Ввод/вывод общего назначения с |
|
функцией KBI. |
||||
|
|
|
||
|
PM5 |
SCK |
Тактовый сигнал модуля SPI. |
|
|
PM4 |
MOSI |
Передающая ножка модуля SPI. |
|
|
PM3 |
SS |
Линия выбора МК в качестве |
|
Порт M |
ведомого (модуль SPI). |
|||
|
|
|||
|
PM2 |
MISO |
Принимающая ножка модуля SPI. |
|
|
PM1 |
TXCAN |
Передающая ножка модуля CAN. |
|
|
PM0 |
RXCAN |
Принимающая ножка модуля CAN. |
|
|
PP[7:0] |
PWM[5:0] |
Выходы модуля ШИМ. |
|
Порт P |
GPIO[7:0] |
Ввод/вывод общего назначения с |
||
|
функцией KBI. |
|||
|
|
|
||
|
PP6 |
ROMON |
Входной сигнал ROMON. |
|
|
|
|
Выходы модуля ШИМ |
|
|
|
PWM[4:0] |
(подключаются с помощью записи |
|
Порт T |
PT[7:0] |
|
в регистр MODRR) |
|
|
|
IOC[7:0] |
Каналы таймера |
|
|
|
GPIO |
Ввод/вывод общего назначения |
|
|
PS3 |
GPIO |
Ввод/вывод общего назначения |
|
|
PS2 |
GPIO |
Ввод/вывод общего назначения |
|
Порт S |
PS1 |
TXD |
Передающая ножка модуля SCI. |
|
GPIO |
Ввод/вывод общего назначения |
|||
|
|
|||
|
PS0 |
RXD |
Принимающая ножка модуля SCI. |
|
|
GPIO |
Ввод/вывод общего назначения |
||
|
|
2.2. Карта памяти
На рис. 2.2 показано удобное для понимания распределение адресного пространства, но не устанавливаемое в микроконтроллере после его сброса. Видно, что свободно назначаемые области регистров специальных функций и ОЗУ в любом случае перекроют часть адресов ПЗУ.
45
0x0000 |
Область регистров специальных функций (1K) |
|
… |
Можно назначить на любой диапазон адресов |
|
0x03FF |
размером в 2K |
|
0x0000 |
|
|
… |
Flash с эмуляцией EEPROM (16K) |
|
0x3FFF |
|
|
0x3000 |
ОЗУ (4K) |
|
… |
Можно назначить на любой диапазон адресов |
|
0x3FFF |
размером в 4K |
|
0x4000 |
|
|
…Flash с эмуляцией EEPROM (16K)
0x7FFF
0x8000
…Окно страницы памяти (16K)
Всего доступно 8 страниц по 16K flash EEPROM
|
0xBFFF |
|
|
|
0xC000 |
|
|
|
… |
Flash с эмуляцией EEPROM (16K) |
|
|
|
|
|
|
0xFFFF |
|
|
|
0xFF00 |
|
Векторы прерываний |
|
0XFFFF |
|
|
|
|
|
Рис. 2.2. Распределение адресного пространства микроконтроллера MC9S12C128
По умолчанию карта памяти выглядит следующим образом:
0x0000 |
Область регистров специальных функций (1K) |
|
… |
Можно назначить на любой диапазон адресов |
|
0x03FF |
размером в 2K |
|
0x0000 |
ОЗУ (4K) |
|
… |
Можно назначить на любой диапазон адресов |
|
0x0FFF |
размером в 4K |
|
0x0000 |
|
|
… |
Flash с эмуляцией EEPROM (16K) |
|
0x3FFF |
|
|
0x4000 |
|
|
…Flash с эмуляцией EEPROM (16K)
0x7FFF
0x8000
…Окно страницы памяти (16K)
Всего доступно 8 страниц по 16K flash EEPROM
0xBFFF |
|
|
0xC000 |
|
|
… |
Flash с эмуляцией EEPROM (16K) |
|
|
||
0xFFFF |
|
|
0xFF00 |
Векторы прерываний и сброса |
|
0XFFFF |
||
|
Рис. 2.3. Распределение адресного пространства микроконтроллера MC9S12C128 после сброса
46
Из рис. 2.3 видно, что пространство регистров специальных функций наложится не только на область ПЗУ, но и займёт часть адресов ОЗУ. Поэтому будет доступно только 3 КБ оперативной памяти по адресам $0400..$0x0FFF (3K адресов).
2.3. Цоколёвка выводов корпуса
Расположение выводов микроконтроллера MC9S12C128, выполненного в корпусе 80QFP, представлено на рис. 2.4.
Некоторые выводы микроконтроллера имеют несколько названий, разделённых символом “/”. Такое обозначение указывает на наличие у ножки так называемых альтернативных функций. Т.е. вывод может выполнять одну из нескольких функций по выбору программиста. Первый из перечисленных возле ножки режимов автоматически назначается аппаратными средствами микроконтроллера после включения напряжения.
Рис. 2.4. Разводка выводов микроконтроллера
47
3.Лабораторный стенд ELVIS_S12C128
3.1.Общая характеристика стенда
Внешний вид лабораторного стенда ELVIS_ S12C128 представлен на рис. 3.1. Конструктивно стенд состоит из трех плат с электронными компонентами.
Плата CSMB12С128 предназначена для начального обучения основам микропроцессорной техники на 16-разрядных микроконтроллерах компании Freescale Semiconductor. На ней установлена изучаемая ИС типа MC9S12C128, а также смонтирован интерфейс отладки и программирования Turbo BDM Light USB. Благодаря такуму решению можно загружать разрабатываемое ПО непосредственно в микроконтроллер, позволяя ему исполнять этот код, и наблюдать за этим процессом на экране монитора ПК. Плата CSMB12С128 также содержит небольшое количество устройств ввода/вывода информации. Это позволяет на начальном этапе обучения использовать её отдельно от двух других плат для лабораторных экспериментов.
Вторая плата – это универсальная платформа PBMCUSLK. Она используется для изучения микроконтроллеров различных типов от компании Freescale Semiconductor. Платформа несёт на себе систему стабилизированного питания 5.0 и 3.0 В, интерфейс отладки Turbo BDM Light USB, различные исполнительные устройства. Также плата PBMCUSLK имеет дополнительные устройства ввода/вывода, что несколько расширяет интерфейс между пользователем и изучаемым микроконтроллером. Платформа PBMCUSLK не может быть использована как самостоятельное устройство, а только в комплекте с платой CSMB12С128 или иной аналогичной.
Серый модуль в основании конструкции – это учебный стенд Elvis II компании National Instruments. Он содержит в себе электронную схему, которая позволяет осуществить сопряжение платы PBMCUSLK с виртуальными инструментами, созданными в среде LabVIEW. Очень удобно их использовать в качестве управляющих сигналов для микроконтроллера.
Использование учебного стенда ELVIS_S12C128 в полном комплекте, т.е. состоящего из трех перечисленных устройств, целесообразно на этапе, когда учащийся уже владеет основами программирования микроконтроллеров и способен на языке Ассемблера, а лучше на языке C создать некоторое законченное приложение.
Таким образом, на основе перечисленного оборудования можно создать три конфигурации лабораторных стендов:
•Плата CSMB12С128 + ПК. Два компонента соединяются друг с другом с помощью кабеля USB. При этом плата CSMB12С128 питается от ПК через этот же интерфейс (рис. 3.1).
•Плата CSMB12С128 + платформа PBMCUSLK + ПК. Первый компонент устанавливается в специальный разъём второго. Питание платы CSMB12С128 при этом осуществляется через встроенный стабилизатор универсальной платформы. Последняя, в свою очередь, потребляет энергию или из электрической сети через адаптер ~ 220 В / 9 В, или через интерфейс USB, по которому также осуществляется связь с ПК (рис. 3.11).
•Плата CSMB12С128 + плата PBMCUSLK + платформа ELVIS + ПК. Питание всех компонентов стенда осуществляется от адаптера, прилагаемому к платформе Elvis II (рис. 3.14). Связь с компьютером осуществляется с помощью двух USBкабелей: один отвечает за управление виртуальными приборами, а другой – за отладку микроконтроллера.
Методические указания по корректной инсталляции каждой конфигурации учебного стенда приведены в следующих разделах данной главы.
48
Строго говоря, существует ещё и четвертый вариант проведения экспериментов с микроконтроллером MC9S12C128. Это работа в режиме полной программной симуляции с использованием виртуальных устройств ввода/вывода. О технике создания такого рода элементов Вы узнаете в разделе 4.7 данного пособия.
Полная программная симуляция позволяет выполнять отладку небольших программ без использования реального МК, что удобно при самостоятельных занятиях дома.
Рис. 3.1. Внешний вид стенда ELVIS_S12C128
3.2. Плата микроконтроллера
Плата CSMB12С128 лабораторного стенда несёт на себе следующие устройства:
•Однокристальный микроконтроллер MC9S12C128 в корпусе QFP в 80
выводами.
•Интерфейс отладки и программирования Turbo BDM Light USB со встроенным стабилизатором напряжения питания микроконтроллера. Адаптер BDM выполнен на основе микроконтроллера MC908JB16FAE, который расположен на обратной стороне платы CSMB12C128.
•4 светодиода (LED1..LED4). Активным уровнем, зажигающим эти элементы, является логический ноль.
•4 переключателя (SW3-1..SW3-4). Их схемотехническое устройство не предусматривает аппаратной защиты от дребезга. Предполагается, что при необходимости студент исполнит эти функции на программном уровне.
•2 нефиксируемые кнопки (SW1 и SW2). Их схемотехническое устройство не предусматривает аппаратной защиты от дребезга. Предполагается, что при необходимости студент исполнит эти функции на программном уровне.
•1 потенциометр (RV1). Позволяет задать аналоговый уровень напряжения на входе 5 порта AD микроконтроллера.
49
•1 фотодатчик (RZ1). Выполнен на основе фототранзистора. Сигнал с него усиливается операционным усилителем и поступает в аналоговом виде на ножку 4 порта AD микроконтроллера.
•Интерфейс RS-232 для изучения передачи данных между микроконтроллером и компьютером по последовательному асинхронному интерфейсу.
Внешний вид платы CSMB12С128 представлен на рис. 3.2.
Рис. 3.2. Внешний вид платы CSMB12С128
Функциональная схема сопряжения перечисленных устройств и изучаемого микроконтроллера изображена на рис. 3.3. Изменить способ подключения периферийных компонентов нельзя, поэтому нужно выполнять программирование направление передачи линий портов так, как обозначено.
50