АНАЛОГО-ЦИФРОВЫЕ И ЦИФРО-АНАЛОГОВЫЕ ПРЕОБРАЗОВАТЕЛИ

Отличительная особенность многих современных 8-разрядных МК — интегрированный на кристалл МК модуль многоканального аналого-цифрового преобразователя (АЦП). Модуль АЦП предназначен для ввода в МК аналоговых сигналов с датчиков физических величин и преобразования этих сигналов в двоичный код с целью последующей программной обработки. Структурная схема типового модуля АЦП представлена на Рис. 1.24. Многоканальный аналоговый коммутатор служит для подключения одного из источников аналоговых сигналов (РТхО...РТх7) ко входу АЦП. Выбор источника сигнала для измерения осуществляется посредством записи номера канала коммутатора в соответствующие разряды регистра управления АЦП. Заметим, что в модулях АЦП 8-разрядных МК предусмотрена только программная установка номера канала, режим автоматического последовательного сканирования каналов с записью результата измерения каждого канала в индивидуальную ячейку памяти не реализуется.

Диапазон измеряемых значений напряжения аналоговых входов определяется опорным напряжением U0n- Разрешающая способность АЦП составляет U0n/2n, где п — число двоичных разрядов в слове результата. Максимальное значение опорного напряжения, как правило, равно напряжению питания МК. Два вывода модуля АЦП используются для задания опорного напряжения: VREFH — верхний предел U0n. VREFL — нижний предел. Разность потенциалов на входах VREFH и VREFL и составляет U0n- Если измеряемое напряжение UMSM ^ VREFH , то результат преобразования будет равен $FF, код $00 соответствует напряжениям 11ИЗм ** VREF|_. Для достижения максимальной точности измерения следует выбрать максимально допустимое значение U0n- В этом случае напряжение смещения нуля входного буфера и нелинейность передаточной характеристики АЦП будут вносить относительно малые погрешности.

Собственно аналого-цифровой преобразователь выполнен по способу последовательного приближения. Принцип действия АЦП иллюстрируют функциональная схема и временные диаграммы на Рис. 1.25 и 1.26. АЦП включает регистр последовательного приближения, цифро-аналоговый преобразователь, компаратор, генератор импульсов синхронизации, схему управления, регистр результата ADCDATA и триггер готовности данных. Начало преобразования задает сигнал "Пуск", который устанавливает регистр последовательного приближения в состояние 10000000. При этом на выходе ЦАП формируется напряжение, равное половине опорного. Компаратор сравнивает измеряемое напряжение с напряжением ЦАП. Если 11ИЗм > УЦАП, то в регистре последовательного приближения формируется следующий код сравнения, равный 11000000. Если 11Изм < ицдп, то старший разряд регистра последовательного приближения устанавливается в О, следующий код сравнения равен 01000000. Таким образом, на первом такте измеряемое напряжение сравнивается с эталонным значением U0n/2. Аналогичные действия выполняются в каждом из тактов преобразования, однако значение напряжения сравнения зависит от результатов сравнения в предыдущих тактах.

 

В примере на Рис. 1.26 на втором такте напряжение сравнения равно Uon/2 + и0п/4, на третьем такте — U0n/2 + U0n/8, поскольку на втором такте было установлено, что иизм < U0n/2 + U0n/4. Интервал преобразования состоит из п тактов: один такт для получения каждого двоичного разряда слова результата.

Точность аналого-цифрового преобразования определяется разрешающей способностью блока ЦАП. В разных моделях МК он может быть выполнен на основе матрицы из 256 резисторов равных номиналов, матрицы весовых резисторов R/2R, достаточно часто встречается решение на основе емкостного делителя. Однако во всех моделях МК разрешающая способность ЦАП составляет 8 двоичных разрядов. Соответственно, формат представления результата измерения АЦП — однобайтовый. Исключение составляют лишь модули АЦП микроконтроллеров для управления преобразователями частоты электропривода, разрешающая способность которых равна 10 двоичным разрядам. Два младших разряда результата получают с помощью дополнительного емкостного делителя, не связанного с регистром последовательного приближения. Длительность такта преобразования задает генератор синхронизации: один цикл равен двум периодам частоты генератора IADC- Время преобразования можно рассчитать по формуле 1ИЗм = (2л + 1), последний цикл необходим для переноса результата в регистр данных АЦП. Частота генератора синхронизации, как правило, не может быть выбрана произвольно. Ее ограничение определяется двумя обстоятельствами:

1. Конденсаторы емкостного делителя неидеальны и имеют определенное сопротивление утечки. Поэтому длительность такта измерения должна быть, с одной стороны, достаточна для заряда конденсаторов до уровня напряжения, определяемого разрядами регистра последовательного приближения, а с другой стороны, не слишком большой, чтобы погрешность утечки не была значительной.

2. В некоторых моделях источник питания аналоговой части модуля АЦП выполнен на основе импульсного преобразователя. Для его работы требуется тактирование, частота тактирования определена с достаточно узким допуском ±10%.

Источником синхронизации модуля АЦП может служить встроенный RC-генератор или импульсная последовательность тактирования межмодульных магистралей МК. В первом случае частота синхронизации АЦП обязательно окажется оптимальной, той, которая рекомендуется в техническом описании. Во втором случае выбранная в результате других соображений feus может оказаться неподходящей для модуля АЦП. На этот случай в составе некоторых модулей предусмотрен программируемый делитель частоты feus-Момент завершения каждого цикла преобразования отмечается установкой триггера готовности данных. Если прерывания от модуля АЦП разрешены, то генерируется запрос на прерывания. Как правило, чтение регистра результата сбрасывает триггер готовности.

Большинство модулей АЦП имеет только режим программного запуска: установка одного из битов регистра режима запускает очередное измерение. Наиболее универсальные модули АЦП имеют также режим автоматического запуска, при котором после завершения одного цикла преобразования немедленно начинается следующий. Однако данные измерения каждого цикла должны быть считаны программным способом (см. модуль ADC08 НС08 фирмы Motorola).

Цифро-аналоговые преобразователи в составе МК являются большой редкостью. Модули параллельных ЦАП можно встретить лишь в МК фирм Mitsubishi и Hitachi.

Функция цифро-аналогового преобразователя реализуется средствами модуля программируемого таймера. На одном из выводов МК формируется высокочастотная импульсная последовательность с регулируемой длительностью импульса. Полученный сигнал сглаживается фильтром нижних частот на операционном усилителе (Рис. 1.27). Разрешающая способность такого ЦАП определяется дискретностью регулирования коэффициента заполнения у в режиме ШИМ. Как было отмечено в п. 1.1.6, немногие модели 8-разрядных МК способны реализовать у с дискретностью более 8 разрядов (Табл. 1.3). Этим вызвана необходимость применения внешних ИС ЦАП. Кроме того, частота ШИМ-сигнала определяет время преобразования ЦАП, этим объясняется особая привлекательность МК с частотой ШИМ в десятки кГц.

 

1.1.8. КОНТРОЛЛЕРЫ ПОСЛЕДОВАТЕЛЬНОГО ВВОДА/ВЫВОДА

 

Наличие в составе 8-разрядного МК модуля контроллера последовательного ввода/вывода стало настолько обычным явлением, что лишь самые простые, маловыводные МК в корпусах DIP-16 и DIP-20 не имеют портов последовательного обмена. При анализе структуры более сложных 8-разрядных МК отчетливо прослеживается тенденция наличия в их составе двух контроллеров последовательного обмена, а в некоторых новейших моделях — даже трех (серия AZ семейства НС08 фирмы Motorola). Задачи, которые решаются средствами модуля контроллера последовательного ввода/вывода, могут быть условно разделены на три группы:

1. Связь встраиваемой МП-системы с системой управления верхнего уровня: промышленным компьютером, программируемым контроллером, офисным компьютером. Наиболее часто для этих целей используются интерфейсы RS-232C и RS-485.

2. Связь с внешними по отношению к МК периферийными ИС встраиваемой МП-системы, а также с датчиками физических величин с последовательным выходом. Для этих целей используются интерфейсы SPI, I2C, а также нестандартные протоколы обмена.

3. Интерфейс связи с локальной сетью в мультимикропроцессор-ных системах. В системах с числом МК до пяти обычно используют сети на основе интерфейсов I2C, RS-232C, RS-485 с собственными сетевыми протоколами верхнего уровня. В более сложных системах все более популярным становится протокол CAN.

Сточки зрения инженера-схемотехника упомянутые типы интерфейсов последовательной связи (более подробно см. п. 1.2) отличаются режимом передачи данных (синхронный или асинхронный), форматом кадра (число бит в посылке при передаче байта полезной информации) и временными диаграммами сигналов на линиях (уровни сигналов и положение фронтов при переключениях). Напротив, число линий, по которым происходит передача в последовательном коде, обычно равно двум (I2C, RS-232C, RS-485) или трем (SPI, некоторые нестандартные синхронные протоколы). Последнее позволяет спроектировать модули контроллеров последовательного обмена таким образом, чтобы с их помощью на аппаратном уровне можно было бы реализовать несколько типов последовательных интерфейсов. При этом режим передачи (синхронный или асинхронный) и формат кадра поддерживаются на уровне логических сигналов, а реальные физические уровни сигналов, характерные для каждого типа интерфейса, получают с помощью специальных ИС, которые носят название приемопередатчиков, конверторов, трансиверов.

Среди не очень большого множества различных типов встроенных контроллеров последовательного обмена, которые входят в состав тех или иных 8-разрядных МК, сложился стандарт "де-факто" — модуль UART (Universal Asynchronous Receiver and Transmitter). В переводе с английского UART — универсальный асинхронный приемопередатчик. Однако большинство модулей UART, кроме асинхронного режима обмена, способны также реализовать режим синхронной передачи данных. Поэтому более правильным с точки зрения терминологии было бы именовать эти модули USART (Universal Synchronous/Asynchronous Receiver and Transmitter) — универсальный синхронно-асинхронный приемопередатчик. Такой термин тоже существует, но вспоминают о нем редко.

Не все производители МК используют термин UART для обозначения типа модуля контроллера последовательного обмена. Так, в МК фирмы Motorola модуль асинхронной приемопередачи, который поддерживает те же режимы асинхронного обмена, что и UART, принято называть SCI (Serial Communication Interface). Следует отметить, что модуль типа SCI обычно реализует только режим асинхронного обмена, т.е. его функциональные возможности уже по сравнению с модулями типа UART. Однако бывают и исключения: под тем же именем SCI в МК МС68НС705В16 скрывается модуль синхронно-асинхронной передачи данных.

Модули типа UART в асинхронном режиме работы позволяют реализовать протокол обмена для интерфейсов RS-232C, RS-422A, RS-485, в синхронном режиме — нестандартные синхронные протоколы обмена и в некоторых моделях — SPI. МК фирмы Motorola традиционно имеют в своем составе два модуля последовательного обмена: модуль SCI с возможностью реализации только протоколов асинхронной приемопередачи для интерфейсов RS-232C, RS-422A, RS-485 и модуль контроллера синхронного интерфейса в стандарте SPI.

Протоколы интерфейсов локальных сетей на основе МК (I2C и CAN) отличает более сложная логика работы (см. п. 1.2). Поэтому контроллеры CAN интерфейса всегда выполняются в виде самостоятельного модуля. Интерфейс I2C с возможностью работы как в ведущем, так и ведомом режиме также обычно поддерживается специальным модулем (модуль последовательного порта в МК 89С52 фирмы Philips). Но если реализуется только ведомый режим I2C, то в МК PIC16 Microchip он успешно сочетается с SPI: настройка одного и того же модуля на один из протоколов осуществляется путем инициализации.

Модуль типа UART в максимальной конфигурации обычно реализует два типа протокола обмена в асинхронном режиме (кадр длиною в 10 бит или в 11 бит) и два типа протокола в синхронном режиме (трехпроводный полнодуплексный обмен или двухпроводный полудуплексный обмен). Упрощенная структура модуля типа UART приведена на Рис. 1.28.

Модуль состоит из двух независимых подсистем: передатчика (Transmitter) и приемника (Receiver), поэтому возможен режим одновременной передачи и приема информации в последовательном коде. Основу каждой подсистемы составляет сдвиговый регистр и параллельный регистр буфера данных. Обращение к буферу данных приемника и передатчика осуществляется по одному и тому же адресу, но при выполнении операции записи данные будут помещены в буфер передатчика TDBUF, операции чтения — данные будут считаны из буфера приемника RDBUF.

Передача данных от МК к другому устройству инициируется посредством записи байта данных в регистр TDBUF. Если работа передатчика разрешена (бит ТЕ в регистре управления модулем равен 1), то аппаратные средства модуля загружают содержимое TDBUF в сдвиговый регистр и под управлением генератора скорости обмена биты из сдвигового регистра, начиная с младшего DO, последовательно передаются на вывод TxD MK. По завершении передачи байта данных устанавливается бит TI, который информирует МК о том, что буфер передатчика пуст и в него могут быть загружены новые данные для передачи. Бит TI генерирует запрос на прерывание, если прерывания от передатчика в МК разрешены. Бит TI может также быть считан программно.

Если работа приемника разрешена (бит RE в регистре управления модулем равен 1), то после распознавания стартового бита аппаратные средства приемника преобразуют данные, которые поступают на вход RxD в последовательном коде, в параллельный код. После завершения приема последнего бита в сдвиговом регистре приемника находится принятый байт данных, который автоматически переносится в регистр RDBUF. Одновременно устанавливается в 1 флаг завершения приема RI. Бит RI может быть считан под управлением программы, и, если прерывания от приемника разрешены, генерируется запрос на прерывание. В процессе выполнения подпрограммы обработки прерывания принятый байт данных считывается из регистра данных приемника RDBUF в память МК. Сразу после копирования байта данных из сдвигового регистра в RDBUF приемник может начать формирование следующего байта данных, отдельные биты которого продолжают поступать на вход RxD. Однако необходимо, чтобы центральный процессор МК успел считать данные из буферного регистра RDBUF до завершения формирования в сдвиговом регистре следующего принятого байта. Если этого не произошло, то возникшая аварийная ситуация в модулях UART разрешается различными путями. В модулях SCI фирмы Motorola запись следующего принятого байта в буферный регистр данных не производится и устанавливается флаг ошибки OR (Overrun). Этот флаг наравне с триггером RI может генерировать запрос на прерывание от приемника. В модулях МК Intel MCS-51 и ему полностью аналогичных такая защита отсутствует: следующий принятый байт затирает предыдущий в регистре RDBUF.

Для повышения достоверности приема каждого разряда аппаратные средства модуля UART считывают уровень сигнала на входе RxD три раза в течение интервала присутствия бита. Значение бита, которое будет занесено в младший разряд сдвигового регистра приемника, определяется мажоритарным способом: по принципу два из трех. Модули SCI сообщают пользователю о наличии шума на линии приема: если не все три значения при приеме любого из битов кадра совпали, то устанавливается флаг NE (Noise Error). В модулях UART МК Intel MCS-51 такая защита не предусмотрена.

Подсистемы приемника и передатчика модуля UART не являются полностью автономными. Скорость обмена и формат кадра асинхронной приемопередачи назначаются в процессе инициализации модуля одинаковыми для приемника и для передатчика. Модули UART различных МК предоставляют неодинаковые возможности по регулированию скорости обмена. В МК Intel MCS-51 допускается плавное регулирование с дискретностью, равной периоду частоты тактирования таймера. Для задания скорости обмена используется один канал таймера. Напротив, модуль SCI MK Motorola не использует ресурсы модуля таймера для этих целей. Такой подход, с одной стороны, имеет преимущество по экономии использования ресурсов МК, однако, с другой стороны, не позволяет задать произвольное соотношение между частотой обмена и собственной частотой кварцевого резонатора генератора синхронизации М^. Последнее накладывает ограничения на выбор частоты кварцевого резонатора, если скорость обмена в разрабатываемом устройстве должна соответствовать стандартному ряду.

Все модули типа UART предусматривают два типа кадров асинхронного обмена. На Рис. 1.29, а представлена временная диаграмма 10-битного кадра: 8 бит данных передаются вслед за стартовым битом, начиная с младшего DO; завершает передачу столовый бит. Логические уровни для передачи стартового бита (низкий) и стопового бита (высокий) формируются аппаратными средствами передатчика. Приемник распознает начало передачи нового кадра по изменению уровня сигнала на входе RxD с высокого, который может длиться сколь угодно долго, на низкий. Передаваемая в кадре полезная информация длиною в один байт может кодироваться абсолютно произвольно. Но может быть использовано и стандартное решение, при котором информация кодируется семью битами D6...DO, старший бит D7 используется для контроля правильности приема. С этой целью передающий МК кодирует бит паритета D7 из условия четного (контроль на четность) или нечетного (контроль на нечетность) числа единиц в передаваемом слове, а принимающий МК производит проверку принятого кода в соответствии с выбранным способом кодирования. Если число единиц в принятом байте данных соответствует выбранному способу кодирования, т.е. четное (нечетное), то передача считается успешной. Следует заметить, что не все модули типа UART 8-разрядных МК имеют опцию автоматического формирования бита паритета. Такие модули не контролируют принятое слово на четность или нечетность аппаратными средствами. Поэтому при необходимости эти операции должны быть реализованы программными средствами. Рассмотренный 10-битный формат кадра наиболее часто используется при организации связи встраиваемой МП-системы с системой управления верхнего уровня.

 

Временная диаграмма 11-битного кадра асинхронного обмена представлена на Рис. 1.29, б: 9 бит данных обрамляются одним стартовым и одним стоповым битом. При формировании 9-разрядного слова для передачи сначала старший разряд D8 помещается в битТ8 одного из регистров управления модулем, а затем младшие разряды D7...DO записываются в обычном порядке в регистр TDBUF. При приеме 9-разрядного слова младшие биты D7...DO размещаются в регистре RDBUF, старший бит D8 передается в разряд R8 одного из регистров управления. Рассматриваемый формат представления кадра обычно используется для организации протокола обмена верхнего уровня в локальных сетях на основе нескольких МК. С этой же целью в модулях UART реализован специальный режим ожидания с механизмом пробуждения (Wake-up).

На Рис. 1.30 приведена структура такой локальной сети. Один из МК в этой сети является ведущим, все остальные — ведомыми. В каждый момент времени обмен возможен между ведущим и одним из ведомых, обмен между двумя ведомыми не реализуется. Инициатором обмена всегда является только ведущий. Обмен производится пакетами, каждый из которых включает не менее трех 11 -битных кадров. Первый кадр определяет адрес ведомого МК, с которым будет производиться обмен. Бит D8 этого кадра должен быть равен 1. Следующие кадры используются для обмена данными с выбранным ведомым. Бит D8 этих кадров должен быть установлен в 0. Последний кадр пакета обмена должен содержать 11 нулевых битов. Так как подобная последовательность не может быть сформирована в результате записи в регистр буфера передатчика TDBUF нулевого слова (необходимо также обнулить столовый бит), то для ее воспроизведения предусмотрена специальная опция формирования сигнала "Break". В модулях SCI для ее реализации необходимо установить бит SBK (Send Break) в одном из регистров управления.

 

Обмен между ведущим и ведомым происходит в следующем порядке:

1. В исходном состоянии приемники всех ведомых МК находятся в состоянии ожидания. В этом состоянии прием байта данных осуществляется, но принятое слово переписывается в буферный регистр RDBUF с одновременной установкой в 1 флага завершения приема RI только в том случае, если бит D8 этого слова равен 1. Остальные слова с признаком D8 = 0 игнорируются.

2. Ведущий МК посылает всем ведомым одновременно первый кадр пакета обмена. Разряды D7...DO этого кадра содержат адрес ведомого, бит D8 равен 1.

3. Все ведомые МК принимают это 9-разрядное слово, и, поскольку разряд D8 кадра равен 1, приемник модуля DART каждого МК выходит из состояния ожидания. Формируется запрос на прерывание. Подпрограмма обработки этого прерывания сравнивает принятый адрес с собственным адресом в локальной сети. Если адреса совпадают, т.е. ведущий будет производить обмен именно с этим ведомым, то МК ожидает передачи от ведомого следующего кадра. Если адреса не совпадают, то МК посредством специального бита управления переводит приемник модуля UART снова в режим ожидания. Тогда все следующие кадры пакета обмена этим МК восприняты не будут, поскольку они содержат нулевой разряд D8.

4. Ведущий МК передает ведомому необходимое число байтов, сопровождая каждый из них признаком данных D8 = 0. При необходимости ведущий принимает данные от ведомого. О завершении обмена ведущий информирует ведомого посылкой сигнала "Break".

5. Ведомый в ответ на сигнал "Break" переводит приемник модуля UART в состояние ожидания. Локальная сеть приведена в исходное состояние и готова к передаче нового пакета.

Кроме рассмотренных режимов асинхронного обмена, многие из модулей UART поддерживают режим синхронной приемопередачи. Так, в МК MCS-51 контроллер последовательного интерфейса реализует полудуплексный (см. п. 1.2.1) обмен в синхронном режиме, при котором импульсы синхронизации выдаются на линию TxD, данные передаются или принимаются по линии RxD (Рис. 1.31, а). Важно отметить, что при синхронном обмене модуль UART MK MCS-51 может работать только в ведущем режиме, т.е. именно этот модуль формирует импульсы синхронизации, независимо от направления обмена. Модуль SCI MK MC68HC705B16 (модуль типа UART) реализует симплексный синхронный обмен, при котором возможно только одно направление передачи данных: из МК к периферийной ИС. Данные выдаются по линии TxD, а импульсы синхронизации по вспомогательной линии SCLK (Рис. 1.31, б).

Особое внимание в настоящее время заслуживают МК с модулями контроллеров CAN сети и модулями нового стандарта интерфейса периферийных устройств персональных компьютеров USB. Каждый из упомянутых интерфейсов имеет несоизмеримо более сложный протокол обмена, многие особенности которого реализуются на аппаратном уровне. Поэтому для ознакомления с этими модулями следует обратиться к специальной литературе.

 

1.1.9. МИНИМИЗАЦИЯ ПОТРЕБЛЕНИЯ ЭНЕРГИИ В СИСТЕМАХ С МК

 

Одна из основных тенденций развития встраиваемых МП-систем — их миниатюризация, которая требует не только повышения степени интеграции элементной базы с целью сокращения числа ИС системы, но и снижения потребляемой этими ИС мощности. Малая энергия потребления во многих случаях является определяющим фактором целесообразности реализации проектируемого устройства в целом:

1. С одной стороны, лавинообразно нарастает число устройств с автономным питанием, которые принципиально могут быть выполнены только на основе элементной базы с малым потреблением энергии.

2. С другой стороны, даже при работе в составе изделий с питанием от бытовой или промышленной сети микропроцессорный контроллер должен занимать жестко ограниченный объем, что реализуемо при малой рассеиваемой мощности микропроцессорного контроллера и, как следствие, малых размерах источника питания.

Современные МК имеют несколько режимов работы, которые различаются не только алгоритмами функционирования МК, но и мощностью потребления:

* Активный режим (Run mode) — основной режим работы МК. В этом режиме МК выполняет прикладную программу, т.е. управляет объектом. В активном режиме функционируют все ресурсы МК. В этом режиме МК потребляет максимальную мощность PRUN-

* Режим ожидания (Wait mode, или Idle mode, или Halt mode). В этом режиме прекращает работу центральный процессор, но продолжают работу периферийные модули, которые отслеживают поведение объекта управления. При необходимости периферийные модули переводят МК в активный режим работы и программа управления вычисляет корректирующие воздействия для управления объектом. Перевод МК из режима ожидания в рабочий режим осуществляется по прерываниям от внешних источников или от периферийных модулей либо при сбросе МК. В режиме ожидания мощность потребления МК PWAITснижается по сравнению с PRUN в 5... 10 раз. * Режим останова (Stop mode для МК фирмы Motorola, или Sleep mode для МК фирмы Microchip, иногда Power Down mode). В этом режиме прекращает работу как центральный процессор, так и большинство периферийных модулей. Как правило, переход МК из режима останова в рабочий режим возможен только по запросам на прерывание от внешних источников или после подачи активного уровня сигнала на вход сброса. В режиме останова мощность потребления МК PSTOP снижается по сравнению с PRUM натри порядка и составляет единицы мкВт. Два последних режима носят название режимов пониженного энергопотребления МК. Минимизация энергии потребления встраиваемой МП-системы достигается оптимизацией мощности потребления МК в активном режиме работы, а также чередованием во времени активного режима работы МК и режимов пониженного энергопотребления. Мощность потребления МК в активном режиме работы является одной из важных технических характеристик МК, Однако она не является величиной постоянной и зависит от напряжения питания МК и частоты тактирования.

Независимо от фирмы-производителя 8-разрядные МК имеют три группы исполнения по напряжению питания. К первой группе относятся МК с напряжением питания 5.0 В ± 10%. Эти МК предназначены для работы в составе устройств с питанием от промышленной или бытовой сети. Как правило, это МК средней или высшей группы сложности, с достаточно высоким уровнем потребляемой мощности вследствие развитых функциональных возможностей. Вторая группа — МК с расширенным диапазоном напряжения питания: от 2.0...3.0 В до 5.0...7.0 В. Конкретные значения напряжений верхней и нижней границ определяются моделью МК. МК второй группы могут работать в составе устройств как с сетевым, так и с автономным питанием. Нередки случаи их использования в изделиях со встроенным источником бесперебойного питания, которые автоматически переходят на питание от аккумуляторов при снижении напряжения сети. К третьей группе относятся МК с пониженным напряжением питания: от 1.8 до 3.0 В. Эти МК предназначены для работы в переносных изделиях с автономным питанием, т.к. имеют ток потребления в 3 раза меньший, чем аналогичные МК первой группы и, следовательно, обеспечивают экономный расход энергии элемента питания.

Учитывая, что для вторичных источников питания обычно приводится значение максимального тока нагрузки при заданном уровне напряжения на выходе, а запас энергии автономных источников оценивается в Ахч, мощность потребления МК принято косвенно характеризовать током потребления при заданных значениях напряжения питания и частоты синхронизации. В Табл. 1.5 приведены значения тока потребления в активном режиме работы ряда МК с близкими функциональными возможностями. Для сопоставимости результатов частота тактирования МК выбрана одинаковой, несмотря на то что для МК НС08 фирмы Motorola, SX28 фирмы Scenix и AVR фирмы Atmel она является далеко не предельной.

Зависимость тока потребления от напряжения питания МК в первом приближении можно рассматривать как прямо пропорциональную (Рис. 1.32). Поэтому снижение напряжения питания весьма существенно понижает мощность потребления МК. Однако следует помнить, что для многих типов МК с понижением напряжения питания уменьшается максимально допустимая частота тактирования /flt/s. т.е. выигрыш в потребляемой мощности оборачивается снижением производительности системы. Так, для МК семейства НС08 фирмы Motorola переход от напряжения питания UDD = 5.0 В к UDD = 3.0 В сопровождается снижением допустимой частоты тактирования т feus - 8 МГц до fBus ~ 4 МГц. А для МК семейства НС05 при напряжении питания UDD = 5.0 В максимальная частота тактирования составляет fBUS = 4 МГц, при UDD = 3.0 В — fBUS = 2 МГц, а при UDD = 1.8 В — всего 500 кГц. Впрочем, ограничение fBUSt если таковое имеется, носит ступенчатый характер, и для многих моделей МК возможен режим работы: UDD < UDDMAX, feus = fausMAx-

При одном и том же напряжении питания ток потребления МК в значительной степени зависит от частоты тактирования feus (Рис. 1.33). Поэтому, выбирая частоту тактирования, следует в том числе преследовать цель снижения мощности потребления. Не следует стремиться к предельно высокому быстродействию МК в задачах, которые этого не требуют. Выбор частоты тактирования МК во многих случаях определяется не только соображениями вычислительной производительности. Часто определяющим фактором оказывается разрешающая способность измерителей временных интервалов на основе таймера или скорость передачи последовательного интерфейса. Но в любом случае следует детально оценить требуемую частоту тактирования, а затем выбрать fBUS с некоторым запасом. При таком подходе технические условия проекта будут выполнены и устройство будет экономично расходовать энергию.

Современные МК не имеют нижней границы частоты тактирования. Желая подчеркнуть данную особенность, в справочных данных указывают, что минимальная частота тактирования равна dc (direct current), т.е. сколь угодно низкая. Это в том числе означает, что при отладке системы пользователь может тактировать МК от кнопки с антидребезго-вым триггером, выполняя программу по шагам. Мощность потребления МК при низких частотах тактирования в справочных данных отражает ток потребления при fosc = 32.768 кГц (Табл. 1.5).

В большинстве моделей МК частота тактирования определяется внешним времязадающим элементом: кварцевым или керамическим резонатором, RC-цепью. Причем частота времязадающего элемента и частота тактирования fgus жестко связаны коэффициентом деления встроенного делителя частоты. Поэтому изменение частоты в процессе выполнения программы управления не представляется возможным. Однако ряд последних семейств МК некоторых фирм (НС08 Motorola, DS87C530) имеет в своем составе систему тактирования, основанную на принципе синтезатора частоты с контуром фазовой автоподстройки (PLL — phase loop lock). Такая система работает как умножитель частоты и позволяет иметь в качестве времязадающего элемента низкочастотный кварцевый резонатор, что снижает уровень электромагнитного излучения при его работе. Коэффициенты деления контура PLL подлежат программированию и, следовательно, могут быть изменены под управлением программы. Последнее создает возможность изменения частоты тактирования с целью снижения мощности потребления МК в промежутки времени, когда высокое быстродействие не требуется.

Кроме динамического управления частотой тактирования, возможно также отключение некоторых периферийных модулей МК в процессе выполнения программы. Так, если информация о состоянии объекта управления снимается редко, то модуль АЦП следует подключать только на время его работы. Аналогичное решение может быть применено и к другим модулям, в том числе к модулю энергонезависимой памяти EEPROM (см. разд. 3).

Многие приборы на основе 8-разрядных МК устроены таким образом, что в течение длительного времени выполнение программы МК не требуется вовсе. Для иллюстрации приведем два примера.

Пример 1. Пульт дистанционного управления бытовой аппаратуры. Программное обеспечение пульта должно функционировать только в том случае, если изменяется состояние органов управления. В остальное время МК находится как бы в состоянии готовности, причем это состояние может длиться сутками, например, пока не смотрят телевизор.

Пример 2. Счетчик тепловой энергии. Измеряет температуру и расход воды в трубопроводах отопления один раз в минуту. Производит по этим показаниям расчет потребленной тепловой энергии и ждет начала очередной минуты.

Именно для таких случаев предусмотрены режимы пониженного энергопотребления МК, которые, в отличие от рассмотренных выше мер снижения мощности потребления, обязательно предполагают останов выполнения программы центральным процессором. Так, в примере 1 после выполнения очередного действия следует перевести МК в режим останова (Stop mode). Выход из этого режима будет осуществлен по запросу на прерывание при нажатии любой клавиши пульта управления. В примере 2 программа управления должна выполняться в начале каждой минуты. Если для отсчета интервала времени, равного минуте, используется внутренний таймер, то в промежутках между вычислениями МК может быть переведен только в режим ожидания (Wait mode), т.к. в этом режиме остаются работоспособными периферийные модули МК (Рис. 1.34). Для достижения более существенной экономии энергии следует перевести МК в режим останова, но при этом придется воспользоваться внешней времязадающей схемой.

Для снижения мощности потребления в современных МК предусмотрена возможность программного отключения периферийных модулей в режиме ожидания. Комбинация оставшихся в работе модулей определяет ток потребления в режиме ожидания. Поэтому при описании некоторых МК (например, MSP430 фирмы Texas Instruments) речь идет о множестве режимов пониженного энергопотребления.

 

В некоторых МК для режима останова имеется опция, которая позволяет оставить в работе генератор кварцевого резонатора и один времязадающий модуль. Так, в МК семейства НС08 фирмы Motorola остается в работе модуль базового таймера ТВМ08, а в МК семейства PIC16 фирмы Microchip — модуль сторожевого таймера, Первое из упомянутых решений несколько более удобно, т.к. позволяет не объединять алгоритм обслуживания сброса по зависанию системы (сработал сторожевой таймер) и алгоритм обслуживания периферии через равные интервалы времени.

Кроме очевидного различия в функционировании периферийных модулей, режимы ожидания и останова отличаются также характером процесса перехода из режима пониженного энергопотребления в активный режим работы. Выход из режима ожидания происходите течение 3...5 периодов синхронизации МК, в то время как задержка выхода из режима останова составляет несколько тысяч периодов синхронизации МК. Причем если тактирование МК осуществляется от низкочастотного кварцевого резонатора с последующим умножением частоты внутренними средствами МК, то под периодом синхронизации следует понимать период колебания кварцевого резонатора. Кроме очевидного неудобства плохой динамики системы, находящейся в состоянии останова, такое большое время перехода в активный режим работы является причиной дополнительного расхода энергии (Рис. 1.35). В МК MSP430 с ультранизким потреблением энергии дополнительная экономия энергии достигается за счет сокращения времени перехода из режима низкого энергопотребления в активный режим работы. Это позволяет МК MSP430 работать в составе счетчика тепловой энергии при автономном питании в течение 10 лет без замены батареек.

Не все МК имеют именно два режима пониженного энергопотребления. Так, в МК семейства PIC16 реализуется только один режим Sleep (дословно — "спящий режим"), а в МК MSP430 — пять режимов низкого энергопотребления LPO...LP4. Но хотя бы один режим пониженного энергопотребления имеют все современные МК.

 


1.1.10. МОНИТОРИНГ НАПРЯЖЕНИЯ ПИТАНИЯ МК

 

Источник питания МП-системы не может быть идеальным. Напряжение источника питания подвержено как прогнозируемым, так и случайным изменениям, которые должны учитываться разработчиком системы. Свойство МП-системы восстанавливать работоспособность при кратковременных отключениях напряжения питания или при его "просадках" ниже допустимого значения является обязательным для современных систем управления. В зависимости от характера возможных изменений напряжения питания МП-системы можно разделить на следующие группы:

1. Системы с импульсными источниками вторичного электропитания, которые стабилизируют выходное напряжение в заданном диапазоне (UDDMIN--UDDMAX). в противном случае удерживают выходное напряжение равным нулю.

2. Системы с так называемыми "гладкими" источниками вторичного электропитания, которые при значительном снижении напряжения сети пропорционально снижают выходное напряжение.

3. Системы с автономным питанием от батареек или аккумуляторов.

4. Системы с комбинированным питанием. Такие системы автоматически переходят на питание от автономного источника в случае, если напряжение вторичного источника питания перестало удовлетворять требованию UDDM|N < UDD < UDDMAX-

В системах типа 3 и 4 следует обязательно применять МК с расширенным диапазоном напряжения питания. В системах типа 1 и 2 могут использоваться МК с фиксированным напряжением питания (5 В ± 10%, 3 В ± 10%), но при этом следует внимательно проанализировать реакцию МП-системы на возможные изменения напряжения питания и предпринять меры по устранению отказов.

При включении напряжения питания МК должен начать выполнять прикладную программу. На этапе нарастания напряжения питания МК принудительно переводится в начальное состояние, которое называют состоянием сброса. При этом устанавливаются в исходное состояние внутренние магистрали МК, сигналы управления и регистры специальных функций. Последние определяют начальное состояние периферийных модулей МК. Обычно это неактивное состояние. Сразу после выхода из состояния сброса МК выполняет следующие действия:

1. Запускает генератор синхронизации МК. Для стабилизации частоты тактирования внутренними средствами МК формируется задержка времени 1ЗАД.

2. Считывает энергонезависимые регистры конфигурации в соответствующие регистры ОЗУ (при необходимости).

3. Загружает в программный счетчик PC адрес начала прикладной программы.

4. Производит выборку первой команды из памяти и приступает к выполнению прикладной программы.

Адрес ячейки памяти, в которой хранится код первой команды прикладной программы, называют вектором начального запуска или вектором сброса. В некоторых МК этот адрес однозначно определен в техническом описании. О таких МК говорят, что они имеют фиксированный вектор сброса. Разработчик обязан указать этот фиксированный адрес на этапе формирования файла кодов прикладной программы (загрузочный модуль программы). В других МК вектор сброса может быть произвольно определен пользователем. На этапе программирования МК желаемый вектор начального запуска записывается в ячейки памяти с фиксированными адресами и при выходе МК из состояния сброса автоматически загружается в программный счетчик. О таких МК говорят, что они имеют загружаемый вектор сброса. Загружаемый вектор сброса имеют все 8-разрядные МК фирмы Motorola.

Для перевода МК в состояние сброса достаточно подать напряжение высокого или низкого логического уровня (указано в спецификации) на вход RESET. Традиционно для формирования сигнала сброса при включении напряжения питания используют RC-цепь. Типовые решения представлены на Рис. 1.36. При реализации одной из приведенных схем следует убедиться, что буфер линии RESET выполнен с триггером Шмитта, который допускает подачу сигнала с ненормированной длительностью фронта переключения (до нескольких десятков мс). Если триггер Шмитта отсутствует, то придется воспользоваться специальной схемой формирования сигнала сброса с нормированной длительностью фронта переключения (Рис. 1.37). Такие схемы реализуются в виде отдельной ИС либо в комбинации со сторожевым таймером (МАХ823), часами реального времени (МС68НС68Т1) и т.д.

В современных МК линия RESET обычно выполнена двунаправленной и имеет низкий активный уровень. При подаче напряжения активного уровня буфер линии устанавливается в режим ввода и реализуется так называемый внешний сброс. МК может перейти в состояние сброса также по сигналам устройств контроля состояния, которые содержатся в самом МК. В этом случае говорят, что МК находится в состоянии внутреннего сброса. Порядок выхода МК из состояний внешнего и внутреннего сброса в целом, одинаков. При нахождении в состоянии внутреннего сброса буфер линии RESET устанавливается в состояние вывода с низким логическим уровнем на выходе и может быть использован для установки в начальное состояние периферийных ИС.

С целью минимизации числа вспомогательных ИС платы МП-контроллера большинство современных МК имеют в своем составе блок детектирования напряжения питания (схема POR — Power-On-Re-set), который формирует сигнал внутреннего сброса при нарастании напряжения питания (Рис. 1.38). Схема POR имеет два порога срабатывания, т.е., по существу, является компаратором с гистерезисом. Порог срабатывания VPOR значительно ниже минимально допустимого напряжения питания МК и равен -1 В. При достижении напряжением питания значения VPOR схема POR фиксирует событие включения питания МК, формирует задержку времени tpop, после чего снимает сигнал внутреннего сброса. Предполагается, что напряжение питания МК в течение tPOR успеет достичь номинального значения. Поэтому скорость нарастания напряжения питания ограничена снизу. В случае если скорость нарастания недостаточна, схема POR не может быть использована для начального запуска МК и следует применить специальную ИС для формирования сигнала внешнего сброса с нормированным фронтом.

Порог отпускания VPOR не превышает 200 мВ. Поэтому при использовании гладких источников питания может сложиться ситуация, при которой напряжение питания стало меньше VDDMIN. но не достигло напряжения отпускания схемы POR. Тогда МК может "зависнуть". При восстановлении напряжения питания до номинального значения МК в работу не вступит. При использовании импульсных источников питания такая ситуация исключается, если диапазон стабилизации напряжения источника выбран равным диапазону допустимых напряжений питания МК.

Для восстановления работоспособности МП-системы после "просадки" напряжения питания МК необходимо снова сбросить. С этой целью в современных МК реализован дополнительный блок детектирования пониженного напряжения питания. В МК семейства НС08 фирмы Motorola такой модуль носит название LVI, аналогичный модуль имеется в составе МК PIC17 Microchip, Z8 фирмы Zilog. Рассматриваемый модуль генерирует сигнал внутреннего сброса при снижении напряжения питания до уровня чуть менее VDDMIN (Рис. 1.39). Так, для МК MC68HC908JL3 с напряжением питания VDDN = 5 В ± 10% уровень срабатывания модуля пониженного напряжения питания лежит в пределах 3.6...4.4 В. Следовательно, зона нечувствительности все же остается. Поэтому наличие в составе МК модуля пониженного напряжения питания значительно снижает вероятность зависания МК, но не устраняет ее полностью. Следует также отметить, что уровень срабатывания модуля пониженного напряжения питания значительно превышает напряжение сохранения данных в ОЗУ МК. Событие сброса по сигналу модуля пониженного напряжения отмечается специальным битом в одном из регистров. Следовательно, анализируя этот бит программно после сброса МК, можно установить, что разрушения данных не наступило, и продолжить выполнение программы.

 

1.1.11. АППАРАТНЫЕ И ПРОГРАММНЫЕ РЕШЕНИЯ ПО ПОВЫШЕНИЮ НАДЕЖНОСТИ РАБОТЫ МК

 

В отличие от персональных компьютеров, которые при стечении определенных обстоятельств могут выполнить нештатные операции и "зависнуть", встраиваемые МП-системы управления лишены этого недостатка. Прикладная программа управления, записанная в память МК, должна обеспечивать формирование адекватных выходных воздействий при любых комбинациях входных сигналов. Однако в результате электромагнитных помех предусмотренный разработчиком ход выполнения прикладной программы может быть нарушен, Именно в этом случае невозможно гарантировать правильную работу МП-системы. Все современные МК предусматривают возможность восстановления правильного хода вычислительного процесса при подобного рода отказах. Для этого используется модуль сторожевого таймера (СОР или Watchdog). Принцип действия модуля сторожевого таймера иллюстрирует Рис.1. 40. Основным элементом модуля сторожевого таймера является многоразрядный счетчик, При сбросе МК счетчик обнуляется. После перехода МК в активный режим работы счетчик начинает увеличивать код независимо от выполняемой программы. Если код счетчика достигает максимального указанного в техническом описании МК значения, то генерируется сигнал внутреннего сброса и МК начинает выполнение программы управления сначала. Для исключения события сброса по переполнению сторожевого таймера прикладная программа управления должна периодически сбрасывать счетчик. Операция сброса счетчика сторожевого таймера обычно выполняется посредством записи указанного кода в один из регистров специальных функций. Тогда при нормальном, предусмотренном разработчиком порядке выполнения прикладной программы переполнение счетчика сторожевого таймера не наступает и он не оказывает влияния на работу МП-системы. Однако если ход выполнения прикладной программы был нарушен, то велика вероятность, что счетчик не будет сброшен вовремя. Тогда произойдет сброс по переполнению сторожевого таймера и нормальный ход вычислительного процесса будет восстановлен.

 

Модули сторожевых таймеров различных МК имеют следующие особенности работы:

* В ряде МК вектора внешнего сброса и сброса по переполнению сторожевого таймера объединены. Это не позволяет различать причину сброса на программном уровне и затрудняет написание прикладных программ. Более совершенны МК, которые имеют либо различные векторы сброса, либо отмечают событие сброса по переполнению сторожевого таймера установкой специального бита.

• Часть МК автоматически приостанавливает работу сторожевого таймера при переходе МК в один из режимов пониженного энергопотребления, когда прикладная программа не выполняется. Однако в ряде МК сторожевой таймер не останавливает работу в режиме ожидания. Тогда необходимо предусматривать периодический вывод МК из режима ожидания для сброса счетчика сторожевого таймера. Это, с одной стороны, не очень удобно, т.к. требует дополнительного внимания программиста. Однако, с другой стороны, предоставляет дополнительную возможность восстановления работоспособности МП-системы, если сигнал вывода МК из режима ожидания нарушен. Кроме аппаратно-программных средств сторожевого таймера, ряд МК оснащен аппаратными средствами генерации сигнала внутреннего сброса в случае, если по причине электромагнитных помех в счетчике адреса был сформирован адрес физически не существующей ячейки памяти или из памяти считан код несуществующей операции.