Синтез последовательностной схемы управления


Выделим области для каждого из трех необходимых в данном случае триггеров А, В и С. В каждой из областей значение какой-либо вторичной переменной должно оставаться неизменным (для области C - это единица в нулевом разряде, для области B - это единица в первом разряде, для области A - во втором). Приняв во внимание все входные и выходные сигналы для каждой из областей, составляем логические выражения для сигналов установки и сброса каждого триггера.

Рассмотрим область, в которой вторичная переменная B = 1. Сигналом установки триггера B является сигнал K1 входящий в эту область, которому соответствуют значения вторичных переменных C. Выходит из области B единичный сигнал, являющийся сигналом сброса Триггера B. Ему соответствует сочетание вторичных переменных .

Логические выражения для установки и сброса триггера B:

Рассмотрим область, в которой вторичная переменная C = 1. Сигналы Z и T входят в эту область, т.е. являются сигналами установки триггера C. Им соответствуют сочетания вторичных переменных . Сигналы и выходят из области C = 1, т.е. являются сигналами сброса. Им соответствуют сочетания вторичных переменных . Таким образом, логические выражения для установки и сброса триггера C будут иметь вид:

Рассмотрим область, в которой вторичная переменная A = 1. Сигнал K2 входит в эту область, т.е. является сигналом установки триггера С. Ему соответствует сочетания вторичных переменных . Сигналы 1 и Zn выходят из области A = 1, т.е. являются сигналами сброса. Им соответствуют сочетания вторичных переменных . Таким образом, логические выражения для установки и сброса триггера A будут иметь вид:

Синтез схемы генерации выходных функций производится в соответствии с картой Карно (Таблица 10.1).

 

 

Таблица. 10.1. Карта Карно для выходных функций

 

A \ BC
Шибер впереди Шибер позади Кольцо наверху
Проверка Zn Кольцо внизу Вращение и обдув

 

Для реализации программы в среде программирования «OWEN Logic» необходимо описать работу устройства для управления сушкой подшипниковых колец. Открыв программу «Owen Logic», создадим новый проект. Потребуется 5 дискретных входов и 6 релейных выхода. Дискретные входы:

· Вход I1 привязан к кнопке «ПУСК»

· Вход I2 привязан к кнопке «СТОП»

· Вход I3 привязан к кнопке «ПУСК N»

· На вход I4 подходит сигнал с датчика K1

· На вход I5 подходит сигнал с датчика K2

· Релейные выходы:

· Выход Q1 отправляет сигнал на замыкание твердотельного реле 1, который отправляет шибер в конечное положение «вперед».

· Выход Q2 отправляет сигнал на замыкание твердотельного реле 2, который поднимает кольцо подшипника в верхнее положение.

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

· Выход Q4 отправляет сигнал на включение светодиода «ПУСК».

· Выход Q5 отправляет сигнал на включение светодиода «ПУСК N».

· Выход Q6 отправляет сигнал на включение светодиода «СТОП».

Под эти условия подходит модель ПР110-220.12ДФ.8Р (Рис. 10.3).

 

Рис. 10.4. Окно выбора модели прибора.

 

 

Рис. 10.5. Внешний вид ПР110-220.12ДФ.8Р

 

С помощью блока комментариев обозначаются имена кнопок (Рис. 10.6).

Рис. 10.6.

 

В рабочем поле программы устанавливаются SR-триггеры SR1(B), SR2(C) иSR3(A). Для того, чтобы инвертировать, при необходимости, сигнал с выхода триггера, устанавливаются элементы «НЕ_B», «НЕ_C» и «НЕ_A». Входы элементов НЕ соединяются с выходами соответствующих триггеров (Рис. 10.7).

 

Рис. 10.7. Триггеры А, В и С в рабочем поле

 

Для имитации логических схем триггеров, синтезированных в предыдущем пункте, необходимы 7 логических элементов И, для каждого из состояний графа переходов, кроме состояния (000) (Рис. 10.9). Эти элементы – «И_1», «И_2» … «И_7», состоят из трех входов, которые соединяются с определенными выходами триггеров или элементов НЕ:

· (001) «И_1» - «НЕ_B»; SR2(C); «НЕ_A»

· (011) «И_2» - SR1(B); SR2(C); «НЕ_A»

· (010) «И_3» - SR1(B); «НЕ_C»; «НЕ_A»

· (110) «И_4» - SR1(B); «НЕ_C»; SR3(A)

· (111) «И_5» - SR1(B); SR2(C); SR3(A)

· (101) «И_6» - «НЕ_B»; SR2(C); SR3(A)

· (100) «И_7» - «НЕ_B»; «НЕ_C»; SR3(A)

 

В среде программирования «OWEN Logic» не представлены логические элементы «И» с тремя входами, поэтому следует воспользоваться макросом. Осуществляется создание макроса с тремя входами и одним выходом. Сам макрос представляет собой пару элементов «И» соединенных по схеме, показанной на Рис. 10.8. Макрос сохраняется под именем «И».

 

Рис. 10.8. Макрос с тремя входами и одним выходом

 

Рис. 10.9. Рабочее поле с триггерами

 

Для запуска цикла или циклов не только кнопкой «ПУСК», но и кнопкой «ПУСК N», необходимо в рабочем поле поместить элемент «ИЛИ_1», который будет осуществлять дизъюнкцию входов I1 и I3 (Рис. 10.10).

 

Рис. 10.10. Рабочее поле с элементом «ИЛИ_1», который осуществляет
дизъюнкцию входов I1 и I3

 

Выход элемента «И_1» соединяется с релейным выходом Q1, т.к. состояние (001) означает, что шибер дошел до конечного положения «вперед», после чего на вход I4 приходит единичный сигнал от датчика K1 (Рис. 10.11).

 

Рис. 10.11.

 

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

· Ко входу TON1 присоединяется выход элемента «И_4».

· На выходе сигнал с таймера инвертируется логическим элементом НЕ. Для попадания сигнала на релейный выход Q3, должна произойти конъюнкция на логическом элементе «И_8» сигналов с элементов «НЕ TON1» и «И_4». Так как «И_4» соединена и с таймером «TON1» и с «И_8» , то с помощью инвертора «НЕ TON1» на tn секунд будет идти единичный сигнал на выход Q3 (Рис. 10.12).

 

Рис. 10.12. Рабочее поле с таймером TON1

 

Выход элемента «И_3» соединяется с релейным выходом Q2 т.к. состояние (010) означает, что кольцо достигло верхнего положения, после чего на вход I5 приходит единичный сигнал от датчика K2.

Между элементом «И_3» и выходом Q2, располагаются таймер TON2, задерживающий сигнал на 1 секунду, для того, чтобы шибер вернулся назад, и триггер SR4, который устанавливается до тех пор, пока не придет сигнал сброса с элемента «ИЛИ_2», осуществляющим дизъюнкцию входа I2 и таймера TON1. Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП» (Рис. 10.13).

 

Рис. 10.13. Рабочее поле с таймером TON2

 

Для того, чтобы светодиод «ПУСК» горел на протяжении всего цикла работы программы, необходимо поместить триггер SR5 на рабочее поле, и соединить его выход с релейным выходом Q4 (Рис. 10.14).

· Вход S необходимо соединить с дискретным входом I1.

· Вход R соединяется с элементом «ИЛИ_3», осуществляющим дизъюнкцию входа I2 и элемента «И_7». Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП».

 

Рис. 10.14. Рабочее поле с триггером SR5

 

При нажатии кнопки «ПУСК N», цикл должен повториться необходимое количество раз. Чтобы задать это число, можно воспользоваться инкрементным счетчиком с авто-сбросом (СТ1). В поле «уставка», задается количество циклов программы. Вход счетчика нужно соединить с выходом элемента «И_9», который осуществляет конъюнкцию элемента «И_6» и триггера SR6.

· Триггер SR6 необходим для сохранения сигнала с входа I3 (кнопка «ПУСК N»), на его вход S подается этот сигнал. Вход R, триггера SR6, соединен с выходом элемента «ИЛИ_4», осуществляющим дизъюнкцию входа I2 и выхода счетчика CT1.

· Выход триггера SR6 соединен с входом элемента «И_9», и входом элемента НЕ, инвертирующим сигнал с триггера (Рис. 10.15).

 

Рис. 10.15. Рабочее поле с соединением выхода триггера SR6
с входом элемента «И_9», и входом элемента НЕ

 

Для того, чтобы светодиод «ПУСК N» горел на протяжении всех циклов работы программы, необходимо поместить триггер SR7 на рабочее поле, и соединить его выход с релейным выходом Q5.

· Вход S необходимо соединить с дискретным входом I3.

· Вход R соединяется с элементом «ИЛИ_5», осуществляющим дизъюнкцию входа I2 и счетчика СТ1. Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП» (Рис. 10.16).

 

Рис. 10.16. Рабочее поле с соединением с входом I2

 

Светодиод «СТОП» должен гореть только при подходе сигнала на дискретный вход I2, поэтому можно соединить этот вход с релейным выходом Q6 без вспомогательных блоков (Рис. 10.17).

 

Рис. 10.17. Рабочее поле с соединением дискретного входа I2
релейным выходом Q6

 

Для триггера B, логическая схема будет выглядеть следующим образом:

· Вход S соединен с элементом «И_10», который осуществляет конъюнкцию входа I4 и элемента «И_11». Элемент «И_11» необходим для установки триггера SR1(B) в состояние 1. По логическому уравнению видно, что для установки триггера SR1(B), триггер C должен быть в установленном состоянии, а триггер A в выключенном, поэтому входы элемента «И_11» соединены с выходом триггера SR2(C) и выходом элемента «НЕ_A».

· Вход R соединяется с элементом «ИЛИ_6», осуществляющим дизъюнкцию входа I2 и элемента «И_5». Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП» (Рис. 10.18).

 

Рис.10.18. Рабочее поле с соединением входа I2
для сбрасывания триггера при нажатии кнопки «СТОП»

 

Для триггера C, логическая схема будет выглядеть следующим образом:

· Вход S соединен с элементом «ИЛИ_7», который осуществляет дизъюнкцию элементов «И_12» и «И_13».

· Элемент «И_12» осуществляет конъюнкцию элементов «И14» и «ИЛИ_1». Элемент «И_14» необходим для установки триггера SR2(C) в состояние 1. По логическому уравнению видно, что для установки триггера SR2(C), триггер B и триггер A должны быть в выключенном состоянии, поэтому входы элемента «И_14» соединены с выходом элемента «НЕ_B» и выходом элемента «НЕ_A». Элемент «ИЛИ_1» нужен для того, чтобы сигналы поступающие и с входа I1 и с входа I3 включали триггер C, так как у обеих выходов совпадают функции запуска цикла.

· Элемент «И_13» осуществляет конъюнкцию элементов «И_15» и «TON1». Элемент «И_15» необходим для установки триггера SR2(C) в состояние 1. По логическому уравнению видно, что для установки триггера C, триггер B и триггер A должны быть во включенном состоянии, поэтому входы элемента «И_15» соединены с выходом триггера SR1(B) и триггером SR3(A). Элемент TON1 – это таймер, который останавливает вращение и обдув кольца через tn секунд

· Вход R соединен с элементом «ИЛИ_9», который осуществляет дизъюнкцию элементов «ИЛИ_10» и «И_16».

· Элемент «ИЛИ_10» осуществляет дизъюнкцию входа I2 и элемента «И_2». Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП».

· Элемент «И_16» осуществляет конъюнкцию элементов «И_6» и «НЕ_SR5» (Рис. 10.19).

 

Рис. 10.19. Рабочее поле с соединением элемента «И_16»
для сбрасывания триггера при нажатии кнопки «СТОП»

 

Для триггера A, логическая схема будет выглядеть следующим образом:

· Вход S соединен с элементом «И_17», который осуществляет конъюнкцию входа I5 и элемента «И_18». Элемент «И_18» необходим для установки триггера SR3(A) в состояние 1. По логическому уравнению видно, что для установки триггера SR3(A), триггер B должен быть во установленном состоянии, а триггер C в выключенном, поэтому входы элемента «И_18» соединены с выходом триггера SR1(B) и выходом элемента «НЕ_C».

· Вход R соединен с элементом «ИЛИ_11», который осуществляет дизъюнкцию элементов «ИЛИ_12» и «И_19».

· Элемент «ИЛИ_12» осуществляет дизъюнкцию входа I2 и элемента «И_7». Соединение с входом I2 необходимо для сбрасывания триггера при нажатии кнопки «СТОП».

· Элемент «И_19» осуществляет конъюнкцию элемента «И_6» и триггера SR5 (Рис. 10.20).

Рис. 10.20. Рабочее поле с соединением элемента «И_19»
для осуществления конъюнкции элемента «И_6» и триггера SR5

 

После того как программа приведена в окончательный вид, следует проверить его работоспособность в режиме симуляции (Рис. 10.21). Работа программы должна соответствовать вербальному пошаговому описанию алгоритма.

 

Рис. 10.21. Окончательный вид программы

 

После создания и проверки работоспособности проекта его записывают в энергонезависимую память программируемого реле (ПР). Для записи следует:

· Соединить ПР с COM-портом ПК при помощи коммуникационного кабеля.

· Подать питание на ПР согласно его руководству по эксплуатации.

· Настроить параметры соединения, если в этом есть необходимость.

· записать проект в ПР, нажав кнопку Записать программу в прибор на панели инструментов, или выбрав команду «Файл > Записать программу в прибор».

Предлагаемый метод позволяет реализовать переход от вербального описания последовательностной схемы автоматического управления к реальной программе для программируемого реле. Программа автоматического управления установкой сушки подшипниковых колец реализована с помощью программируемого реле. Применение метода формализации вербального алгоритма в граф переходов позволяет перейти к логическим (Булевым) выражениям и составить программу управления в виде логической схемы приложения «OWEN Logic». Предлагаемый метод менее зависим от субъективных качеств разработчика.

 


МИКРОКОНТРОЛЛЕРЫ

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

Поэтому слова микроконтроллер и микро-ЭВМ являются синонимами. Однако первый термин (от английского слова control — управлять) более распространен, поскольку отражает его основное назначение — использование в системах автоматического управления, встроенных в самые разные устройства: кредитные карточки, фотоаппараты, сотовые телефоны, музыкальные центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины, микроволновые печи, системы охранной сигнализации, системы зажигания бензиновых двигателей, электроприводы локомотивов, ядерные реакторы и многое, многое другое. Встраиваемые системы управления стали настолько массовым явлением, что фактически сформировалась новая отрасль экономики, получившая название Embedded Systems (встраиваемые системы — англ.).

В настоящее время в мире выпускаются тысячи разновидностей МК. Они поставляются в корпусах с числом выводов от 8 до 356, работают при температуре от -55 до +125 "С на частотах от 32 кГц до 200 МГц, способны функционировать при напряжении питания от 1,2 В, потребляя при этом ток, не превышающий единицы микроампер. Цена изделий также непрерывно снижается. Стоимость некоторых восьмиразрядных МК уже сегодня сопоставима со стоимостью одной микросхемы жесткой логики. Сегодня все труднее найти область человеческой деятельности, где бы МК не нашли применения.

Еще в 1965 г. Гордон Мур (Gordon Moore), один из будущих основателей могущественной корпорации Intel, обратил внимание на интереснейший факт. Представив в виде графика рост производительности запоминающих микросхем, он обнаружил любопытную закономерность: новые модели микросхем появлялись каждые 18—24 месяца, а их емкость при этом возрастала каждый раз примерно вдвое. За прошедшее время число транзисторов на кристалле выросло в десятки тысяч раз и составляет десятки миллионов.

Первый МК 8048 был создан фирмой Intel в 1976 г. Помимо ЦП, в его состав входила память программ, память данных, восьми битный таймер и 27 линий ввода/вывода. Сегодня МК 8048 является достоянием истории, а вот МК 8051, выпущенное Intel в 1980 г., можно считать классическим образцом, по образу и подобию которого позднее было создано множество других изделий. Его структурная схема представлена на рис. 11.1. ЦП — главный узел МК. С ним связано такое важнейшее понятие, как система команд.

Система команд

Система команд — это уникальный, характерный для данного ЦП набор двоичных кодов, определяющих перечень всех его возможных операций. Каждый такой код определяет одну операцию и называется кодом операции или командой. Чем больше кодов используется в системе команд, тем больше операций способен выполнить ЦП. МК 8051 — восьмиразрядный, поэтому коды операций у него имеют размер 8 бит. Теоретически может быть всего 256 восьми битных кодов операций. В МК 8051 используются 255.

Рис.11.1. Структурная схема МК 8051.

В зависимости от числа использованных кодов операций системы команд подразделяют на две группы: CISC и RISC. Термин CISC означает сложную систему команд и является аббревиатурой английского определения Complex Instruction Set Computer. Аналогично термин RISC означает сокращенную систему команд и происходит от английского Reduced Instruction Set Computer. Систему команд МК 8051 можно отнести к типу CISC.

Система команд МК семейства Microchip PIC 16 включает в себя всего 35 инструкций и может быть отнесена к типу RISC. Обычно выигрыш от повышения быстродействия в рамках RISC-архитектуры перекрывает потери от менее эффективной системы команд, что приводит к более высокой эффективности RISC-систем в целом по сравнению с CISC. Так, самая быстрая команда МК 8051 выполняется за 12 тактов. Даже если для каждой инструкции потребуется выполнить три инструкции RISC-контроллера, то в итоге RISC-архитектура обеспечит четырехкратное увеличение производительности. С упрощением ЦП уменьшается число транзисторов, необходимых для его реализации, следовательно, уменьшается площадь кристалла. А с этим связано снижение стоимости и потребляемой мощности. Сегодня признаком RISC-архитектуры является считывание команд за один такт тактового генератора.

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

ПЗУ — постоянное запоминающее устройство, предназначенное для хранения программ, поэтому часто эту память называют кодовой или памятью программ. В программируемые ПЗУ информацию записывают с помощью устройства, называемого программатором. МК с такими ПЗУ бывают двух типов: однократно и многократно программируемые (перепрограммируемые). В настоящее время все более популярной становится новая технология реализации ПЗУ — Flash-память. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации с помощью программаторов. Минимальное гарантированное число циклов записи/стирания обычно превышает несколько тысяч. Это существенно увеличивает жизненный цикл и повышает гибкость МК-систем, так как позволяет вносить изменения в программу МК как на этапе разработки системы, так и в процессе его работы в реальном устройстве.

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

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

Таймеры ТО, Т1 — шестнадцатиразрядные программируемые таймеры/счетчики, которые могут быть запрограммированы на выполнение целого ряда функций. Их можно использовать для точного формирования временных интервалов, подсчета импульсов на выводах МК, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. Таймеры/счетчики способны вырабатывать запросы прерываний, переключая ЦП на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение МК находят в системах реального времени, таймеры/счетчики являются их обязательным элементом. В некоторых модификациях число таймеров достигает 32.

Последовательный порт — канал информационного обмена МК с внешним миром. Такие каналы связи занимают минимальное число выводов кристалла, обеспечивая связь на значительные расстояния с минимальными аппаратными затратами. В 8051 реализован универсальный асинхронный последовательный приемопередатчик (UART), поддерживающий протокол стандарта RS-232C, что обеспечивает возможность организации связи этого МК с персональным компьютером. Кроме RS-232C, популярными протоколами в мире встраиваемых систем являются RS-485, l2C (двухпроводная двунаправленная шина), SPI (последовательный периферийный трехпроводный интерфейс), Bitbus (последовательная магистраль управления), CAN (межконтроллерный сетевой интерфейс), USB (универсальная последовательная шина) и некоторые другие. Практически для любого типа последовательного канала сегодня можно найти МК, имеющий в своем составе соответствующий последовательный порт.

Параллельные порты ввода/вывода — также обязательная часть любого МК. Обычно их используют для связи с ближайшим окружением — датчиками и исполнительными механизмами. Важная особенность параллельных портов МК — возможность программирования на выполнение нескольких функций. Например, в 8051 выводы портов Р0 и Р2 могут использоваться либо как обычные статические регистры ввода/вывода, либо а качестве шины адреса и данных для подключения внешних устройств, таких как дополнительная память программ, память данных, устройства ввода/вывода. Это придает МК архитектурную гибкость. Порт РЗ может либо использоваться как статический регистр ввода/вывода, либо выполнять специальные функции для работы последовательного канала, таймеров, контроллера прерываний и т. д. Возможность перепрограммирования позволяет с максимальной эффективностью задействовать все выводы МК в проектируемом устройстве.

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

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

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

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

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

11.2. Программирование МК

Разработка программы — один из наиболее важных этапов в создании устройства на базе МК. Без нее он, не реагирует на внешние воздействия и не выдает управляющих сигналов. При включении питания МК немедленно начинает исполнять программу, находящуюся в подключенной к нему памяти программ (обычно это ПЗУ). Ее выполнение начинается с некоторого фиксированного адреса, чаще всего нулевого. Адрес — это просто номер ячейки ПЗУ. Процесс осуществляется следующим образом: МК считывает число, хранящееся в памяти программ, и в зависимости от его значения, называемого машинным кодом, выполняет определенные действия над содержимым регистров АЛУ, памяти, портов и т. д. Например, прочитав из памяти программ число 32Н, МК "понимает", что нужно считать значение из входного порта номер 2 и поместить его в регистр-аккумулятор. Часто одного байта для описания действия не хватает, и тогда МК считывает из памяти дополнительные байты. После выполнения действия МК считывает значение из следующей по порядку ячейки памяти и т. д. Совокупность байтов, описывающих одно выполняемое МК действие, называют машинной командой (инструкцией), а совокупность таких команд, которые "понимает" МК, - его системой команд или набором инструкций (Instruction Set). МК разных семейств имеют разные системы команд, т. е. машинные коды у них имеют разные значения, хотя и выполняют похожие действия.

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

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

Следующим шагом в разработке программ для МК стало создание специальных компьютерных программ — трансляторов с языков программирования высокого уровня, или компиляторов. Наибольшее распространение получил язык программирования Си. С появлением трансляторов разработка программ для МК резко упростилась. Если, например, нужно сложить в программе два числа, то теперь достаточно просто написать а = b + с, а транслятор преобразует это выражение в необходимую последовательность машинных команд в зависимости от типов переменных a, b и с.

Однако, при использовании языка высокого уровня разработчик должен вручную запускать разнообразные программы (текстовый редактор, компилятор Си, линкер), помнить управляющие ключи, искать ошибки в программе по номерам строк в файле. Последним на сегодняшний день шагом в облегчении труда разработчика программ для МК стало появление интегрированных сред разработки (Integrated Development Environment, IDE). Интегрированная среда разработки — это компьютерная программа, связывающая воедино все этапы разработки программы. Она совмещает в себе текстовый редактор для написания исходных текстов, трансляторы с ассемблера и Си, линкер, отладчик, справочную информацию по МК и другие средства, необходимые разработчику. Настройка трансляторов, линкера и других компонентов производится не методом указания ключей в командной строке, а в виде диалоговых окон, где нужно только расставить "галочки" в нужных местах. Преобразование исходных текстов программ в файл машинных кодов запускается одной клавишей. Появление интегрированных сред разработки программ еще больше повысило эффективность создания программ для МК, позволило разработчику сосредоточиться на сути решаемой задачи и отвлечься от конкретных деталей ее реализации.

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

-компилятор должен предоставлять достаточную информацию о структуре программы и используемых ею данных. Эту информацию называют символьной (отладочной);

-отладчик должен уметь интерпретировать эту информацию.

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

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

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

К числу основных инструментальных средств отладки относятся внутрисхемные эмуляторы, программные симуляторы, платы развития (оценочные платы), мониторы отладки и эмуляторы ПЗУ. Существуют и комбинированные устройства и наборы.

Внутрисхемный эмулятор (ВСЭ) - программно-аппаратное средство, способное замещать собой эмулируемый процессор в реальном устройстве. ВСЭ — наиболее мощное и универсальное отладочное средство. Функционально ВСЭ делятся на стыкуемые с внешней вычислительной машиной (обычно это — IBM-совместимый ПК) и функционирующие автономно. Последние имеют собственные вычислительные ресурсы и средства ввода/вывода, поэтому при равных возможностях стоят значительно дороже первых, а при одинаковой цене существенно уступают им в функциональных и сервисных возможностях.

С отлаживаемой системой ВСЭ обычно соединяют кабелем со специальной эмуляционной головкой. Относительно недавно появились модели ВСЭ, у которых такая головка конструктивно совмещена с основным блоком и вставляется в отлаживаемую систему вместо МК. Если последний невозможно удалить (выводы впаяны в плату), использование ВСЭ допустимо п<



Дата добавления: 2021-01-26; просмотров: 518;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.035 сек.