
- •Теория микропроцессорных систем микроконтроллеры
- •Структура и функциональные возможности мк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.6. Блок контроля функционирования и генератор тактовых импульсов
В состав модуля интеграции LIM входят блок контроля функционирования и генератор тактовых импульсов. Их структура и особенности функционирования рассматриваются в данном разделе.
Блок контроля функционирования в микроконтроллерах семейства 68НС12/912 в основном аналогичен соответствующему блоку в моделях 68НС705С8А, С9А семейства 68НС05/705 (см. 1.1.7). В его состав входят сторожевой таймер и монитор частоты тактовых импульсов. Сторожевой таймер вызывает перезапуск микроконтроллера при нарушении выполнения («зависании») текущей программы, монитор тактовых импульсов производит перезапуск при снижении их частоты ниже 200 кГц. При перезапуске в программный счетчик PC загружается содержимое ячейки памяти с адресом $FFFA-FB или $FFFC-FD (см. 2.1.3, табл. 2.14).
Работой блока управляет регистр COPCTL (рис. 2.11), биты которого имеют следующее назначение:
СМЕ - разрешает (при СМЕ=1) или запрещает (при СМЕ=0) работу монитора частоты тактовых импульсов;
Рис. 2.11. Формат содержимого регистра COPCTL (адрес $0016)
FCME - при FCME=1 обеспечивает контроль частоты тактовых импульсов при любом значении СМЕ;
FCM - признак отсутствия или низкой частоты тактовых импульсов (доступен только для чтения), принимает значение FCM=1 по сигналу монитора тактовых импульсов;
FCOP - признак нарушения выполнения программы (доступен только для чтения), принимает значение FCOP=1 по сигналу сторожевого таймера;
DISR - разрешает при значении DISR=0 перезапуск микроконтроллера по сигналу сторожевого таймера (FCOP=1) или монитора тактовых импульсов (FCM=1);
CR2-0 - задают коэффициент деления частоты Kw, определяющий период срабатывания сторожевого таймера в соответствии с табл. 2.17.
В рабочем режиме после запуска микроконтроллера все биты в регистре COPCTL устанавливаются в 0, а содержимое поля CR2-0 принимает значение 001. Значение бита FCME и содержимое поля CR2-0 после запуска могут быть изменены только однажды.
В моделях 68HC912D60(A), 68HC912DG128(A) изменено назначение 2 бит:
FCMCOP - признак нарушения функционирования (доступен только для чтения), принимает значение FCMCOP=1 при низкой тактовой частоте (сигнал монитора тактовой частоты) или при нарушении выполнения программы (сигнал сторожевого таймера);
WCOP - задает при установке значения WCOP=1 режим работы сторожевого таймера, при котором его сброс осуществляется в конце заданного периода срабатывания.
Контроль выполнения программы с помощью сторожевого таймера осуществляется путем периодической записи в регистр COPRST (адрес $0017) чисел $55, а затем $АА. Промежуток времени между записью этих чисел не должен превышать период Tw, значение которого определяется выражением Tw = Kw/Ft, где коэффициент Kw задается битами CR2-0 в регистре СОРСТ (табл. 2.17). Если в течение времени Tw запись этих чисел не выполнена, то формируется выходной сигнал RESET# =0 и производится перезапуск микроконтроллера (процедура RESET). При тактовой частоте Ft = 8 МГц значение Tw будет составлять от 1,024 мс до 1,0486 с. Если содержимое поля CR2-0=000, то сторожевой таймер выключается.
Таблица 2.17. Значения коэффициента деления Kw для микроконтроллеров
семейства 68НС12/912
В микроконтроллерах 68HC912D60(A), 68HC912DG128(A) при значении бита WCOP=1 запись соответствующего числа в регистр COPRST должна производиться в течение последней четверти периода Tw. Более ранняя запись вызовет перезапуск микроконтроллера.
Монитор тактовых импульсов контролирует значение частоты тактовых импульсов Ft и производит перезапуск микроконтроллера (процедура RESET), если Ft<200 кГц. При этом формируется выходной сигнал RESET# =0 для запуска других устройств системы. Если предполагается работа микроконтроллера на низких частотах, то монитор следует отключать установкой значения бита FCME=0.
Генераторы тактовых импульсов (ГТИ), используемые в различных моделях микроконтроллеров семейства 68НС12/912, имеют разную структуру и свои особенности функционирования. В некоторых моделях, например 68НС912ВС32, используется простой ГТИ, который формирует тактовые импульсы, частота которых Ft = Fq/2, где Fq - резонансная частота кварцевого кристалла, подключенного к выводам EXTAL, XTAL, или частота внешних импульсов, подаваемых на вывод EXTAL.
Модели 68НС12ВЕ32, 68HC19D32 имеют в составе ГТИ дополнительный делитель частоты, который позволяет снизить тактовую частоту при работе микроконтроллера в режиме ожидания. Коэффициент деления задается значением трех младших бит SLD2-0 в регистре SLOW (адрес $00Е0). При записи в регистр значений SLD2-0 = 0, 1, 2, 3, 4, 5, 6, 7 реализуются соответственно следующие коэффициенты деления: Kd = 1, 2, 4, 8, 16, 32, 64, 128. Таким образом, в режиме ожидания можно обеспечить существенно более медленную работу периферийных устройств, что позволяет сократить потребление мощности.
Наиболее сложную реализацию имеет ГТИ в моделях 68HC912D60, 68HC912DG132. Его структура в основном аналогична модулю формирования тактовых импульсов CGM08 в ряде микроконтроллеров семейства 68НС08/908 (см. 1.2.3). В состав этого ГТИ входят два генератора импульсов - CG и PG, а также ряд делителей частоты.
Генератор CG формирует импульсы с частотой Fq, задаваемой внешним резонатором. Импульсы от генератора CG поступают на программируемый делитель DS, который выдает последовательность импульсов с частотой Fs = Fq/Ks. Коэффициент деления Ks = 2 х S, где S = 1...63 - число, задаваемое содержимым шести младших бит SLDV5-0 регистра SLOW (адрес $003Е). При значении S=0 величина Ks=1. Импульсы с частотой Fs могут выдаваться на вывод РЕ7 порта Е (см. 2.1.6) в качестве сигналов калибрования для внешних устройств.
Генератор PG формирует импульсы с частотой Fp = М х Fr, используя схему фазовой автоподстройки частоты (ФАПЧ), которая выполняет умножение опорной частоты Fr, поступающей на вход этого генератора. Коэффициент умножения М = (SIN + 1) = 1...64, где SIN - число, задаваемое содержимым шести младших битов SIN5-0 в регистре SINR (адрес $0038). Сигналы опорной частоты Fr = Fq/R для генератора PG формируются путем деления на коэффициент R частоты импульсов, поступающих с выхода генератора CG. Коэффициент деления R = (REF + 1) = 1...8, где REF - число, задаваемое содержимым трех младших бит REFDV2-0 регистра REFDV (адрес $0039). Путем записи в регистры SINR, REFDV различных значений SIN, REF можно обеспечить на выходе генератора PG импульсы, частота которых Fp = Fq x (M/R) будет находиться в диапазоне от 64Fq до Fq/8.
Для нормальной работы генератора необходимо подключить низкочастотный фильтр (рис. 2.12) к выводу XFC микроконтроллера (см. рис. 2.1). Параметры фильтра (сопротивление резистора Rf и емкость конденсатора Cf) выбираются в зависимости от режима работы схемы ФАПЧ. Например, при значениях Fr = 4 МГц, Fp = 8 МГц (коэффициенты SIN = $01, REF = $00) рекомендуемые значения Cf = 33 нФ, Rf=2,7 кОм, Cp = 3,3 нФ.
Рис. 2.12. Подключение низкочастотного фильтра к выводу XFC микроконтроллера
Таким образом, в ГТИ формируется 3 последовательности импульсов с частотами Fq, Fs, Fp, которые после деления их частоты на 2 могут использоваться в качестве тактовых сигналов, определяющих скорость работы процессора и других модулей микроконтроллера. Выбор той или иной последовательности для получения тактовых импульсов определяется значением битов BCSP, BCSS в регистре CLKSEL (рис. 2.13, в). При этом тактовая частота будет составлять Ft = Fq/2, или Fs/2, или Fp/2. Сигналы тактовой частоты ECLK выдаются на вывод РЕ4 порта Е, задавая длительность цикла при обращении к внешней памяти (см. 2.1.6).
Рис. 2.13. Формат содержимого регистров управления ГТИ
Генератор PG содержит схему PLL (Phase-Locked Loop), выполняющую фазовую автоподстройку частоты (ФАПЧ), которая работает в режиме захвата (переходный период, когда еще не обеспечивается заданная частота выходных сигналов) или в режиме удержании (рабочий режим, когда поддерживается необходимая частота сигналов). Генератор может автоматически переходить из режима захвата в режим удержания, когда генерируемая частота попадает в рабочую полосу частот PLL (автоматическое управление), или переключаться в этот режим путем программной установки бита ACQ# в регистре управления PLLCR (программное управление). Вид управления задается пользователем путем соответствующей установки бита AUTO в регистре PLLCR (рис. 2.13, б).
В состав блока контроля функционирования микроконтроллера входит схема контроля частоты, которая вызывает его перезапуск, если частота Fq импульсов, формируемых генератором CG, оказывается ниже некоторого значения, которое находится в диапазоне 20...200 кГц. Такая ситуация обычно имеет место при отключении или при выходе из строя кварцевого резонатора. В этом случае генератор PG может перейти в режим автономного функционирования, формируя импульсы с собственной частотой Fp = Fc. Значение собственной частоты Fc находится в диапазоне 0,5...2,0 МГц (типовое значение 1 МГц). Данный режим реализуется, если в регистре управления PLLCR (рис. 2.13, б) установлено значение бита NOLHM=0. Таким образом обеспечивается работоспособность микроконтроллера при выходе из строя или временном нарушении работы генератора CG, использующего внешний резонатор или источник импульсов.
Текущее состояние и режим работы ГТИ определяются содержимым регистров PLLFLG, PLLCR, CLKSEL (рис. 2 13)
Регистр PLLFLG (рис. 2.13, а) содержит признаки, определяющие состояние ГТИ:
LOCK - признак нормального функционирования генератора PG, имеет значение LOCK=1, если генератор формирует импульсы заданной частоты в пределах допустимого разброса 2,5 %; значение LOCK=0 устанавливается при выходе частоты за указанные пределы;
LOCKIF - признак изменения значения LOCK, принимает значение LOCKIF=1, когда признак LOCK изменяется;
LHOME - признак автономного функционирования генератора PG, принимает значение LHOME=1 при нарушении работы генератора CG (отсутствие или низкая частота опорных импульсов), при нормальной работе генератора PG с использованием необходимой опорной частоты признак LHOME=0;
LHIF - признак изменения значения LHOME, принимает значение LHIF=1, когда признак LHOME изменяется.
Значения признаков LOCK, LHOME устанавливаются автоматически в соответствии с текущим состоянием ГТИ и доступны только для чтения. Установка в 1 признаков LOCKIF, LHIF вызывает запрос прерывания, если соответствующие биты разрешения LOCKIE, LFIIE в регистре PLLCR (рис. 2.13, б) имеют значение 1. Таким образом обеспечивается необходимая реакция процессора на изменение состояния ГТИ. Сброс в 0 этих признаков обеспечивается путем записи 1 в соответствующий бит регистра PLLFLG.
Регистр PLLCR (рис. 2.13, б) содержит следующие биты, управляющие работой ГТИ:
LOCKIE, LHIE - разрешают при значении 1 формирование запроса прерывания при установке признаков LOCK, LHOME;
PLLON - разрешает при значении PLLON=1 работу генератора PG;
AUTO - задает режим управления работой генератора PG: автоматический при значении бита AUTO=1, программный при значении AUTO=0;
ACQ# - при автоматическом управлении (значение бита AUTO=1) этот бит доступен только для чтения и указывает режим работы генератора; ACQ# =0 в режиме захвата, ACQ# =1 в режиме удержания; при программном управлении (значение бита AUTO=0) запись соответствующего значения этого бита будет задавать режим работы генератора: режим захвата при ACQ# =0, режим удержания при ACQ#=1;
PSTP - разрешает при значении PSTP=1 работу ГТИ в режиме останова (режим «псевдоостанова» используется для ускорения последующего перевода микроконтроллера в рабочий режим);
NOLHM - запрещает при значении NOLHM=1 автономный режим работы генератора PG при отсутствии необходимой опорной частоты.
При запуске микроконтроллера все биты этого регистра принимают значение 0, кроме PPLON и AUTO, которые устанавливаются в 1 (включение генератора PG и автоматический режим его работы). Бит PLLON не может быть установлен в 0, если в регистре CLKSEL значение бита BCSP=1 (генератор PG задает тактовую частоту микроконтроллера). Бит NOLHM может быть установлен в 1 только 1 раз, затем его значение не изменяется до следующего запуска.
Регистр CLKSEL (рис. 2.13, в) обеспечивает выбор необходимых сигналов для тактирования работы модулей микроконтроллера. Его биты имеют следующее назначение:
BCSP - определяет выбор сигнала для формирования тактовых импульсов: при BCSP=0 используются сигналы генератора CG или делителя DS (тактовая частота Ft=Fq/2 или Ft=Fs/2), при BCSP=1 - сигналы генератора PG (тактовая частота Ft=Fp/2); значение BCSP=1 может быть установлено только при включенном генераторе PG (в регистре PLLCR значение бита PLLON=1);
BCSS - определяет при значении бита BCSP=0 выбор сигнала для формирования тактовых импульсов: при BCSS=0 используются сигналы генератора CG (тактовая частота Ft=Fq/2), при BCSS=1 - сигналы делителя DS (тактовая частота Ft=Fs/2);
MCS - определяет выбор сигнала для синхронизации таймерного модуля и последовательных портов SCI, SPI: при MCS=0 - импульсы генератора CS с частотой Fq, при MCS=1 - импульсы делителя частоты DS с частотой Fs («медленный» режим).
При запуске все биты этого регистра принимают значение 0.
Таким образом, для получения тактовых сигналов заданной частоты Ft необходимо выполнить программирование работы ГТИ в микроконтроллерах 68HC912D60, 68HC912DG128 путем записи соответствующего содержимого в регистры PLLCR, CLKSEL, SLOW, SINR, REFDV. контролирующие его работу.
ГТИ в микроконтроллерах 68НС812А4 также содержит два генератора CG и PG, но имеет несколько более простую структуру и ограниченные возможности.