Для того чтобы МК заработал, необходимо подать на ЦПУ тактовые импульсы. Чем выше их частота, тем быстрее выполняются операции, а чем ниже их частота, тем меньше потребление тока. Формированием тактовых частот занимается подсистема синхронизации. На её структурной схеме (Рис. 2.21) имеется несколько встроенных генераторных узлов (on-chip oscillator). Расшифровка сокращений: HF (High Frequency) — высокочастотный, LF (Low Frequency) — низкочастотный, CLK (CLocK) — тактирование.
Из четырёх верхних частотообразующих блоков, только HF-генератор использует два вывода подключения XT1, XT2. Тем самым подчёркивается, что он рассчитан на схему с обратной связью. На Рис. 2.22 показано внутреннее устройство подобного генератора, в котором содержится инвертирующий усилитель А1 и бу-
ферный логический формирователь на триггере Шмитта DD1. Если к выводам XT1, XT2 подключить кварцевый резонатор и два конденсатора на общий провод, то в системе возникнут условия для автогенерации.
Вместо кварцевого резонатора можно поставить более дешёвый керамический. Такие резонаторы упрощают конструкцию (т.к. часто содержат встроенные конденсаторы), быстрее выходят в рабочий режим, но обладают меньшей стабильностью частоты генерации.
Если разомкнуть обратную связь и оставить вывод XT2 свободным, то на вход XT1 можно подавать внешний тактовый сигнал любой скважности и формы (если особо не оговорено). Внутренний формирователь на триггере Шмитта DD1 восстанавливает крутые фронты импульсов даже из синусоидального сигнала.
Если необходима плавная перестройка тактовой частоты, то к выводу XT1 подключают внешнюю iJC-цепочку с переменным резистором. При этом используется не усилитель А1, а другой генераторный узел, тоже находящийся в МК.
При невысоких требованиях к стабильности временных интервалов можно перейти на внутренний iJC-генератор. Достоинство — экономится дорогостоящий кварцевый или керамический резонатор. Входы XT1, XT2 оставляют свободными или используют их как дополнительные цифровые линии портов. Частота генерации задаётся конфигурационными битами (грубо) и внутренними регистрами (точно). Устанавливать её номинал желательно как можно ниже (обычно около 1 МГц), чтобы обеспечить максимальную стабильность параметров.
Выводы XT1, XT2 основного генератора в разных МК могут обозначаться по-разному: XTAL1, XTAL2, X1, X2, XIN, XOUT, OSC1, OSC2. Главное, запомнить, что первым по порядку идёт вход (xxxx1, «In»), затем выход (xxxx2, «Out»).
Управление режимами подсистемы синхронизации осуществляется через конфигурационные биты. Они переключают каналы мультиплексора, настраивают частоту внутреннего Ж*-генератора и т.д. Они же могут разрешить/запретить выдачу сигнала CLKOUT (Рис. 2.21) с отдельной линии порта, с частотой, в несколько раз меньше тактовой. Эта функция присутствует не во всех МК.
Сформированный из входного сигнала FOSC сигнал FCLK направляется в качестве тактового к ЦПУ и к периферии. Частота обоих сигналов может быть как одинаковой, так и разной. В последнем случае в игру вступают делители и умножители частоты. Например, при долгих паузах в работе выгодно уменьшить частоту до 32 кГц, при этом значительно снижается потребление тока. При желании увеличить быстродействие, можно умножить тактовую частоту через систему ФАПЧ.
Канал «часов реального времени» RTC (Real Time Clock) функционирует отдельно от основного тактового генератора. Другие названия его выводов — TOsC1, TOsC2. Канал RTC отсутствует в дешёвых и маловыводных МК. Физически он представляет собой автономный асинхронный генератор НЧ-сигналов, из которых после деления формируются метки стабильного времени, например,
секундные. Базовой частотой узла RTC считается 32768 Гц, как в электронных часах, хотя допускается его работа в диапазоне 10...250 кГц.
Активизируется канал RTC через программно-доступные регистры из области SFR. В момент начальной подачи питания он выключен, поэтому выводы RTC1, RTC2 могут использоваться в качестве обычных линий цифровых портов.
Многообещающее название «часы реального времени» на поверку оказывается «красивой обёрткой, но без конфеты». Чтобы узнать точное время в «часах-минутах-секундах», программисту придётся изрядно потрудиться, обрабатывая прерывания и создавая свой «Юлианский календарь». Считается, что проще применить отдельную специализированную микросхему типа DS1307, DS1337 фирмы Maxim/Dallas, из регистров которой по запросу получают точное время и дату.
Положительным свойством сигналов RTC является асинхронность по отношению к ^CLK. Это позволяет использовать их для управления таймерами-счётчиками или для независимого формирования сигналов сверхбольшой длительности.
Режимы работы основного канала синхронизации
Идеализированный МК должен работать в тех же самых режимах тактирования, которые присущи стандартным МК общего назначения:
• от высокочастотного кварцевого резонатора 1...33 МГц (Рис. 2.23, а);
• от среднечастотного керамического резонатора 0.4...4 МГц (Рис. 2.23, б);
• от низкочастотного кварцевого резонатора 10...100 кГц (Рис. 2.23, в);
• от внутреннего iJC-генератора 1; 2; 4; 8 МГц (Рис. 2.23, г);
• от внешней Ж*-цепочки 0.4.. .12 МГц (Рис. 2.23, д);
• от внешних синхроимпульсов 0...40 МГц (Рис. 2.23, е).
Все перечисленные режимы работы задаются при программировании многочисленных конфигурационных битов. Как здесь не запутаться начинающему разработчику? То коэффициент умножения/деления выбирается неверный, то внутренний iJC-генератор на вдвое меньшую частоту настраивается, то включается «не тот» источник тактового сигнала. Квинтэссенцией ошибок горе-экспериментатора становится ситуация, когда МК после очередной «прошивки» конфигурационных битов вообще перестаёт откликаться и его нельзя перепрограммировать, хотя пять минут назад всё отлично получалось...
Из общих рекомендаций действенна лишь одна — внимательно изучать материальную часть и с карандашом в руке разбираться в хитросплетениях таблиц даташитов. Некоторые подсказки по заполнению конфигурационных битов для семейств Atmel ATmega, Microchip PIC16/18 содержатся в [2-4], [2-5], [2-6].
Нижняя частота работы МК, как правило, не ограничивается, вплоть до нуля герц, т.е. на вход XT1 можно подавать постоянное напряжение или перепады логических уровней от обычной кнопки. Однако для правильного функционирования системы ФАПЧ, которая применяется во внутренних умножителях частоты, требуется подавать ВЧ-импульсы определённых параметров. Например, для Microchip PIC18F2455 в даташите указывается значение FOSC = 0...48 МГц (без ФАПЧ) и FOSC = 4...48 МГц (с ФАПЧ). Наличие или отсутствие режима ФАПЧ в МК можно узнать по ключевому слову PLL (Phase Locked Loop).
Верхняя частота работы идеализированного МК будет принята равной 33 МГц при подключении кварцевого резонатора и 33...40 МГц при подаче внешних тактовых синхроимпульсов. Это примерно соответствует параметрам современных МК и уровню существующей технологии. Небольшой нюанс. Разница в частотах 33 и 40 МГц указывает на то, что внутри МК имеется умножитель с ФАПЧ (как в Microchip PIC). Если частоты совпадают (как в Atmel AVR), то умножителя, скорее всего, нет.
В рекламе самых производительных МК фигурируют очень высокие тактовые частоты. Но они действительны только для ядра ЦПУ, а не для внешнего кварцевого резонатора. К примеру, микроконверторы семейства Analog Devices ADuC7000 могут от «часового кварца» с частотой 32768 Гц синтезировать тактовый сигнал для ЦПУ с частотой FCLK = 41.78 МГц, а в контроллерах Analog Devices Blackfin умножители «разгоняют» внутренние импульсы с единиц мегагерц до 500.750 МГц.
В некоторых МК конфигурационными битами допускается изменение амплитуды выходного сигнала генератора на выводе XT2. При малой амплитуде снижаются паразитные ВЧ-излучения, что важно для электромагнитной совместимости. При больших уровнях, называемых «rail-to-rail» (0... VCC), появляется возможность подключения к XT2 одного или нескольких логических КМОП-элементов.
При работе от аккумуляторной батареи и невысоких требованиях к быстродействию выгодно применять низкочастотные кварцевые резонаторы от электронных часов. Дело в том, что на частоту 32768 Гц оптимально настроена внутренняя генераторная схема МК. Собственный ток потребления цифровыми узлами в таком режиме составляет всего лишь десятки микроампер.
Если в аппаратуре уже имеется системный задающий генератор, то логично использовать его в качестве хронирующего для тактирования МК. Импульсы подаются на вход XT1 и далее на внутренний триггер Шмитта. Преимущество
подобного решения заключается, во-первых, в полной синхронизации системы от единого источника, во-вторых, в возможности выбора нестандартной частоты генерации, в-третьих, в повышенной стабильности тактовых импульсов. Последний вариант рассчитан на применение термостатированных кварцевых генераторов, квантовых хранителей времени, системы спутниковой и радионавигационной синхронизации.
Ещё одна польза от режима внешнего генератора проявляется при так называемом «аварийном программировании». Имеется в виду случай, когда МК теряет управляемость из-за неверно установленных конфигурационных битов. Рекомендуется сделать для себя простейший генератор на логической микросхеме, без разницы с Ж*-цепочкой или с кварцевым резонатором на частоту 1...8 МГц [2-4]. Подав от него сигнал на вход XT1, можно восстановить программируемость МК при заранее неизвестных конфигурационных битах. Внешние импульсы служат своеобразной «палочкой-выручалочкой», поскольку они успешно проходят внутрь микросхемы во всех без исключения генераторных режимах.