Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Организация памяти и портов ввода/вывода




 

Микроконтроллеры семейства 68 HC 08/908 адресуют 64 Кбайт внутренней памяти (адреса $0000–FFFF). Распределение адресного пространства задается картой памяти, вид которой определяется объемом внутренней памяти и набором периферийных устройств, входящим в состав данной модели микроконтроллера. На рис. 4.1 приведена карта памяти для микроконтроллеров MC 68 HC 908 GP 32.

В адресном пространстве имеется ряд неиспользуемых позиций, которые соответствуют ячейкам памяти, отсутствующим в данной модели микроконтроллеров. При обращении к этим адресам производится перезапуск микроконтроллера.

Младшие 64 позиции адресного пространства (адреса $000–$003F) занимают регистры служебных и периферийных модулей, табл. 4.1

Отметим, что 16-разрядные регистры таймерных модулей TCNТ, TMOD, TCHx занимают по две позиции адресного пространства: младший байт с суффиксом l, старший байт с суффиксом h.

В адресном пространстве ОЗУ располагаются ячейки стека, которые адресуются с помощью указателя стека SP. При установке микроконтроллера в начальное состояние (запуске) содержимое SP принимает значение $00FF, адресуя ячейку ОЗУ с данным адресом. В процессе выполнения программы можно установить любое значение указателя стека с помощью команды TXS, которая загружает в SP содержимое индексного регистра H:X, уменьшенное на 1. После записи байта в стек содержимое SP уменьшается на 1, адресуя следующую незаполненную ячейку стека. Таким образом, стек заполняется в направлении уменьшения адресов. Адрес вершины стека (последней заполненной ячейки стека) можно загрузить в регистр H:X с помощью команды TSX.

 

$0000 $003F Регистры периферийных и служебных модулей (64 байт)
$0040 $023F ОЗУ данных (512 байт)
$0080 $7FFF Не используется (32 192 байт)
$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 байт)

 

Рис. 4.1. Карта памяти для микроконтроллера

MC 68 HC 908 GP 32

 

 

Таблица 4.1

Адреса регистров периферийных модулей

Адрес Регистр Назначение
$0000 PTA Регистры данных портов A, B, C, D
$0001 PTB
$0002 PTC
$0003 PTD
$0004 DDRA Регистры направления передачи портов A, B, C, D
$0005 DDRB
$0006 DDRC
$0007 DDRD
$0008 PTE Регистр данных порта E
$0009-0B Не используются
$000C DDRE Регистр направления передачи порта E
$000D PTAPUE Регистры управления подтягивающими резисторами портов A, C, D
$000E PTCPUE
$000F PTDPUE
$0010 SPCR Регистры синхронного порта SPI08
$0011 SPSСR
$0012 SPDR
$0013 SCC1 Регистры асинхронного порта SCI08
$0014 SCC2
$0015 SCC3
$0016 SCS1
$0017 SCS2
$0018 SCDR
$0019 SCBR

 

001A INTKBSCR Регистры модуля KBI08
$001B INTKBIER
$001C TBCR Регистр базового таймера TBM08
$001D INTSCR Регистр прерываний
$001E CONFIG2 Регистры конфигурации
$001F CONFIG1
$0020 T1SC Регистры таймерного модуля TIM08-1
$0021-22 T1CNTh-l
$0023-24 T1MODh-l
$0025 T1SC0
$0026-27 T1CH0h-l
$0028 T1SC1
$0029-2A T1CH1h-l
$002B T2SC Регистры таймерного модуля TIM08-2
$002C-2D T2CNTh-l
$002E-2F T2MODh-l
$0030 T2SC0
$0031-32 T2CH0h-l
$0033 T2SC1
$0034-35 T2CH1h-l
$0036 PCTL Регистры модуля генератора импульсов CGM08
$0037 PBWC
$0038-39 PMSh-l
$003A PMRS
$003B PMDS
$003C ADSCR Регистры модуля ADC08
$003D ADR
$003E ADCLK

 

Микроконтроллер MC 68 HC 908 GP 32 имеет внутреннюю Flash-память, содержимое которой может стираться и записываться при работе в режиме отладки или в процессе выполнения прикладной программы. Допускается до 10000 циклов стирания–программирования, время хранения информации составляет более 10 лет. Необходимое для программирования повышенное напряжение обеспечивается внутренним преобразователем, поэтому не требуется подключение внешнего источника. Специальный механизм защиты позволяет предотвратить случайное стирание содержимого Flash-памяти. Наличие байтов секретности позволяет предотвратить несанкционированное считывание информации.

На кристалле микроконтроллера содержится 512 байт статической оперативной памяти, ячейки которой имеют адреса в диапазоне $0040–$023F. Обычно ОЗУ используется для хранения переменных и реализации стека.

Часть адресного пространства занята ячейками служебного ПЗУ, в котором содержится программа-монитор, которая реализует необходимые процедуры при работе микроконтроллера в режиме отладки, обеспечивая возможность контроля его внутреннего состояния. Это масочно-программируемое ПЗУ, содержимое которого записывается в процессе изготовления микроконтроллера.

В старших позициях адресного пространства располагаются вектора начального запуска и прерываний.

Процессоры семейства 68HC08/908 выполняют прерывание текущей программы по одной из следующих причин:

– поступление команды прерывания SWI;

– поступление внешнего запроса прерывания на входе IRQ#, обслуживание которого реализуется с помощью модуля IRQ08;

– поступление запроса прерывания в контрольной точке, который формируется модулем BREAK08;

– поступление внутренних запросов прерывания от периферийных устройств, расположенных на кристалле микроконтроллера.

Эти события вызывают прерывание выполнения текущей программы и переход к подпрограмме - обработчику прерывания, который обеспечивает необходимую реакцию микроконтроллера. При поступлении команды SWI или соответствующего запроса процессор завершает выполнение текущей команды и выполняет цикл перехода к обработке прерывания, в процессе которого реализуются следующие операции:

– загрузка в стек содержимого регистров процессора в следующей последовательности: CCR - A - X - PCh - PCl, где PCh, PCl – старший и младший байты содержимого PC, X – значение младшего байта индексного регистра H:X;

– загрузка в PC 16-разрядного вектора прерывания Ve – адреса первой команды обработчика прерываний, соответствующего наступившему событию.

Значение вектора Ve выбирается из таблицы векторов прерываний, размещенной в конце адресуемого объема памяти (см. рис. 1.2).

Обработчик прерывания должен заканчиваться командой возврата из прерывания RTI, которая выбирает из стека и восстанавливает содержимое регистров PC, X, A, CCR, обеспечивая продолжение выполнения прерванной программы.

Необходимо иметь в виду, что в цикле перехода к обработке прерываний в стеке автоматически сохраняется только младший байт индексного регистра X. Чтобы обеспечить сохранение старшего байта индексного регистра H следует в начале обработчика прерываний ввести команду PSHH(загрузка в стек содержимого байта H), а перед командой RTI выполнить команду PULH, которая извлекает из стека и восстанавливает содержимое старшего байта H индексного регистра.

Для размещения таблицы векторов прерываний в микроконтроллерах семейства 68HC08/908 зарезервировано 64 байт адресного пространства (адреса $FFD0-FF), из которых в микроконтроллере MC68HC908GP32 используется 36 байт. В табл. 4.2 показано размещение векторов для этого микроконтроллера.

Нижнюю позицию в таблице векторов занимает вектор начального запуска (RESET), а перед ним располагается вектор программного прерывания по команде SWI. Выше размещаются вектора аппаратных прерываний, которые вызываются поступлением запроса от внешних устройств на вход IRQ#, запросов прерывания от таймера и других модулей микроконтроллера.

 

Таблица 4.2

Размещение векторов прерывания для

микроконтроллераMC68HC908GP32

Запрос базового таймера TBM08 $FFDC-DD
Запрос модуля ADC08 $FFDE-DF
Запрос модуля KBI08 $FFE0-E1
  Запросы модуля SCI08 $FFE2-E3
$FFE4-E5
$FFE6-E7
Запросы модуля SPI08 $FFE8-E9
$FFEA-EB
Переполнение таймера TIM08-2 $FFEC-ED
Запрос канала 1 таймера TIM08-2 $FFEE-EF
Запрос канала 0 таймера TIM08-2 $FFF0-F1
Переполнение таймера TIM08-1 $FFF2-F3
Запрос канала 1 таймера TIM08-1 $FFF4-F5
Запрос канала 0 таймера TIM08-1 $FFF6-F7
Запрос модуля CGM08 $FFF8-F9
Прерывание по внешнему запросу IRQ# $FFFA-FB
Команда SWI (программное прерывание) $FFFC-FD
Вектор начального запуска (Reset) $FFFE-FF

 

Поступление запросов прерывания проверяется микроконтроллером после выполнения каждой команды программы. Если поступило нескольких запросов, то в первую очередь обслуживается запрос с более высоким приоритетом. Запросы имеют фиксированные приоритеты в соответствии с порядком их расположения в таблице векторов прерываний (табл. 1.2): чем больше адрес, тем выше приоритет. Таким образом, из аппаратных прерываний наивысший приоритет имеет внешний запрос IRQ#, затем запрос генератора тактирующих импульсов CGM08 и сигналы таймера. Минимальный приоритет имеют запросы, вектора которых размещены в верхней части (табл. 4.2) – запросы ADC08 и других модулей. МК MC68HC908GP32 обладает 33 линиями ввода/вывода данных. Эти линии объеди­нены в 8-разрядные параллельные порты, которые именуют в соответствии с буквами латинского алфавита: Port A, Port В, Port С, Port D, Port H.

Все линии ввода/вывода МК MC 68 HC 908 GP 32– двунаправленные, т.е. могут исполь­зоваться разработчиком как для ввода данных в МК, так и для вывода логических сигна­лов. Направление передачи линий ввода/вывода настраивается программно путем за­писи управляющих слов в регистры специальных функций. Возможно изменение направ­ления передачи в ходе выполнения программы посредством перепрограммирования этих регистров. Сигнал сброса устанавливает все линии в режим ввода. Направление пере­дачи каждой линии может быть выбрано разработчиком произвольно, независимо от других линий, принадлежащих к одному и тому же порту ввода/вывода.

Большинство линий ввода/вывода обладают так называемой альтернативной функ­цией. Эти линии связаны со встроенными в МК периферийными устройствами, они обес­печивают связь периферийных модулей с «внешним миром». Так, линии порта Port В используются для подключения к встроенному АЦП измеряемых напряжений, линии дру­гих портов служат линиями ввода/вывода последовательных приемопередатчиков. Если соответствующий периферийный модуль МК не используется, то его выводы можно за­действовать как обычные линии ввода/вывода. По способу схемного решения выходного драйвера различают два типа линий ввода/ вывода:

– линии с обычной схемотехникой двунаправленной линии ввода/вывода;

– двунаправленные линии с программно-подключаемыми в режиме ввода подтяги­
вающими резисторами RPULLUP.

Если порт имеет «обычную» схемотехнику, то для его обслуживания предусмотрены два типа регистров:

– РТх - регистр данных порта х, где х - имя порта ввода/вывода;

– DDRx - регистр направления передачи порта х.

Если порт имеет схемотехнику с программно-подключаемым «подтягивающим» рези­стором, то для обслуживания порта предусмотрены три регистра:

– РТх - регистр данных порта х;

– DDRx - регистр направления передачи порта х;

– PTxPUE - регистр входного сопротивления порта х.

Так, порт PortA микроконтроллера MC68HC908GP32 обслуживается регистрами РТА, DDRA и PTAPUE. В приложении Г, Д, Е приведен формат регистров специальных функций РТх, DDRx и PTxPUE. Заметим, что формат регистров РТх и DDRx для портов с различной схемотехникой полностью совпадает.

Детальный формат всех регистров специальных функций портов ввода/вывода при­веден на рис. 4.2.

 


 

Рис. 4.2. Регистры для обслуживания портов ввода/вывода МК МС 68 НС 908 GP 32




Поделиться с друзьями:


Дата добавления: 2017-01-14; Просмотров: 655; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.03 сек.