Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл3_06.unlocked.docx
Скачиваний:
20
Добавлен:
09.02.2015
Размер:
635.45 Кб
Скачать

1

Глава 3. Однокристальные микроконтроллеры семейства mcs51

    1. Микропроцессоры и микроконтроллеры

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

  1. Микроконтроллер должен иметь развитые средства работы в «жестком» реаль- ном времени. Должен иметь встроенную развитую таймерную систему.

  2. Микроконтроллер должен быть ориентирован на квазипараллельную обработку информации, иметь средствапараллельно (или квазипараллельно) решать ряд относитель- но простых задач. Например, для регулировки температуры и давления в технологической камере, микроконтроллер должен параллельно вести два процесса:

  • измерить температуру в камере;

  • сравнить ее с требуемой температурой;

  • по рассогласованию рассчитать требуемое значение управляющего сигнала на блок энергообеспечения нагревателя;

  • выдать этот сигнал на объект управления;

  • ждать период квантования до следующего запуска кванта управления нагревом.

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

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

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

  2. Микроконтроллер должен полностью интегрировать в себе на одном «чипе» все вычислительное ядро и элементы устройства связи с объектом (тактовый генератор, па- мять программ и данных, разбитую на ряд зон так, чтобы он после перезапуска должен в

кратчайшие сроки продолжить управление. Причем должен иметь простые средства рас- ширения и подключения дополнительных устройств.

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

  2. Простые средства подключения объекта управления. Микроконтроллер должен иметь на кристалле если не завершенное устройство связи с объектом управления, к кото- рому можно непосредственно подключить линии связи, то, хотя бы универсальные порты для формирования таких линий, по которым можно легко проводить дискретное управле- ние ДУ (включить – выключить) и дискретные контроль ДК (включено?), аналоговое управление АУ и аналоговый контроль АК. Хотя аналоговое управление все более выхо- дит из употребления и обосновано заменено широтно или фазоимпульсным управлением по линиям ДУ(см. ).

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

  4. Микропроцессор может быть с совмещенной памятью программ и данных, когда управляющие коды программы и операнды, с которыми совершаются действия, находятся в общей памяти. Такую архитектуру называют фон-Неймановской. Либо управляющие коды и операнды хранятся в разных зонах памяти – памяти программ и памяти данных. Такую архитектуру называют Гарвардской. Ясно, что для микроконтроллеров удобнее Гарвардская организация, поскольку программное обеспечение должно оставаться неиз- менным и управляющую программу можно разместить в РПЗУ, а переменные операнды – ОЗУ. После включения микроконтроллер сразу будет готов к работе.

Составим себе типовой портрет некоторого обобщенного микропроцессора. Мик- ропроцессор – устройство, способное к программно управляемой обработке информации.

Микропроцессор – это последовательностная схема, реакция которой на входные воздействия, помимо значений этих воздействий зависит еще и от состояния схемы. Для ра- боты микропроцессора необходима память, в которой содержится набор необходимых для выполнения инструкций или команд. Каждая команда содержит ее код, дополненный при необходимости адресами операндов, поэтому длина команд может быть различной. На- пример, для простейшей команды «уменьшить содержимое аккумулятора на единицу» дос- таточно задать только ее код, а команда «прибавить к #32 #86» должна, помимо кода, со- держать еще и операнды #32 и #86. Не вдаваясь пока в подробности и особенности адреса- ции операндов (символ «#» - признак непосредственной адресации, когда значения операн- дов идут непосредственно за кодом команды), пока отметим, что в команде, помимо ее кода может быть и еще что-то.

Внутри себя микропроцессор содержит набор специальных регистров и регистров общего назначения. Разрядность регистров микропроцессора наряду с еготактовойчасто- той во многом определяют его параметры. Восьмиразрядные микропроцессоры способны обрабатывать восьмиразрядные слова или байты, 16-и разрядные способны проводить действия с машинным словом в два байта. Тактовая частота определяется частотой тактового генератора, сигналы которого инициируют работу микропроцессора. Свой цикл работы или машинный цикл микропроцессор выполняет за несколько тактов, совершая при этом простейшее завершенное действие или простую (короткую) команду, например очистить аккумулятор CLR A. Число тактов на цикл у микропроцессоров различно и со-

ставляет от 1-2 у микропроцессоров Risc-архитектуры до 12-и и более.

Среди специальных регистров прежде всего выделим счетчик команд РС (Program Counter) или (Program Calculator). Он определяет объем адресного пространст- ва памяти, с которой способен работать микропроцессор. Это неотъемлемая часть любого микропроцессора и микроконтроллера. Алгоритм работы микропроцессора таков:

  1. Считать из памяти содержимое ячейки, адрес которой содержится в счетчике ко- манд РС и интерпретировать считанное значение, как код команды.

  2. По коду команды определить ее длину, содержит ли команда, кроме кода, операн- ды или их адреса и определить адрес следующего кода команды.

  3. Установить на РС адрес кода следующей команды.

  4. Дочитать содержимое команды и выполнить предписанные действия.

  5. Перейти на 1.

Любой микропроцессор имеет вывод Reset, который служит для установки процес- сора вначальное состояние. При этом всчетчике команд устанавливается предопределен- ное начальное значение. Для большинства микропроцессоров это 0. Хотя, наиболее рас- пространенные микропроцессоры семейств Х86, которому относится и Pentium, при сбро- се устанавливают на счетчике команд F0000H. Достаточно счетчику команд сбиться и вве- сти вместо кодакомандылюбую другую ее часть, какмикропроцессор собьетсяи сам уже не восстановит своего правильного функционирования. Современные операционные сис- темы иногда еще могут сделать что-то по восстановлению нормальной работы, мы будем касаться защиты и восстановления после программных сбоев, но в простейшем случае для восстановления нужно просто начать сначала и активизировать вывод Reset.

Важным регистром микропроцессора является аккумулятор А, в котором он про- водит все предписываемые кодом команды действия. Это основной регистр арифметико- логического устройствамикропроцессора. У некоторых микропроцессоров(например, фирмы Motorola) два аккумулятора. В СССР в 80-х годах производились микропроцессо- ры семейства 1801, в которых все восемь регистров общего назначения были полностью универсальны и любой из них мог выполнять роль счетчика команд или аккумулятора. В настоящее время выпускаются 1806ВМ2 – БИС 16-разрядного микропроцессора с архи- тектурой, совместимой с микроЭВМ LCI-11 фирмы DEC.

В любом микропроцессоре есть регистр состояния или слово состояния процессо- ра PSW (Processor Status Word). Даже в универсальном процессоре серии 1801 он был обособлен. Отдельные биты этого слова или, как их называют флаги, устанавливают свое значения по результатам проведенного действия. Мы еще будем подробно изучать слово состояния и флаги микроконтроллеров семейства MCS-51. Пока, просто для общего пред- ставления: есть флаг переполнения аккумулятора O (Overlay), флаг нулевого результата Z (Zero), флаг арифметического переноса или заема и т.п. Эти флаги широко используются системными программистами для построения арифметических действий со словами двой- ной или большей длины, для управления работой периферийных и внутренних устройств ЭВМ, прикладные же программисты используют их в своих программах крайне редко.

Регистр указатель данных содержит адреса операндов, над которыми следует произвести предписанные программой действия. Иногда регистры указатели данных на- зывают индексными регистрами. Методов адресации операндов достаточно много:

  1. Подразумеваемая или регистровая адресация, когда адрес операнда подразумева- ется или определен в единственном слове кода команды, он однозначно определен командой, например увеличить содержимое аккумулятора на единицу INC A. У МК семейства MCS-51 код это однобайтовая команда с кодом 00010111. Или, на- пример, «логическое ИЛИ аккумулятора и регистра» – ORL A,Rn кодируется од- ним байтом 01001rrr, где rrr – три бита для задания номера регистра от нуля до се- ми.

  2. Непосредственная адресация, при которой значение операнда содержится в коде команды. ADD A,#10 – прибавить к содержимому аккумулятора число 10. В ас-

семблере принято, когда содержимое ячейки должно интерпретироваться как опе- ранд, добавлять символ-решетку #. Такая адресация неудобна тем, что команда не универсальна и будет добавлять к аккумулятору только константу десять.

  1. Прямая адресация, когда адрес операндов определен в команде следом за кодом. Например, «прибавить к содержимому аккумулятора значение ячейки с указанным адресом) ADD A,direct adress. Здесь в слове direct address, следующим за кодом ко- манды указан адрес ячейки памяти, содержащий операнд. Здесь содержимое ячей- ки direct address можно изменять и хранить в этой ячейке конкретную переменную процесса.

  2. Косвенная через указатель данных или косвенно-регисровая адресация проводит- ся через специализированный регистр – указатель данных, который и упоминается в начале этого абзаца. Здесь, предварительно изменив содержимое указателя дан- ных, можно проводить действия уже с различными переменными. MOVX A,@DPTR – команда микроконтроллеров семества MCS-51, предписывающая по- местить в аккумулятор содержимое ячейки, адрес которой содержится в 16-и раз- ряднос регистре-указателе данных. Символ @ в ассемблере указывает на то, что содержимое ячейки должно интерпретироваться как адрес операнда.

  3. Косвенная адресация, при которой содержимое следующего за кодом команды слова интерпретируетсяуже как адрес ячейки памяти, содержащей адрес операнда. В ассемблере принято, когда речь идет о содержимом ячейки с номером 12345 ко- дировать это заключением адреса в скобки - (12345). Например, при выполнении команды с косвенной адресацией ADD A,(addr) содержимое ячейки с адресом addr будет интерпретироваться как адрес ячейки памяти, которая содержит не сам опе- ранд, аадрес операнда. Сочетание вассемблере @12345 говоритотом, что 12345 – это адрес, а @12345 –значение ячейки с адресом 12345. Сочетание (12345) говорит отом, что речь идет о содержимом ячейки 12345 и то, что в скобках - адрес. По су- ти – оба обозначения @ и () сходны. Здесь также можно работать с различнымипе- ременными процесса.

  4. Двойная косвенная. ADD A,((addr)) или ADD A,@(addr). Это уже слишком мудре- но, но очень универсально, поэтому в некоторых микропроцессорах, например в серии 1801 есть.

  5. Все остальные методы приведем кратко в одном пункте, так как в микроконтрол- лерах рассматриваемого нами семейства они не применяются и полезны для обра- ботки больших массивов информации и матричных действий. Косвенная с по- ставтоинкрментом ADD A, (addr)+ и косвенная с предавтоинкрментом ADD A,+(addr) увеличивают содержимое ячейки (addr) на единицу после или до прове- дения операции. Есть подобные автоинкрементные операции и для уменьшения - автодекремента.

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

Регистр-указатель стека SP (Stack Pounter) указывает на вершину стека мик- ропроцессора. Стековый механизм передачи управления настолько широко использует- ся в микропроцессорах, что для его реализации предусмотрен специальный регистр. При переходе к вложенной подпрограмме (исполнении команды CALL addr или при об- работке прерывания, содержимое регистра-указателястека SP увеличивается и значение счетчика команд РС (адрес следующего кода команды, подлежащей исполнению) запи- сывается в вершину стека, затем в РС заносится addr. При возврате из подпрограммы или прерывания последней отрабатывается команда возврата Return. В различных ас-

105

семблерах она кодируется символами RET, RTI и т.п. По этой команде из вершины сте- ка восстанавливается значение счетчика команд, хранившееся в нем до перехода к под- программе.

Регистры общего назначения (РОН) служат обычно для хранения результатов промежуточных вычислений. Команды обращения к ним выполняются быстрее, чем обращение к оперативной памяти и занимают меньший объем. Во многих микропроцес- сорах эти регистры достаточно универсальны и могут выполнять функции выше пере- численных. Так в микропроцессорах серии 1801 универсальность РОН полная, специа- лизировантолько регистр PSW.

Для реакции микропроцессора на внешние события предусмотрен механизм пре- рываний, который при их возникновении должен сообщить микропроцессору об этом, а микропроцессор, в свою очередь, запустить подпрограмму обслуживания прерывания, как реакцию на произошедшее событие. Например, если координатный столик дошел до упора (конечного выключателя), двигатель нужно реверсировать, вакуумная камера потеряла герметичность и давление вышло за установленные пределы – закрыть опре- деленные клапаны и выключить насосы и т.п. Событий, важных для работы системы может быть достаточно много и для каждого нужно запускать свою подпрограмму об- служивания. Как это сделать?

Бывает векторная и автовекторная организация прерываний. При автовектор- ной организации для каждого события, точнее внешнего устройства, фиксирующего эти события предусматривается своя линия запроса прерывания INT_n (INTerrupt). Внеш- нее устройство, запрашивающее прерывание INT_n, выставляет на эту линию активный (обычно низкий) уровень. Микропроцессор, обнаружив на своем выводе INT_n актив- ный уровень:

  1. заканчивает очередную команду;

  2. заносит содержимое счетчика команд в стек (в некоторых типах МП в стек при пре- рываниях заносится и PSW);

  3. устанавливает на счетчике команд число, соответствующее активной линии прерыва- ния – адрес вектора прерывания;

  4. обращается к ячейке памяти, адрес которой равен вектору прерываний и из нее и ряда последующих ячеек памяти считывает адрес входа в подпрограмму обслуживания возникшего прерывания (адрес первой команды кода подпрограммы);

  5. выполняет подпрограмму обслуживания, которая должна заканчиваться командой возврата из прерывания (обычно в различных ассемблерах она кодируется RETI или RTI);

  6. встретив команду возврата из прерывания, микропроцессор заносит в свои РС и PSW сохраненные в стеке значения и возвращается к тому месту программного кода, где он был до возникновения прерывания.

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

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

При векторной организации прерывания линия запроса обычно одна INT, но пре-

106

дусмотрена линия подтверждения прерывания INTE (Interrupt Enable). Микропроцессор, получив запрос:

  1. заканчивает очередную команду;

  2. заносит содержимое счетчика команд в стек;

  3. выставляет активный (обычно низкий) уровеньна линиюподтверждения прерывания

INTE;

  1. внешнее устройство, запросившее прерывание, в ответ на сигнал INTE должно на шину данных микропроцессора выставить свой идентификатор – адрес вектора пре- рывания;

  2. микропроцессор, выставив INTE считывает с шины данных адрес вектора прерыва- ния и заносит его с счетчик команд РС;

  3. обращается к ячейке памяти, адрес которой равен вектору прерываний и из нее и ряда последующих ячеек памяти считывает адрес входа в подпрограмму обслуживания возникшего прерывания (адрес первой команды кода подпрограммы);

  4. выполняет подпрограмму обслуживания, которая должна заканчиваться командой возврата из прерывания (обычно в различных ассемблерах она кодируется RETI или RTI);

  5. встретив команду возврата из прерывания, микропроцессор заносит в свои РС и PSW сохраненные в стеке значения и возвращается к тому месту программного кода, где он был до возникновения прерывания.

А как при векторной организации быть с приоритетом обслуживания нескольких одновременных запросов? На рис. 3.1. показана «географическая» организация приорите-

тов. Здесь рядустройств,

МП

D

O1 On

требующих прерывания (объектов О1 … On) под- ключено выходами повтори-

INT INTE

V1 Di

OE

BF Qi

V1

INT

телей 1 с открытым коллек- Vn тором к линии INT. Так что, появление низкого уровня

хотя бы на одном выходе ак-

K1 +5V Kn +5V

1

1 INTE

Рис. 3.1.

тивизирует линию. Преры-

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

ветственно, на выходе повторителя. Получив запрос и проделав действия 1 и 2 описанного выше алгоритма, микропроцессор активизирует INTE. Низкий уровень сигнала приходит к первому объекту. Если он не запрашивал обслуживания (выключатель К1 не замкнут), на выходе ячейки ИЛИ-НЕ объекта также низкий уровень и сигнал INTE проходит далее. Если К1 замкнут, на обоих входах ИЛИ-НЕ низкий уровень, что приведет к высокому на его выходе и сигнал INTE будет блокирован. В тоже время, низкий уровень на обоих вхо- дах ячейки ИЛИ переведет буфер BF из высокоимпедансного (Z), в активное состояние. На входе буфера Di с помощью резистивной матрицы установлено двоичное число, соот- ветствующее вектору прерываний объекта О1. Именно это число появится на выходе бу- фера и на шине данных микропроцессора. Ему остается только проделать пункт 5 и далее алгоритма обработки прерывания.

Первые однокристальные микроконтроллеры были выпущены фирмой Intel в 1979 году. Это было семейство MCS-48. Основной его особенностью было разделение памяти программ и памяти данных. Микроконтроллер был восьмиразрядным и содержал на кри- сталле резидентную оперативную память данных на 64 байта, резидентную память про- грамм на 2 кБ, тактовый генератор, два восьмиразрядных таймера. Прерывания микрокон- троллера были автовекторные, помимо двух внутренних прерываний от таймеров-

счетчиков, было предусмотрено и два внешних входа прерывания. Микросхема была упа- кована в сорока выводной ДИП корпус.

Затем, после краткого выпуска 49-ой серии было выпущено семейство MSC-51, по- служившего в некотором роде эталоном восьмиразрядного микроконтроллера. Множество фирм выпустило аналоги этого семейства, совместимые по системе команд, наличию ми- нимального комплекта внутренних устройств, повторило и расширило архитектуру мик- роконтроллера.

В настоящее время успехи планарной технологии позволяют выпускать уже 32-х разрядные ЧИПы - микроконтроллеры и такие широко присутствуют на рынке средств ав- томатизации, однако восьмиразрядные МКявляются основой построения вычислительно- го ядра простых локальных периферийных микроконтроллеров, которые есть смысл раз- рабатывать при конструировании автоматизированного технологического оборудования. Более сложные и мощные МК целесообразнее подобрать готовыми, из имеющегося набо- ра серийно выпускаемых ПЛК или одноплатных ЭВМ клона РС и плат УСО.

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

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

Среди специализированных МК следует отметить достаточно универсальное се- мейство PIC12 - PIC18 фирмы Microchip, отличающиеся RISC архитектурой и развитой специализацией под конкретные объекты (см. П1. МК PIC).

Отдельныесемейства МК специализированы под частотно регулируемый асин- хронный электропривод.

Сейчас выделилось направление сигнальных микроконтроллеров, предназначенных для цифровойобработки аналоговых сигналов. MSP-контроллеры(Mixed Signal Processor) предназначены для обработки смешанных дискретно-аналоговых сигналов и специализи- рованы для применения в различных измерительных приборах и датчиках. Часто они имеют уникально низкое энергопотребление, поскольку рассчитаны под батарейное пита- ние или на работу в двухпроводной токовой петле 4 – 20 мА. Так, производимый фирмой Texas Instruments микроконтроллерMSP430FG327 является шестнадцатиразрядным с RISC архитектурой и имеет в своем составе флеш-память на 32 Кб, ОЗУ на 512байт, раз- витую таймерную систему, 12-и разрядный АЦП с коммутатором, два 12-и разрядных ЦАП, драйвер ЖК индикатора на 128 сегментов и три операционных усилителя, выводы которых программно коммутируются. ОУ могут быть программно подсоединены к выво- дам корпуса, скоммутированы внутри МК как инструментальный усилитель с программно управляемым усилением, как дифференциальный усилитель на двух ОУ и т.д. И стоит та- кой МК менее семи долларов.

Вопросы к экзамену.

    1. Микропроцессоры и микроконтроллеры. Общность и различие.

    2. Типовой портрет обобщенного микропроцессора. Регистры, способы адресации.

    3. Механизм прерываний типовых микропроцессоров: векторная и автовекторная организация.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]