Архитектура микропроцессоров

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

Разбить на страницы
Показывать лекцию целиком

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

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

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

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

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

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

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

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

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

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

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

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

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

    Микропроцессорная система определяет среднее значение шести последовательных опросов датчика и выводит полученное значение на внешнее устройство через порт 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}$$

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

  • Отслеживать появление переполнения и при необходимости переходить к расширенной разрядной сетке. Это ведет к усложнению программы и сложностям при выполнении деления на последнем шаге вычислений, так как команда деления, входящая в систему команд МК-51, позволяет делить лишь 8-разрядные операнды.
  • Преобразовать вычисление среднего значения к виду:
  • $$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).

    Полученная программа приведена ниже.

    ;Ввод информации по готовности
    .ORG    0H
    AJMP Start ; на начало программы
    .ORG 0BH
    AJMP Int_TC0 ; на обработчик прерывания Т/С0
    Курс
    206
    .ORG 30H
    Start:  MOV IE,#00000010b ; разрешение прерываний от Т/С0
    MOV TCON,#0 ; сброс флагов, останов Т/С0
    MOV P0,#00011111b
    MOV P1,#01100000b
    MOV P2,#00000000b
    MOV TMOD,#00000010b ; Т/С0 в режим 2
    MOV TL0,#6 ; настройка Т/С0 на 250 мкс
    MOV TH0,#6
    CLR A ; ?=0
    MOV R0,#6 ; количество опросов датчика
    MOV R1,#250
    MOV R2,#16
    SETB TR0 ; запуск T/C0
    SETB EA ; разрешение всех прерываний
    ; Генерация сигнала на выходе P2.7
    Cycle: SETB    P2.7  ; P2.7 = 1
    MOV     R3,#100
    Delay1: DJNZ   R3,DELAY1 ; задержка на t = 200 мкс
    CLR     P2.7 ; P2.7 = 0
    MOV R3,#3 ; Задержка на T–t = 600 мкс
    Delay2: MOV  R4,#100     
    DJNZ R4,$
    DJNZ R3,Delay2
    AJMP   Cycle ; возврат на цикл генерации сигнала
    ; Обработчик прерываний от таймера
    Int_TC0: CLR TR0 ; останов таймера
    DJNZ R1,Out_Int  ; подсчет количества входов в обработчик
    MOV R1,#250
    DJNZ   R2,Out_Int
    MOV R2,#16
    Opros: CLR P1.6 ; запуск АЦП
    JB P1.5,$ ; ожидание готовности данных
    ADD A,P0 ; ?= ? + D
    i
    SETB P1.6 ; гашение АЦП
    MOV R5,#5
    DJNZ   R5,$
    DJNZ R0, Opros ; проверка окончания опроса
    MOV B,#6 ; вычисление среднего значения
    DIV AB ; D
    ср = ?/ n
    ANL P2,#11100000b  ; вывод результата
    207
    SETB P2.5 ; строб записи в ВУ
    CLR P2.5
    CLR A ; восстановление параметров цикла
    MOV R0,#6
    Out_Int: SETB TR0 ; запуск таймера
    RETI ; выход из обработчика
    .END

    Программно управляемый ввод предполагает, что к моменту обращения микроконтроллера к внешнему устройству последнее готово к обмену. Эта ситуация требует учета особенностей работы конкретного устройства. В нашем случае анализ работы аналого-цифрового преобразователя показывает, что если между запуском АЦП и считыванием с него информации проходит не менее 30 мкс, то это гарантирует завершение преобразования аналог-код и достоверность данных на выходе преобразователя.

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

    Пусть задача ставится так: разработать микропроцессорную систему, которая определяет максимальное значение шести последовательных показаний датчика и выводит полученное значение на внешнее устройство.

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

    В этом случае схема МПУ будет аналогична схеме, представленной на рис. 15.3, за исключением того, что в ней будет отсутствовать линия, соединяющая выход готовности данных АЦП с микроконтроллером.

    Программа решения этой задачи имеет следующий вид:

    ; Программно управляемый ввод
    .ORG    0H
    AJMP Start ; на начало программы
    .ORG 0BH
    AJMP Int_TC0 ; на обработчик таймера Т/С0
    .ORG 30H
    Start:  MOV IE,#00000010b ;pазpешение пpеpываний от Т/С0
    MOV TCON,#0 ;сбpос флагов, останов Т/С0
    MOV P0,#00011111b
    Курс
    208
    MOV P1,#01000000b
    MOV P2,#00000000b
    MOV TMOD,#00000010b
    MOV TL0,#6
    MOV TH0,#6
    MOV R0,#6 ;количество опросов датчика
    MOV R1,#250
    MOV R2,#16
    MOV  R6,#0 ;регистр для хранения максимума
    SETB TR0 ;запуск T/C0
    SETB EA ;разрешение всех прерываний
    ; Генерация сигнала на выходе P2.7
    Cycle: SETB P2.7 ; P2.7 = 1
    MOV R3,#100
    Delay1: DJNZ   R3,DELAY1 ; задержка на t = 200 мкс
    CLR P2.7 ; P2.7 = 0
    MOV R3,#3 ; Задержка на T–t = 600 мкс
    Delay2: MOV R4,#100     
    DJNZ R4,$
    DJNZ R3,Delay2
    AJMP  Cycle ;возврат на цикл генерации сигнала
    ;Обработчик прерываний от таймера
    Int_TC: CLR TR0 ;останов  таймера
    DJNZ   R1,Out_Int ;подсчет количества входов в обработчик
    MOV R1,#250
    DJNZ   R2,Out_Int
    MOV R2,#16
    CLR P1.6 ;запуск АЦП
    MOV R5,#15
    M1: DJNZ R5,M1 ;задержка на преобразования сигнала
    MOV A,R6 ;сравнение с текущим максимумом
    CLR C
    SUBB A,P0
    JNB A.7,M2
    MOV R6,P0 ;замена текущего максимума
    M2: SETB P1.6 ;гашение  АЦП
    MOV R5,#5 ;задержка на гашение АЦП
    M3: DJNZ R5,M3
    DJNZ R0,Out_Int ;проверка окончания опроса
    MOV A,R6
    ANL P2,#11100000b ;вывод результата
    CLR P2.5 ;строб записи в ВУ
    SETB P2.5
    MOV R6,#0 ;восстановление параметров цикла
    MOV R0,#6
    Out_Int: SETB TR0 ;запуск  таймера
    RETI ;выход из обработчика
    .END

    Анализ ввода по прерыванию проведем на следующем примере.

    Микропроцессорная система определяет минимальное значение показаний 6 датчиков и выводит полученное значение на внешнее устройство. Опрос датчиков проводится непрерывно. Во время выполнения аналого-цифрового преобразования МПС решает другие задачи.

    Структура микропроцессорной системы в этом случае имеет вид, представленный на рис. 15.4.

    (рис 15.4) Структурная схема МПС с 6 датчиками и вводом информации по прерыванию

    Изменения по сравнению с рис. 15.3 касаются введения в МПС аналогового мультиплексора и подключения выхода готовности данных АЦП ко входу запроса внешнего прерывания INT0 (вход 2 порта P3) микроконтроллера. Здесь же следует обсудить настройку прерывания по этому входу. Как отмечалось выше, внешние прерывания мик роконтроллера могут быть настроены на установку флага запроса либо по низкому уровню, либо по спаду сигнала на входах INTх. В нашем случае этот сигнал поступает с выхода готовности данных АЦП и переключается с высокого уровня на низкий как раз в момент окончания преобразования. Так что целесообразно настроить установку запроса прерывания по входу INT0 на восприятие среза этого сигнала. К тому же в этом случае запрос будет сбрасываться автоматически при входе в обработчик.

    Перед запуском АЦП микроконтроллер должен выдать на адресный вход мультиплексора номер датчика, показания которого будут считаны. Для хранения этого номера в программе используется регистр R2. Для организации сравнения показания первого датчика с текущим минимальным значением в задействованный для этих целей регистр R6занесем при инициализации максимально возможный 5-разрядный код 00011111b.

    Выполнение фоновой задачи имитируем бесконечным циклом, выход из которого происходит по сигналу прерывания от АЦП.

    Текст программы с необходимыми комментариями приведен ниже.

    ; Ввод по прерыванию
    .ORG 0H
    AJMP Start ; на начало программы
    .ORG 3
    AJMP Int_INT0 ; на обработчик INT0
    .ORG 30H
    Start:  MOV IE,#00000001b ; разрешение прерываний от INT0
    MOV     TCON,#00000001b  ; сброс флагов, INT0 по срезу
    MOV P0,#00011111b
    ACALL INIT
    SETB EA ; разрешение всех прерываний
    M: AJMP M ; фоновая задача
    ; Обработчик прерываний от INT0
    Int_INT0:MOV A,R6 ; сравнение с текущим минимумом
    CLR C
    SUBB A,P0
    JB A.7,M1
    MOV R6,P0
    M1: SETB P1.6 ; гашение АЦП
    MOV R5,#5 ; задержка на гашение
    DJNZ R5,$
    DJNZ R3,M2 ; проверка опроса всех датчиков
    ANL P2,#11100000B ; вывод результата
    211
    MOV A,R4
    ORL P2,A
    CLR P2.5 ; строб записи в ВУ
    SETB P2.5
    ACALL INIT
    RETI
    M2: INC R2 ; А
    др = А
    др + 1
    ACALL INIT1
    RETI ; выход из обработчика
    ; начальные установки
    INIT: MOV R2,#11000000b ; R2<2...0> = <номер датчика>
    MOV R6,#00011111b ; регистр для хранения минимума
    MOV R3,#6 ; количество датчиков
    INIT1: MOV P1,R2 ; выдача номера датчика
    CLR P1.6 ; запуск АЦП
    RET
    .END

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

    Однокристальные МК имеют чрезвычайно большую область применения, поэтому их разнообразие весьма широко. В отличие от универсальных микропроцессоров, где с появлением новых возможностей микропроцессоры предыдущих поколений достаточно быстро сходят со сцены, на рынке однокристальных МК до настоящего времени присутствуют как 4-разрядные БИС с частотой работы в единицы мегагерц, так и 32разрядные схемы, работающие на частоте до 150 МГц. Ведутся разработки и в области 64-разрядных МП. Общее количество ежегодно выпускаемых в мире БИС микроконтроллеров составляет более 10 млрд штук, и оно постоянно увеличивается.

    Основную часть всех выпускаемых в настоящее время изделий данного класса составляют микроконтроллеры разрядностью 8 и 16 бит. 4разрядные микроконтроллеры стабильно занимают около 10 % рынка, но за последнее время их доля начинает медленно уменьшаться. В то же время наиболее интенсивно развиваются высокопроизводительные 32разрядные микроконтроллеры с богатыми периферийными возможностями.

    Хотя около 70 % всех выпускаемых микроконтроллеров имеют архитектуру MCS-51, но и она не остается полностью неизменной, а постоян но модифицируется.

    Разные фирмы вносят в базовую архитектуру свои дополнения и усовершенствования. Рассмотрим их на примере микроконтроллеров AVR фирмы Atmel.

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

    Отметим особенности архитектуры и микроархитектуры микроконтроллеров AVR:

  • наличие трех видов запоминающих устройств на кристалле:
  • системной программируемой Flash-памяти программ с возможностью программирования (загрузки) по последовательному интерфейсу;
  • программируемой энергонезависимой памяти данных EEPROM и ОЗУ данных;
  • программируемые биты защиты от чтения и записи программной памяти и EEPROM ; защита кода от несанкционированного доступа для выделенного во Flash-памяти блока;
  • 32 восьмиразрядных регистра общего назначения, которые представляются единым регистровым файлом и не разбиваются на банки регистров;
  • RISC -подобное процессорное ядро, использующее многоуровневый конвейер; все 32 регистра непосредственно связаны с арифметико-логическим устройством, которое позволяет выполнять одну команду для двух разных регистров за один такт системного генератора;
  • более развитая система прерываний, в том числе 4 уровня приоритетов внешних запросов;
  • встроенные в кристалл развитые интерфейсные возможности;
  • специальные средства для управления встроенной системой отладки, поддерживающие протокол JTAG ;
  • FUSE -биты для задания настроек ряда внутренних блоков микроконтроллера путем установки энергонезависимых "перемычек" на этапе программирования МК, что обеспечивает микроконтроллерам существенный запас гибкости при настройке на конкретное приложение.
  • Система команд МК AVR расширена по отношению к МК-51 и включает около 130 команд. Она имеет больше команд работы с регистровым файлом и внешними устройствами и использует 5 режимов адресации, среди которых - косвенная автоинкрементная и косвенная автодекрементная. Система команд полностью ортогональная.

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

    Для уменьшения энергопотребления в микроконтроллерах AVR используется технология picoPower, которая устанавливает 6 возможных режимов энергосбережения, в том числе за счет широкого диапазона источников питания (от 1,6 до 3,6 вольт). Контроллеры этого семейства способны длительное время работать от батарейного источника питания в таких приложениях, как приборы с ЖКИ, управление освещением, системы безопасности, автоматизация бытовых приборов и устройств.

    Наибольшую известность фирма Atmel получила на рынке 8-разрядных микроконтроллеров. Но известна она также и в области производства 32-разрядных высокопроизводительных микроконтроллеров. Одной из последних моделей в этом направлении являются микроконтроллеры семейства AT32UC3. Их основные характеристики и особенности приведены ниже:

  • тактовая частота до 66 МГц;
  • энергопотребление в активном режиме 0,48 мВт/МГц;
  • Flash-память объемом до 256 Кбайт;
  • память SRAM до 128 Кбайт;
  • шесть 16-разрядных таймеров/счетчиков;
  • сторожевой таймер ( watchdog ) с расширенными возможностями, обеспечивающими дополнительную защищенность системы от потери данных при "зависаниях" какого-либо из блоков в системе. Обработка "зависания" производится с возможностью сохранения критических данных перед генерацией сигнала сброса.
  • Максимальная длительность задержки перед формированием прерывания либо сигнала сброса увеличена до 8 секунд;

  • до 4 интерфейсов USART, интерфейс SPI, 2 интерфейса I2C ; контроллер прямого доступа к памяти;
  • выход сигналов широтно-импульсной модуляции (ШИМ) на каждой линии ввода/вывода; ШИМ обеспечивает выдачу периодического сигнала программируемой длительности и скважности на исполнительные устройства системы управления;
  • скоростной 12-разрядный 9-канальный АЦП с частотой дискретизации до 1,5 млн отсчетов в секунду;
  • часы реального времени;
  • аппаратная поддержка языка Java;
  • поддержка виртуальной памяти;
  • аппаратная поддержка команд, характерных для цифровой обработки сигналов, например, умножение с накоплением (MAC).
  • Краткие итоги. В лекции рассмотрены принципы обмена информацией в микропроцессорной системе: программно управляемый обмен, обмен по готовности, обмен по прерыванию. Приведены примеры систем, в которых реализованы эти принципы обмена, и программы их работы. Рассмотрены тенденции развития рынка однокристальных микроконтроллеров и развитие архитектуры MSC-51 на примере микроконт роллеров AVR фирмы Atmel.

    Страницы:

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

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

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

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

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

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

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

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

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

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

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

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

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

    Микропроцессорная система определяет среднее значение шести последовательных опросов датчика и выводит полученное значение на внешнее устройство через порт 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}$$

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

  • Отслеживать появление переполнения и при необходимости переходить к расширенной разрядной сетке. Это ведет к усложнению программы и сложностям при выполнении деления на последнем шаге вычислений, так как команда деления, входящая в систему команд МК-51, позволяет делить лишь 8-разрядные операнды.
  • Преобразовать вычисление среднего значения к виду:
  • $$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).

    Полученная программа приведена ниже.

    ;Ввод информации по готовности
    .ORG    0H
    AJMP Start ; на начало программы
    .ORG 0BH
    AJMP Int_TC0 ; на обработчик прерывания Т/С0
    Курс
    206
    .ORG 30H
    Start:  MOV IE,#00000010b ; разрешение прерываний от Т/С0
    MOV TCON,#0 ; сброс флагов, останов Т/С0
    MOV P0,#00011111b
    MOV P1,#01100000b
    MOV P2,#00000000b
    MOV TMOD,#00000010b ; Т/С0 в режим 2
    MOV TL0,#6 ; настройка Т/С0 на 250 мкс
    MOV TH0,#6
    CLR A ; ?=0
    MOV R0,#6 ; количество опросов датчика
    MOV R1,#250
    MOV R2,#16
    SETB TR0 ; запуск T/C0
    SETB EA ; разрешение всех прерываний
    ; Генерация сигнала на выходе P2.7
    Cycle: SETB    P2.7  ; P2.7 = 1
    MOV     R3,#100
    Delay1: DJNZ   R3,DELAY1 ; задержка на t = 200 мкс
    CLR     P2.7 ; P2.7 = 0
    MOV R3,#3 ; Задержка на T–t = 600 мкс
    Delay2: MOV  R4,#100     
    DJNZ R4,$
    DJNZ R3,Delay2
    AJMP   Cycle ; возврат на цикл генерации сигнала
    ; Обработчик прерываний от таймера
    Int_TC0: CLR TR0 ; останов таймера
    DJNZ R1,Out_Int  ; подсчет количества входов в обработчик
    MOV R1,#250
    DJNZ   R2,Out_Int
    MOV R2,#16
    Opros: CLR P1.6 ; запуск АЦП
    JB P1.5,$ ; ожидание готовности данных
    ADD A,P0 ; ?= ? + D
    i
    SETB P1.6 ; гашение АЦП
    MOV R5,#5
    DJNZ   R5,$
    DJNZ R0, Opros ; проверка окончания опроса
    MOV B,#6 ; вычисление среднего значения
    DIV AB ; D
    ср = ?/ n
    ANL P2,#11100000b  ; вывод результата
    207
    SETB P2.5 ; строб записи в ВУ
    CLR P2.5
    CLR A ; восстановление параметров цикла
    MOV R0,#6
    Out_Int: SETB TR0 ; запуск таймера
    RETI ; выход из обработчика
    .END

    Программно управляемый ввод предполагает, что к моменту обращения микроконтроллера к внешнему устройству последнее готово к обмену. Эта ситуация требует учета особенностей работы конкретного устройства. В нашем случае анализ работы аналого-цифрового преобразователя показывает, что если между запуском АЦП и считыванием с него информации проходит не менее 30 мкс, то это гарантирует завершение преобразования аналог-код и достоверность данных на выходе преобразователя.

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

    Пусть задача ставится так: разработать микропроцессорную систему, которая определяет максимальное значение шести последовательных показаний датчика и выводит полученное значение на внешнее устройство.

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

    В этом случае схема МПУ будет аналогична схеме, представленной на рис. 15.3, за исключением того, что в ней будет отсутствовать линия, соединяющая выход готовности данных АЦП с микроконтроллером.

    Программа решения этой задачи имеет следующий вид:

    ; Программно управляемый ввод
    .ORG    0H
    AJMP Start ; на начало программы
    .ORG 0BH
    AJMP Int_TC0 ; на обработчик таймера Т/С0
    .ORG 30H
    Start:  MOV IE,#00000010b ;pазpешение пpеpываний от Т/С0
    MOV TCON,#0 ;сбpос флагов, останов Т/С0
    MOV P0,#00011111b
    Курс
    208
    MOV P1,#01000000b
    MOV P2,#00000000b
    MOV TMOD,#00000010b
    MOV TL0,#6
    MOV TH0,#6
    MOV R0,#6 ;количество опросов датчика
    MOV R1,#250
    MOV R2,#16
    MOV  R6,#0 ;регистр для хранения максимума
    SETB TR0 ;запуск T/C0
    SETB EA ;разрешение всех прерываний
    ; Генерация сигнала на выходе P2.7
    Cycle: SETB P2.7 ; P2.7 = 1
    MOV R3,#100
    Delay1: DJNZ   R3,DELAY1 ; задержка на t = 200 мкс
    CLR P2.7 ; P2.7 = 0
    MOV R3,#3 ; Задержка на T–t = 600 мкс
    Delay2: MOV R4,#100     
    DJNZ R4,$
    DJNZ R3,Delay2
    AJMP  Cycle ;возврат на цикл генерации сигнала
    ;Обработчик прерываний от таймера
    Int_TC: CLR TR0 ;останов  таймера
    DJNZ   R1,Out_Int ;подсчет количества входов в обработчик
    MOV R1,#250
    DJNZ   R2,Out_Int
    MOV R2,#16
    CLR P1.6 ;запуск АЦП
    MOV R5,#15
    M1: DJNZ R5,M1 ;задержка на преобразования сигнала
    MOV A,R6 ;сравнение с текущим максимумом
    CLR C
    SUBB A,P0
    JNB A.7,M2
    MOV R6,P0 ;замена текущего максимума
    M2: SETB P1.6 ;гашение  АЦП
    MOV R5,#5 ;задержка на гашение АЦП
    M3: DJNZ R5,M3
    DJNZ R0,Out_Int ;проверка окончания опроса
    MOV A,R6
    ANL P2,#11100000b ;вывод результата
    CLR P2.5 ;строб записи в ВУ
    SETB P2.5
    MOV R6,#0 ;восстановление параметров цикла
    MOV R0,#6
    Out_Int: SETB TR0 ;запуск  таймера
    RETI ;выход из обработчика
    .END

    Анализ ввода по прерыванию проведем на следующем примере.

    Микропроцессорная система определяет минимальное значение показаний 6 датчиков и выводит полученное значение на внешнее устройство. Опрос датчиков проводится непрерывно. Во время выполнения аналого-цифрового преобразования МПС решает другие задачи.

    Структура микропроцессорной системы в этом случае имеет вид, представленный на рис. 15.4.

    (рис 15.4) Структурная схема МПС с 6 датчиками и вводом информации по прерыванию

    Изменения по сравнению с рис. 15.3 касаются введения в МПС аналогового мультиплексора и подключения выхода готовности данных АЦП ко входу запроса внешнего прерывания INT0 (вход 2 порта P3) микроконтроллера. Здесь же следует обсудить настройку прерывания по этому входу. Как отмечалось выше, внешние прерывания мик роконтроллера могут быть настроены на установку флага запроса либо по низкому уровню, либо по спаду сигнала на входах INTх. В нашем случае этот сигнал поступает с выхода готовности данных АЦП и переключается с высокого уровня на низкий как раз в момент окончания преобразования. Так что целесообразно настроить установку запроса прерывания по входу INT0 на восприятие среза этого сигнала. К тому же в этом случае запрос будет сбрасываться автоматически при входе в обработчик.

    Перед запуском АЦП микроконтроллер должен выдать на адресный вход мультиплексора номер датчика, показания которого будут считаны. Для хранения этого номера в программе используется регистр R2. Для организации сравнения показания первого датчика с текущим минимальным значением в задействованный для этих целей регистр R6занесем при инициализации максимально возможный 5-разрядный код 00011111b.

    Выполнение фоновой задачи имитируем бесконечным циклом, выход из которого происходит по сигналу прерывания от АЦП.

    Текст программы с необходимыми комментариями приведен ниже.

    ; Ввод по прерыванию
    .ORG 0H
    AJMP Start ; на начало программы
    .ORG 3
    AJMP Int_INT0 ; на обработчик INT0
    .ORG 30H
    Start:  MOV IE,#00000001b ; разрешение прерываний от INT0
    MOV     TCON,#00000001b  ; сброс флагов, INT0 по срезу
    MOV P0,#00011111b
    ACALL INIT
    SETB EA ; разрешение всех прерываний
    M: AJMP M ; фоновая задача
    ; Обработчик прерываний от INT0
    Int_INT0:MOV A,R6 ; сравнение с текущим минимумом
    CLR C
    SUBB A,P0
    JB A.7,M1
    MOV R6,P0
    M1: SETB P1.6 ; гашение АЦП
    MOV R5,#5 ; задержка на гашение
    DJNZ R5,$
    DJNZ R3,M2 ; проверка опроса всех датчиков
    ANL P2,#11100000B ; вывод результата
    211
    MOV A,R4
    ORL P2,A
    CLR P2.5 ; строб записи в ВУ
    SETB P2.5
    ACALL INIT
    RETI
    M2: INC R2 ; А
    др = А
    др + 1
    ACALL INIT1
    RETI ; выход из обработчика
    ; начальные установки
    INIT: MOV R2,#11000000b ; R2<2...0> = <номер датчика>
    MOV R6,#00011111b ; регистр для хранения минимума
    MOV R3,#6 ; количество датчиков
    INIT1: MOV P1,R2 ; выдача номера датчика
    CLR P1.6 ; запуск АЦП
    RET
    .END

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

    Однокристальные МК имеют чрезвычайно большую область применения, поэтому их разнообразие весьма широко. В отличие от универсальных микропроцессоров, где с появлением новых возможностей микропроцессоры предыдущих поколений достаточно быстро сходят со сцены, на рынке однокристальных МК до настоящего времени присутствуют как 4-разрядные БИС с частотой работы в единицы мегагерц, так и 32разрядные схемы, работающие на частоте до 150 МГц. Ведутся разработки и в области 64-разрядных МП. Общее количество ежегодно выпускаемых в мире БИС микроконтроллеров составляет более 10 млрд штук, и оно постоянно увеличивается.

    Основную часть всех выпускаемых в настоящее время изделий данного класса составляют микроконтроллеры разрядностью 8 и 16 бит. 4разрядные микроконтроллеры стабильно занимают около 10 % рынка, но за последнее время их доля начинает медленно уменьшаться. В то же время наиболее интенсивно развиваются высокопроизводительные 32разрядные микроконтроллеры с богатыми периферийными возможностями.

    Хотя около 70 % всех выпускаемых микроконтроллеров имеют архитектуру MCS-51, но и она не остается полностью неизменной, а постоян но модифицируется.

    Разные фирмы вносят в базовую архитектуру свои дополнения и усовершенствования. Рассмотрим их на примере микроконтроллеров AVR фирмы Atmel.

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

    Отметим особенности архитектуры и микроархитектуры микроконтроллеров AVR:

  • наличие трех видов запоминающих устройств на кристалле:
  • системной программируемой Flash-памяти программ с возможностью программирования (загрузки) по последовательному интерфейсу;
  • программируемой энергонезависимой памяти данных EEPROM и ОЗУ данных;
  • программируемые биты защиты от чтения и записи программной памяти и EEPROM ; защита кода от несанкционированного доступа для выделенного во Flash-памяти блока;
  • 32 восьмиразрядных регистра общего назначения, которые представляются единым регистровым файлом и не разбиваются на банки регистров;
  • RISC -подобное процессорное ядро, использующее многоуровневый конвейер; все 32 регистра непосредственно связаны с арифметико-логическим устройством, которое позволяет выполнять одну команду для двух разных регистров за один такт системного генератора;
  • более развитая система прерываний, в том числе 4 уровня приоритетов внешних запросов;
  • встроенные в кристалл развитые интерфейсные возможности;
  • специальные средства для управления встроенной системой отладки, поддерживающие протокол JTAG ;
  • FUSE -биты для задания настроек ряда внутренних блоков микроконтроллера путем установки энергонезависимых "перемычек" на этапе программирования МК, что обеспечивает микроконтроллерам существенный запас гибкости при настройке на конкретное приложение.
  • Система команд МК AVR расширена по отношению к МК-51 и включает около 130 команд. Она имеет больше команд работы с регистровым файлом и внешними устройствами и использует 5 режимов адресации, среди которых - косвенная автоинкрементная и косвенная автодекрементная. Система команд полностью ортогональная.

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

    Для уменьшения энергопотребления в микроконтроллерах AVR используется технология picoPower, которая устанавливает 6 возможных режимов энергосбережения, в том числе за счет широкого диапазона источников питания (от 1,6 до 3,6 вольт). Контроллеры этого семейства способны длительное время работать от батарейного источника питания в таких приложениях, как приборы с ЖКИ, управление освещением, системы безопасности, автоматизация бытовых приборов и устройств.

    Наибольшую известность фирма Atmel получила на рынке 8-разрядных микроконтроллеров. Но известна она также и в области производства 32-разрядных высокопроизводительных микроконтроллеров. Одной из последних моделей в этом направлении являются микроконтроллеры семейства AT32UC3. Их основные характеристики и особенности приведены ниже:

  • тактовая частота до 66 МГц;
  • энергопотребление в активном режиме 0,48 мВт/МГц;
  • Flash-память объемом до 256 Кбайт;
  • память SRAM до 128 Кбайт;
  • шесть 16-разрядных таймеров/счетчиков;
  • сторожевой таймер ( watchdog ) с расширенными возможностями, обеспечивающими дополнительную защищенность системы от потери данных при "зависаниях" какого-либо из блоков в системе. Обработка "зависания" производится с возможностью сохранения критических данных перед генерацией сигнала сброса.
  • Максимальная длительность задержки перед формированием прерывания либо сигнала сброса увеличена до 8 секунд;

  • до 4 интерфейсов USART, интерфейс SPI, 2 интерфейса I2C ; контроллер прямого доступа к памяти;
  • выход сигналов широтно-импульсной модуляции (ШИМ) на каждой линии ввода/вывода; ШИМ обеспечивает выдачу периодического сигнала программируемой длительности и скважности на исполнительные устройства системы управления;
  • скоростной 12-разрядный 9-канальный АЦП с частотой дискретизации до 1,5 млн отсчетов в секунду;
  • часы реального времени;
  • аппаратная поддержка языка Java;
  • поддержка виртуальной памяти;
  • аппаратная поддержка команд, характерных для цифровой обработки сигналов, например, умножение с накоплением (MAC).
  • Краткие итоги. В лекции рассмотрены принципы обмена информацией в микропроцессорной системе: программно управляемый обмен, обмен по готовности, обмен по прерыванию. Приведены примеры систем, в которых реализованы эти принципы обмена, и программы их работы. Рассмотрены тенденции развития рынка однокристальных микроконтроллеров и развитие архитектуры MSC-51 на примере микроконт роллеров AVR фирмы Atmel.

    Вернуться к учебному плану