Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 03.03.2010 | Доступ: свободный | Студентов: 5353 / 1318 | Оценка: 4.35 / 3.96 | Длительность: 24:14:00
ISBN: 978-5-9963-0267-3
Специальности: Разработчик аппаратуры
Лекция 15:

Построение микропроцессорных систем на основе однокристальных микроконтроллеров. Тенденции развития однокристальных микроконтроллеров

< Лекция 14 || Лекция 15: 123 || Лекция 16 >
Аннотация: Цель лекции: изучить принципы построения микропроцессорных систем на основе однокристальных микроконтроллеров, использующих различные принципы обмена информацией; рассмотреть тенденции в развитии архитектуры МК.

Принципы организации взаимодействия микропроцессора с внешними устройствами

Функционирование микропроцессорной системы, особенно ориентированной на системы управления, во многом определяется взаимодействием микропроцессора с внешними устройствами. Такое взаимодействие может строиться по трем основным схемам:

  • программно управляемый обмен;
  • обмен по готовности внешнего устройства;
  • обмен по прерыванию.

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

Второй механизм обмена (обмен по готовности) предполагает перед началом обмена проверку состояния готовности внешнего устройства.

Обмен производится лишь при положительном результате такой проверки. Этот способ используется в основном в тех случаях, когда микроконтроллер не занят выполнением каких-либо иных задач и его работа строится по циклу "считывание показаний датчика - обработка - выдача управляющих воздействий - считывание показаний датчика - ...".

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

Эти варианты взаимодействия можно проиллюстрировать бытовым примером. Предположим, необходимо вскипятить чайник. Для этого чайник ставится на плиту и зажигается огонь. Программно управляемый обмен соответствует ситуации, когда в определенный момент чайник снимается с плиты. При этом момент должен быть выбран таким образом, чтобы вода уже закипела, но еще не выкипела.

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

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

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

Взаимодействие микроконтроллера с аналого-цифровым преобразователем рассмотрим на примере АЦП К1113ПВ1. Его упрощенное условно-графическое изображение, содержащее обозначения только тех входов и выходов, которые используются при работе с МК, приведено на рис. 15.1, а временная диаграмма, иллюстрирующая его работу, - на рис. 15.2. АЦП запускает преобразование "аналог-код" в момент переключения сигнала "Г/П" ("гашение/преобразование") с высокого уровня на низкий. Преобразование осуществляется не более 30 мкс (Tпр < 30мкс). Об окончании преобразования свидетельствует появление сигнала низкого уровня на выходе ГД ("готовность данных"). В этот момент цифровые выходы АЦП ( Q ) переходят из состояния высокого импеданса в состояние выдачи цифрового кода. Цифровой код на выходе АЦП - 10-разрядный (разряд Q0 - старший). Для выполнения следующего преобразования АЦП требует предварительной подачи сигнала гашения высокого уровня длительностью не менее 10 мкс на вход Г/П (Tг \ge 10мкс). При этом цифровые выходы Q переходят в состояние высокого импеданса, в котором остаются до появления сигнала низкого уровня на выходе ГД.

Условно-графическое обозначение аналого-цифрового преобразователя К1113ПВ1

Рис. 15.1. Условно-графическое обозначение аналого-цифрового преобразователя К1113ПВ1
Временная диаграмма работы аналого-цифрового преоб разователя

Рис. 15.2. Временная диаграмма работы аналого-цифрового преоб разователя

Ввод по готовности проиллюстрируем на примере построения МПС, решающей следующую задачу.

Микропроцессорная система определяет среднее значение шести последовательных опросов датчика и выводит полученное значение на внешнее устройство через порт P2. Обращение к датчику осуществляется 1 раз в секунду. В промежутках между работой с датчиком МК на выходе P2.7 формирует периодическую последо1вательность импульсов длительностью t= 200 мкс и периодом T = 800 мкс. На время работы с датчиком генерация сигнала на выходе P2.7 приостанавливается.

Структурная схема системы представлена на рис. 15.3. На схеме изображены только те входы и выходы элементов, которые необходимы для понимания взаимодействия устройств и разработки программы. Здесь выход готовности данных аналого-цифрового преобразователя подсоединен к входу P1.5 микроконтроллера. Микроконтроллер запускает АЦП сигналом низкого уровня на выходе Р1.6 и постоянно контролирует состояние входа P1.5. Появление на нем сигнала низкого уровня свидетельствует о том, что преобразование закончено и микроконтроллер может приступить к обработке этих данных.

Структурная схема микропроцессорной системы с вводом информации по готовности данных

Рис. 15.3. Структурная схема микропроцессорной системы с вводом информации по готовности данных

Прежде чем писать программу, обсудим вопрос, ответ на который представляется очевидным: как определить среднее из нескольких значе ние? Ну конечно же так:

D_{ср}=\frac{1}{n}\sum_{i=1}^{n}D_{i}

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

  1. Отслеживать появление переполнения и при необходимости переходить к расширенной разрядной сетке. Это ведет к усложнению программы и сложностям при выполнении деления на последнем шаге вычислений, так как команда деления, входящая в систему команд МК-51, позволяет делить лишь 8-разрядные операнды.
  2. Преобразовать вычисление среднего значения к виду:
D_{ср}=\sum_{i=1}^{n}\frac{D_i}{n}

Однако при этом возрастает количество операций деления и снижается точность вычислений.

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

Так как нашей целью является анализ вариантов обмена информацией между МК и внешним устройством, а не иллюстрация вычислительных возможностей микроконтроллера, используем третий вариант решения. Будем считывать с АЦП 5-разрядный код, фактически снижая точность представления показания датчика, но обезопасив себя от возможных переполнений при суммировании 6 показаний: сумма всех показаний ни при каких значениях не выйдет за пределы 8-разрядной сетки. В схеме подключения учтено, что на выходе АЦП старшим разрядом кода является Q0, а в МК разряд 0 - младший.

Отсчет интервала в 1 сек проведем с помощью таймера/счетчика Т/С0, работающего в режиме 2, что обеспечивает его автоматическую перезагрузку, и регистров R1 и R2. Таймер/счетчик настроим на выдачу сигнала переполнения каждые 250 мкс, а с помощью регистров R1 и R2 организуем вложенный цикл для подсчета 4000 вхождений ( R1 = 250, R2 =16 ) в обработчик прерываний.

Временные задержки, используемые при генерации сигнала на выходе P2.7 и сигнала гашения АЦП, выполним с учетом длительности выполнения отдельных команд МК (см табл. 14.3).

< Лекция 14 || Лекция 15: 123 || Лекция 16 >
Владислав Салангин
Владислав Салангин

приветствую создателей курса и благодарю за доступ к информации! понимаю, что это уже никто не исправит, но, возможно, будут следующие версии и было бы неплохо дать расшифровку сокращений имен регистров итд, дабы закрепить понимание их роли в общем процессе. 

Михаил Королёв
Михаил Королёв