- •Теория микропроцессорных систем микроконтроллеры
- •Структура и функциональные возможности мк51
- •Электрический интерфейс мк51
- •Резидентная память данных
- •Работа блока управления и синхронизации
- •Элементы данных в мк51
- •Характеристика функциональных групп команд
- •2.5. Система команд семейства mcs-51.
- •2.5.1. Команды пересылки данных.
- •Команда обработки данных.
- •Команды передачи управления.
- •Характеристика периферийных блоков в составе мк51
- •Управление таймерами-счетчиками (т/с)
- •Описание вариантов конфигурации таймеров-счетчиков
- •Особенности реализации временных интервалов
- •Структура последовательного порта и принципы управления
- •Описание режимов работы уапп
- •Назначение и принципы функционирования системы прерываний
- •Управление приоритетами запросов прерываний
- •Работа системы обслуживания прерываний
- •Заполнение начальной области памяти программ
- •Шестнадцатиразрядные микроконтроллеры Motorola
- •Современные встраиваемые микроконтроллеры, выпускаемые производственной фирмой Freescale Semiconductor
- •Номенклатура и функциональный состав микроконтроллеров cемейства 68hcs12
- •2.1. Микроконтроллеры семейства 68нс12/912
- •2.1.3. Начальный запуск и обработка прерываний
- •2.1.4. Режимы работы и конфигурация микроконтроллеров
- •2.1.5. Функционирование и программирование Flash-памяти и эсппзу
- •2.1.6. Блок контроля функционирования и генератор тактовых импульсов
- •2.1.7. Параллельный ввод-вывод данных и подключение внешней памяти
- •2.1.8. Последовательные порты sci и spi
- •2.1.9. Таймерные модули и широтно-импульсные модуляторы
- •2.1.10. Модуль аналого-цифрового преобразователя atd
- •2.1.11. Модуль последовательного интерфейса msCan
- •2.1.12. Режим отладки bdm и установка контрольных точек
2.1.7. Параллельный ввод-вывод данных и подключение внешней памяти
Параллельный обмен данными между микроконтроллерами семейства 68НС12/912 и внешними устройствами производится с помощью портов, количество которых для различных моделей составляет от 8 до 12.
Таблица 2.18. Состав и функции выводов портов для микроконтроллеров
семейства 68НС12/912
Состав и функции параллельных портов. Назначение выводов параллельных портов для ряда микроконтроллеров семейства 68НС11/711 указано в табл. 2.18. Порты имеют до восьми линий ввода-вывода (i/o), некоторые порты и линии служат только для ввода данных (i). Выводы ряда портов используются для выполнения альтернативных функций, обеспечивая обмен с внешней памятью в расширенном режиме (передачу адреса и данных), передачу входных и выходных сигналов для других устройств - последовательных портов SCI, SPI, таймера, АЦП, ШИМ, контроллеров шин CAN, BDLC, I2C. При работе этих устройств соответствующие выводы служат для передачи сигналов, обеспечивающих их функционирование, и не используются в качестве входов или выходов параллельных портов. Большинство портов обеспечивает передачу 8-разрядных данных, однако в некоторых моделях имеются порты с меньшим числом линий ввода-вывода.
Параллельные двунаправленные порты (i/o) содержат 8-разрядные регистры данных PORTx и регистры направления пересылки DDRx (символ х = А, В, С, D, Е, F, G, H, J, К, Р, S, T, DLC, IB, CAN, AD указывает имя порта). В регистры DDRx вводится управляющий код, программирующий направление передачи для каждого вывода порта: если i-й бит DDRxi имеет значение 0, то соответствующий вывод порта PTxi является входом, если DDRxi =1 - то выходом. В процессе начального запуска микроконтроллера в регистрах DDRx устанавливается нулевое значение всех битов, поэтому в исходном состоянии порты запрограммированы на выполнение ввода данных. Однонаправленные порты ввода AD имеют только регистры данных.
Обращение к портам производится с помощью команд LDAA, LDAB и STAA, STAB, как это описано в 1.3.6 для семейства 68НС11/711. Адреса регистров портов для семейства 68НС12/912 приведены в табл. 2.19. Для портов J, G, Н в скобках указаны адреса, используемые в модели 68НС812А4.
Таблица 2.19. Адреса регистров портов для микроконтроллеров семейства 68НС12/912
Назначение портов А, В, Е (а также портов С, D для модели 68НС812А4) зависит от режима использования микроконтроллера. При работе в автономном режиме эти порты служат для ввода-вывода данных, при работе в расширенных режимах они используются для выдачи адреса и обмена данными при обращении к внешней памяти. При этом назначение выводов порта Е определяется содержимым регистра PEAR (рис. 2.14), отдельные биты которого имеют следующее назначение:
NDBE - при NDBE=1 вывод РЕ7 используется для ввода-вывода данных, при NDBE=0 на этот вывод поступает сигнал разрешения передачи данных DBE#, используемый при обращении к внешней памяти в расширенном режиме;
PIPOE - при РIРОЕ=0 выводы РЕ6-5 используются для ввода-вывода данных, при РIРОЕ=1 эти выводы служат для указания состояния очереди команд (см. 2.1.2);
NECLK - при NECLK=0 на вывод РЕ4 поступают сигналы тактовой частоты ECLK, при NECLK=1 этот вывод в автономном режиме используется для ввода-вывода данных, если в регистре MODE (см. 2.1.3) установлено значение бита ESTR=0 (в расширенных режимах значение NECLK всегда равно 0);
LSTRE - при LSTRE=0 вывод PE7 используется для ввода-вывода данных, при LSTRE=1 на этот вывод в расширенном 16-разрядном режиме поступает сигнал разрешения передачи данных LSTRB#, используемый при обращении к внешней памяти (в автономном и расширенном 8-разрядном режимах значение LSTRE всегда равно 0);
RDWE - при RDWE=0 вывод PE7 используется для ввода-вывода данных, при RDWE=1 на этот вывод в расширенных режимах поступает сигнал записи-считывания, используемый при обращении к внешней памяти (в автономном режиме значение RDWE всегда равно 0);
CGMTE (для моделей 68HC912D60, DG128, 68НС812А4) - при значении CGMTE=1 разрешает в специальном режиме использование вывода РЕ6 в качестве выхода сигнала тестирования ГТИ;
ARSIE (только для модели 68НС812А4) - при ARSIE=0 вывод PE7 служит для ввода-вывода данных, при ARSIE=1 этот вывод используется для запуска микроконтроллера при поступлении высокого уровня потенциала (сигнал RESET).
Рис. 2.14. Формат содержимого регистра PEAR (адрес $000A)
В моделях 68HC912D60, DG128 используются дополнительные биты, задающие функции вывода РЕ7 порта Е:
CALE - определяет использование вывода РЕ7 при значении бита NDBE=1: ввод-вывод данных при CALE=0, выход сигналов калибрации с частотой Fs (см. 2.1.5) при CALE=1;
DBENE - определяет использование вывода РЕ7 в расширенных режимах при значении бита NDBE=0: выход сигнала передачи данных DBE# при DBENE=0, выход инвертированных тактовых импульсов при DBENE=1.
При запуске микроконтроллера в расширенных режимах все биты в регистре PEAR принимают значение 0, в автономном режиме устанавливаются значения NDBE=NECLK=1. При даленейшей работе допускается только однократная запись (изменение) значений битов NDBE, PIPOE, NECLK, LSTRE, RDWE, DBENE.
К выводам портов подключаются резисторы, «подтягивающие» их потенциал к напряжению питания (pull-up), если соответствующий бит PUPx (символ х указывает имя порта - А, В, С, D, E, F, G, Н или К) в регистре PUCR (рис. 2.15) установлен в единицу.
Рис. 2.15. Формат содержимого регистра PUCR (адрес $000С) для моделей
68НС812А4 (а), 68НС912В32, ВС32 (б), 68HC912D60 (в), 68HC912DG128 (г)
В микроконтроллерах 68НС81А4 для выводов порта J возможно подключение резисторов, «подтягивающих» их потенциал к напряжению питания (pull-up) или к потенциалу «земли» (pull-down). Эти возможности реализуются с помощью 8-разрядных регистров PULEJ (адрес $002Е) и PUPSJ (адрес $002D). Если i-й бит в регистре PULEJ равен 1, то к соответствующему выводу PJi порта J при работе в режиме ввода данных подключается резистор, «подтягивающий» его потенциал к напряжению питания или «земли». При этом i-й бит в регистре PUPSJ определяет потенциал, к которому подключается «подтягивающий» резистор: если значение бита равно 0, то резистор подключается к потенциалу «земли» (pull-down), если равно 1, то к напряжению питания (pull-up).
Для портов микроконтроллера предусмотрена возможность работы с пониженными выходными токами (уменьшенной нагрузочной способностью). В нормальном режиме эти выводы обеспечивают протекание выходных токов нагрузки Iн0=1,6 мА при низком уровне потенциала на выходе U0 и Iн1=0,8 мА при высоком уровне U1. Для снижения потребляемой мощности можно обеспечить режим работы выходных каскадов с пониженными выходными токами Iн0=0,6 мА и Iн1=0,3 мА, если установить в регистре RDRIV (рис. 2.16) значения битов RDPx=l (символ х указывает имя порта - А, В, С, D, E, F, G, Н или К, бит RDPAB обеспечивает снижение токов нагрузки для портов А и В). Отметим, что снижение выходных токов приводит к уменьшению быстродействия, особенно при повышенной емкости нагрузки.
Рис. 2.16. Формат содержимого регистра RDRIV (адрес $000D) для моделей
68НС812А4 (а), 68НС912В32(б), 68HC912D60 (в), 68HC912DG128 (г)
Возможности подключения «подтягивающих» резисторов и снижения выходных токов предусмотрены также и для других портов микроконтроллера. Для порта S эти возможности реализуются с помощью регистра PURDS (рис. 2.17), где биты PUPS0, PUPS 1 и PUPS2 при значении 1 вызывают подключение «подтягивающих» резисторов к выводам PS1-0, PS3-2 и PS7-4 соответственно а биты RDPS0, RDPS1 и RDPS2 обеспечивают для этих выводов снижение выходных токов Iн0, Iн1.
Рис. 2.17. Формат содержимого регистра PURDS (адрес $00DB)
Для портов Р, Т, DLC, CAN, IB биты PUPx, RDPx, определяющие режим работы выходных каскадов, содержатся в регистрах управления модулей ШИМ, таймеров, контроллеров CAN, BDLC, I2C, которые подключены к этим портам.
При запуске микроконтроллера биты PUPx, RDPx во всех регистрах принимают значение 0, обеспечивая исходный режим работы выходных каскадов портов без «подтягивающих» резисторов и с нормальными значениями выходных токов Iн0, Iн1.
Использование портов для формирования запросов прерывания. Как отмечено в 2.1.3, формирование запросов прерывания KWi производится при подаче соответствующих сигналов на входы некоторых портов микроконтроллеров:
D, H, J - для модели 68НС812А4,
G, Н - для модели 68HC912D60,
J, H - для модели 68HC912DG128.
Эти функции реализуются с помощью регистров KWIEx, KWIFx (символ х указывает имя порта х = D, G, J, H), KPQL, KWPJ, KWPH, адреса которых приведены в табл. 2.20.
В регистрах KWIFx (x=D, G, Н или J) соответствующие биты фиксируют поступление сигналов, вызывающих прерывание, на i-й вход порта х = D, G, Н или J. Содержимое регистров KWIEx разрешает при установке i-ro бита в 1 формирование запросов прерывания при поступлении сигнала на i-й вход порта х.
Таблица 2.20. Адреса регистров, управляющих формированием запросов прерывания KW
Обычно сигналом, вызывающим прерывание, является поступление отрицательного перепада потенциала на соответствующий вывод порта. Однако для порта J в микроконтроллерах 68НС812А4 и портов J, H в микроконтроллерах 68HCDG128 вид сигнала, вызывающего прерывание, определяется содержимым регистров KPOLJ и KWPJ, KWPH. Если значение i-ro бита в этих регистрах равно 0, то запрос прерывания формируется при отрицательном перепаде потенциала на i-м входе данного порта, если значение i-ro бита равно 1, то при положительном перепаде потенциала на соответствующем входе.
В микроконтроллерах 68HC912D60, DG128 сигналы KWi, поступающие на входы портов G, Н или J, H, вызывают обращение к вектору прерывания с адресом $FFCE-CF (см. 2.1.3). В микроконтроллерах 68НС812А4 запросы, поступающие от портов D, J, H, вызывают разные векторы прерываний:
запросы от порта D - вектор с адресом $FFF2-F3 (как и для запроса IRQ);
запросы от порта J - вектор с адресом $FFD0-D1;
запросы от порта Н - вектор с адресом $FFCE-CF.
Обычно сигналы KWi используются для перевода микроконтроллера из режима ожидания или останова в рабочий режим.
Подключение внешней памяти. В расширенных режимах работы микроконтроллеры семейства 68НС12/912 используют для обращения к внешней памяти мультиплексированную шину адреса-данных с управляющими сигналами DBE -адресный строб, R/W# - сигнал чтения-записи (рис. 2.18), которые поступают на соответствующие выводы порта Е (см. рис. 2.1). Порт А служит для передачи старшего байта адреса А15-8 и данных D15-8, порт В - для передачи младшего байта адреса А7-0 и данных D7-0. При 8-разрядном расширенном режиме передается только младший байт данных D7-0, который поступает на выводы РА7-0 порта А.
Запись или чтение данных производится за один период тактовых сигналов на выходе ECLK, который имеет длительность Tt=1/Ft. Временные диаграммы сигналов для циклов записи и чтения приведены на рис. 2.18. В первой половине цикла на выводы AD15-0 портов А, В поступает адрес, устанавливается соответствующий уровень сигнала записи-чтения R/W# (0 - запись, 1 - чтение), а также выдается строб передачи младшего байта LSTRB# =0, если в регистре PEAR значение бита LSTRE=1. Во второй половине цикла передаются данные, при этом устанавливается сигнал передачи данных DBE# =0.
В микроконтроллерах 68НС812А4 для обращения к внешней памяти используется раздельная шина: младший байт данных D7-0 поступает на выводы PD7-0 порта D, старший байт данных D15-8 - на выводы РС7-0 порта С, младший байт адреса А7-0 - на выводы РВ7-0 порта В, старший байт адреса А15-8 - на выводы РА7-0 порта А. При этом на выводы PG5-0 порта G могут дополнительно выводиться еще 6 старших разрядов адреса А21-16, обеспечивая возможность работы с памятью объемом до 4 Мбайт. При раздельной шине адреса-данных не требуется выдача сигнала DBE#, поэтому для управления обращением к внешней памяти используется только сигнал R/W# и, если необходимо, сигнал LSTRB#. На выводах порта F в этих микроконтроллерах могут формироваться сигналы разрешения выборки CS# при обращении к различным разделам адресного пространства.
Рис. 2.18. Временные диаграммы цикла записи-чтения содержимого внешней памяти в расширенных режимах
