КАТЕГОРИИ: Архитектура-(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.
Рис. 4.1. Карта памяти для микроконтроллера MC 68 HC 908 GP 32
Таблица 4.1 Адреса регистров периферийных модулей
Микроконтроллер 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
Поступление запросов прерывания проверяется микроконтроллером после выполнения каждой команды программы. Если поступило нескольких запросов, то в первую очередь обслуживается запрос с более высоким приоритетом. Запросы имеют фиксированные приоритеты в соответствии с порядком их расположения в таблице векторов прерываний (табл. 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 В используются для подключения к встроенному АЦП измеряемых напряжений, линии других портов служат линиями ввода/вывода последовательных приемопередатчиков. Если соответствующий периферийный модуль МК не используется, то его выводы можно задействовать как обычные линии ввода/вывода. По способу схемного решения выходного драйвера различают два типа линий ввода/ вывода: – линии с обычной схемотехникой двунаправленной линии ввода/вывода; – двунаправленные линии с программно-подключаемыми в режиме ввода подтяги Если порт имеет «обычную» схемотехнику, то для его обслуживания предусмотрены два типа регистров: – РТх - регистр данных порта х, где х - имя порта ввода/вывода; – DDRx - регистр направления передачи порта х. Если порт имеет схемотехнику с программно-подключаемым «подтягивающим» резистором, то для обслуживания порта предусмотрены три регистра: – РТх - регистр данных порта х; – DDRx - регистр направления передачи порта х; – PTxPUE - регистр входного сопротивления порта х. Так, порт PortA микроконтроллера MC68HC908GP32 обслуживается регистрами РТА, DDRA и PTAPUE. В приложении Г, Д, Е приведен формат регистров специальных функций РТх, DDRx и PTxPUE. Заметим, что формат регистров РТх и DDRx для портов с различной схемотехникой полностью совпадает. Детальный формат всех регистров специальных функций портов ввода/вывода приведен на рис. 4.2.
Рис. 4.2. Регистры для обслуживания портов ввода/вывода МК МС 68 НС 908 GP 32
Дата добавления: 2017-01-14; Просмотров: 656; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |