Текст
                    УДК 681.3(075.8).
ББК 32.973-02я73
В19
Васильев А. Е.
В19 Микроконтроллеры. Разработка встраиваемых приложений.—
СПб.: БХВ-Петербург, 2008. — 304 с: ил. + CD-ROM —
(Учебное пособие)
ISBN 978-5-9775-0052-4
Представлена обобщенная структурная схема системы управления на
базе микроконтроллеров (МК), рассмотрены архитектурные принципы
построения МК, их процессорного ядра, системы памяти и современной
номенклатуры периферийных устройств. Значительное внимание уделено
вопросам проектирования, отладки и диагностирования. Рассмотрены
специфика проектирования встраиваемых приложений, методы и средства
анализа предметной области и моделирования, принципы выбора элементной
базы, приемы применения средств автоматизации проектирования.
Приведены примеры решения типовых задач, а также вариант организации
учебного исследовательского центра и проведения лабораторного практикума.
Прилагаемый компакт-диск содержит демонстрационную версию Shells 1,
описание стенда-тренажера и примеры программ (для микроконтроллера
Infineon 80С515). " *
Для студентов технических вузов очной и заочной формы обучения,
аспирантов, инженерно-технических работников
УДК 681.3(075.8)
ББК 32.973-02я73
Группа подготовки издания:
Главный редактор Екатерина Кондукова
Зам. главного редактора Татьяна Лапина
Зав. редакцией Григорий Добин
Редактор Юрий Рожко
Компьютерная верстка Ольги Сергиенко
Корректор Зинаида Дмитриева
Дизайн серии ' Игоря Цырульникова.
Оформление обложки Елены Беляевой
Зав. производством Николай Тверских
Рецензенты:
М. Б. Сергеев, д. т. н., профессор, зав. кафедрой вычислительных систем и сетей СПбГУАП,
С. И. Зиатдинов, д. т. н., профессор кафедры информационно-сетевых технологий СПбГУАП.
Лицензия ИД № 02429 от 24.07.00. Подписано в печать 16.11.07.
Формат 70х1001/,е. Печать офсетная. Усл. печ. л. 24,51.
Тираж 2000 экз. Заказ № 4501
"БХВ-Петербург", 194354, Санкт-Петербург, ул. Есенина, 5Б.
Санитарно-эпидемиологическое заключение на продукцию
№ 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой
по надзору в сфере защиты прав потребителей и благополучия человека.
Отпечатано с готовых диапозитивов
в ГУП "Типография "Наука"
199034, Санкт-Петербург, 9 линия, 12
isbn '>7к-5-<>775-<)052-4
о Васильев Л. [•„ 2008
€' Оформление, шд.тгелг.епш "БХН-Петербург", 2008
Оглавление
Введение 7
Глава 1. Основы организации микроконтроллеров 11
1.1. Структура микроконтроллера 11
1.2. Ядро микроконтроллера 13
1.3. Память микроконтроллера 17
1.4. Параллельные порты ввода-вывода 22
1.5. Таймеры-счетчики 26
1.6. Блоки обработки событий 28
1.7. Цифроаналоговые преобразователи 31
1.8. Аналоговые компараторы 33
1.9. Аналого-цифровые преобразователи 34
1.10. Средства поддержки межпроцессорного обмена 38
1.11. Блоки обслуживания прерывающих событий 41
1.12. Средства повышения надежности функционирования МК 45
\
Глава 2. Микроконтроллер Infineon 80С515 47
2.1. Общее описание и цоколевка 47
2.2. Организация памяти микроконтроллера 50
2.3. Система команд 54
2.4. Параллельные порты ввода-вывода ; 56
2.5. Таймеры-счетчики ТО и Т1 57
2.6. Таймер 2 и блок быстрого ввода-вывода 59
2.7. Аналого-цифровой преобразователь 61
2.8. Последовательный порт 62
2.9. Система прерываний 64
2.10. Сторожевой таймер и особые режимы работы МК 80C5I5 67


4 Оглавление Глава 3. Проектирование микроконтроллериых систем 71 3.1. Общие положения..... 71 3.2. Специфика проектирования встраиваемых приложений 74 3.3. Анализ предметной области и моделирование 76 3.3.1. Модель системы управления концентрацией реагента в растворе 77 3.4. Определение функций аппаратного и программного обеспечения. Разработка структурной схемы 80 3.5. Проектирование аппаратного обеспечения 83 3.5.1. Выбор элементной базы ... 83 3.5.2. Разработка принципиальных схем 87 3.5.3. Расчет параметров элементов 88 3.5.4. Разработка печатных плат и макетирование 89 3.5.5. Средства автоматизированного проектирования аппаратуры 91 3.6. Разработка программного обеспечения 95 3.6.1. Структура и функции системного ПО 96 3.6.2. Структура и функции инструментального ПО .98 3.6.3. Структура и функции прикладного ПО 99 3.6.4. Стадии разработки программного обеспечения 101 Глава 4. Отладка микроконтроллерных систем 105 4.1. Средства и методы отладки аппаратуры МКС 105 4.1.1. Общетехнические средства отладки аппаратуры 106 4.1.2. Логические пробники 107 4.1.3. Логические пульсаторы , 108 4.1.4. Индикаторы тока 109 1.2. Средства и методы отладки программного обеспечения 110 4.2.1. Отладчики 1 ю 4.2.2. Программные модели 111 4.2.3. Эмуляторы ПЗУ. 112 4.2.4. Программаторы „ 113 4.2.5. Методика отладки программного обеспечения 116 4.2.6. Каталог семантических ошибок программирования 121 1.3. Средства и методы комплексной отладки микроконтроллерных .систем 136 4.3.1. Логические анализаторы ; • 136 4.3.2. Внутрисхемные эмуляторы 139 4.3.3. Интегрированные системы разработки 142 "лава 5. Диагностирование микроконтроллерных систем 145 [Л. Основные понятия и определения 145 >.2. Средства диагностирования микроконтроллерных систем 148 5.2.1. Программные средства диагностирования '. 148 5.2.2. Аппаратные средства диагностирования 150 5.2.3. Программно-аппаратные средства диагностирования 153 ,3. Процедура проведения диагностирования 156 ¦ Оглавление - Глава 6. Примеры разработок программного обеспечения микроконтроллерных систем - • 157 6.1. Арифметико-логические вычисления на микроконтроллере 157 6.2. Ввод информации в микроконтроллерную систему 160 6.2.1. Опрос пользовательского пульта 160 6.2.2. Опрос датчиков аналоговых величин 164 6.2.3. Определение длительности временных интервалов 166 6.3. Вывод информации из микроконтроллерной системы 169 6.3.1. Вывод цифровых кодовых последовательностей 169 6.3.2. Вывод ШИМ-сигналов 173 6.3.3. Вывод сигналов с временным сдвигом 175 Глава 7. Реализация встраиваемых систем управления электромеханическими объектами • •• 179 7.1. Структура системы управления '179 7.2. Опрос пользовательского пульта - 181 7.3. Отображение алфавитно-цифровой информации на пульте 184 7.4. Опрос датчиков аналоговых величин • 184 7.5. Организация межмодульного программного взаимодействия 187 7.6. Обработка сигналов фотоимпульсного датчика • 191 7.7. Обработка сигналов синусно-косинусных вращающихся трансформаторов 195 7.8. Управление двигателями постоянного тока 200 7.9. Управление вентильными двигателями 204 7.10. Управление асинхронными трехфазными двигателями 207 7.11. Управление асинхронными двухфазными двигателями 213 7.12. Управление шаговыми двигателями 219 7.13. Моделирование объектов в системах управления 225 7.14. Разработка типовых регуляторов 231 Глава 8. Лабораторный практикум 245 8.1. Организация учебного исследовательского комплекса 245 8.2. Программа первого посещения: "Изучение вычислительных возможностей МК" 248 8.3. Программа второго посещения: "Работа с портами МК" 252 8.4. Программа третьего посещения: "Изучение таймеров и системы прерываний".... 253 8.5. Программа четвертого посещения: "Организация и исследование межпроцессорного обмена" 254 8.6. Варианты индивидуальных заданий 254 8.7. Отчетность по лабораторному практикуму 256 ПРИЛОЖЕНИЯ 259 Приложение 1. Сравнительные характеристики некоторых моделей м н кроконтроллеров 261
Приложение 2. Система команд микроконтроллеров МК-51 263 Приложение 3. Часто употребляемые директивы языка ассемблера х8051 ...271 Директивы управления адресами и файлами программ 271 Директивы определения символических имен 272 Директивы резервирования памяти 272 Директивы работы с макросами 273 Приложение 4. Описание среды проектирования shellsl 275 Вкладка Текст программы 275 Вкладка Листинги 278 Вкладка Симулятор 280 Вкладка Окна памяти 282 Вкладка Окна управления 284 Вкладка Терминал 286 Вкладка Справочник , 288 Приложение 5. Описание прилагаемого компакт-диска 289 Литература 291 Предметный указатель 295 Введение 11еослабевающие темпы роста сложности технических объектов и требований к качеству управления ими влекут за собой необходимость использования в системах управления средств вычислительной техники, многофункциональность которых позволяет обеспечить множественность режимов управления, повысить способности системы к адаптации, обеспечить требуемые надежностные характеристики. К числу задач, ставящихся перед системами управления, традиционно относятся следующие: Г) формирование сложных импульсных последовательностей; П определение длительности временных интервалов; П аналого-цифровое и цифроаналоговое преобразование; П "ввод—преобразование—вывод цифровых кодов" и др. (' 70-х годов разработчики систем управления стали использовать вычисли- гельные системы на базе микропроцессоров (МП), выпуск которых был освоен рядом производителей (Intel, Motorola и др.). Применение этой технологии разработки систем управления позволяло повысить скорость и эффективность проектирования новых систем на базе старых, снизить затраты на обнаружение и устранение неисправностей, а также удешевить производство. ()днако в силу своих архитектурных ограничений микропроцессоры не обладали возможностью непосредственно решать задачи управления, и для достижения поставленных целей разработчики вынуждены были снабжать их набором дополнительных устройств: памятью программ и данных, а также набором периферийных элементов: таймерами, счетчиками, апшюго-цифро- выми (АЦП) и цифроаналоговыми преобразователями (ЦАП), программируемыми контроллерами ввода-вывода и т. и. Характерный пример структуры подобной системы покачан на рис. HI.
ГЛАВА 1 Основы организации микроконтроллеров 1.1. Структура микроконтроллера Микроконтроллер представляет собой вычислительную систему, реализованную в виде одной интегральной схемы, и включает следующие основные блоки: ядро, память программ и память данных, периферийные устройства (рис. 1.1). 1 1 t 1 J рис. 1.1. обобщенная структурная схема микроконтроллера
12 Глава 1 ядро микроконтроллера реализует процесс управления, задаваемый программой. на базе микроконтроллерного ядра фирмами-производителями интегральных схем разрабатываются изделия, различные по номенклатуре модулей памяти и периферийных устройств, но совместимые между собой по системе команд и циклам обмена данными. множество совместимых по этому признаку мк носит название семейства микроконтроллеров. память программ предназначена для хранения управляющих программ. необходимые для процесса управления данные располагаются в памяти данных. периферийные устройства предназначены для обеспечения сопряжения мк с внешними объектами и аппаратной реализации ряда управляющих функций. микроконтроллеры, как и вычислительные машины других классов, реализуются на основе гарвардской или принстонской архитектур (рис. 1.2). в микроконтроллерах, выполненных на основе гарвардской архитектуры, программы и данные располагаются в логически независимых блоках памяти с различными методами доступа. в микроконтроллерах, выполненных на основе принстонской архитектуры, программы и данные могут располагаться в общем блоке памяти; для обращения используется единый метод доступа. к числу типовых, наиболее часто интегрируемых на кристалл мк периферийных устройств, относятся следующие блоки: ? параллельные цифровые порты ввода-вывода, осуществляющие обмен данными, представленными в виде логических сигналов; ? таймеры-счетчики, осуществляющие формирование временных интервалов и выполняющие подсчет логических событий; ? узлы аппаратной обработки событий с привязкой по времени; в) 6) рис. 1.2. гарвардская (о) и принстонская (6) архитектуры мк Основы организации микроконтроллеров 13 ? цифроаналоговые и аналого-цифровые преобразователи, осуществляющие вывод и ввод непрерывных сигналов; ? последовательные порты ввода-вывода, осуществляющие обмен данными в распределенных системах; ? блоки обслуживания прерывающих событий; ? средства повышения надежности функционирования. каждый периферийный узел мк обладает возможностью настройки посредством записи управляющих кодов в программно-доступные конфигурационные регистры узла, называемые регистрами специальных функций. настройка позволяет производить выбор режима работы устройства (например, требуемой разрядности таймера, направления передачи данных на разрядах параллельного порта и т. п.). состав размещаемых на мк периферийных блоков зависит от целевого назначения устройства и определяется производителем на основе типовых задач, реализуемых на микроконтроллерах данного семейства. 1.2. Ядро микроконтроллера в состав ядра мк входят процессор, тактовый генератор и контроллер шины (рис. 1.3). процессор непосредственно осуществляет процесс переработки информации, представленной в виде двоичных кодов, и управление этим процессом в соответствии с программой, представляющей собой последовательность команд. тактовый генератор осуществляет формирование последовательности опорных сигналов, синхронизирующих протекание процессов в узлах мк, на основе внешней последовательности опорных импульсов. Контроллер шины осуществляет формирование распространяемой по внутренней шине многофазной импульсной последовательности, тактирующей различные стадии выполнения команд в мк и необходимой для организации обмена данными с периферийными устройствами мк. команды располагаются по заданным адресам (номерам ячеек) в памяти команд и представляют собой управляющие коды, описывающие выполняемую операцию и задающие операнды (данные, над которыми выполняется операция). каждый мк обладает определенной системой команд, характеризуемой списком команд и их форматом. Список команд представляет собой набор операций, выполнение которых предусмотрено на процессоре данного мк. в списке команд любого мк можно выделить четыре группы операций: ? операции передачи данных (между ячейками памяти мк, а также другими программно-доступными элементами мк);
14 Глава 1 ? арифметические операции (сложение, вычитание, умножение, деление); ? логические операции ("И", "ИЛИ", инверсия, исключающее "ИЛИ", различные сдвиги); ? операции передачи управления (безусловный переход по заданному адресу, переход по условию равенства или неравенства операндов, переход на подпрограмму и возврат из нее и т. п.). Рис. 1.3. Структурная схема микроконтроллера Формат команды позволяет определить тип выполняемой на очередном шаге программы операции, входные и выходные операнды, а также адрес команды, подлежащей выполнению на следующем шаге программы. Основы организации микроконтроллеров 15 Тип выполняемой команды задается кодом операции (КОП). Для задания операндов применяются следующие методы указания их локализации — способы адресации операндов: ? неявная: операнд не указывается в связи с однозначностью доступа к нему (например, в связи с единственно возможным его размещением); ? непосредственная: входной операнд помещается в тело команды (например, с целью задания констант); ? прямая: в команде указывается адрес в памяти данных, по которому расположен операнд; ? косвенная: в команде указывается адрес ячейки в памяти данных, содержащей адрес ячейки в памяти данных, по которому расположен операнд (например, при организации доступа к последовательно расположенным данным при неоднократном повторении участка программы удобно изменять значение операнда команды, тем самым меняя адрес искомого данного); ? относительная: в команде указывается адрес ячейки в памяти данных, содержимое которой, будучи сложенное с некоторой величиной (например, задаваемой неявно), даст адрес ячейки в памяти данных, по которой расположен искомый операнд (например, при обращении к элементу таблицы данных удобно определять искомый операнд по смещению относительно начала таблицы). Адрес следующей исполняемой команды задается неявно как адрес памяти программ, следующий за адресом выполняемой в данный момент команды, что объясняется преобладанием в большинстве программ линейных участков последовательностей команд. Для его явного задания при организации циклов, подпрограмм, ветвлений по условиям и т. п. применяют команды, код операции (КОП) которых кодирует определенную операцию передачи управления. В состав систем команд большинства МК включены (по количеству адресуемых в одной команде операндов) одно-, двух-, трех- и безадресные команды. 11роцедура выполнения команд в МК сводится к следующему. 11о окончании действия импульса сброса проводится инициализация регистров ядра МК. В указатель команды заносится адрес начального пуска. I Io адресу, содержащемуся в указателе команды, из области памяти программ под воздействием управляющих сигналов, формируемых контроллером шины, в регистр команд загружается очередная команда исполняемой контроллером программы. Выполнение любой команды представляет собой последовательность элементарных действий {микроопераций): определение количества требуемых
16 Глава 1 для операции операндов, определение локализации необходимых операндов, их извлечение, формирование кода действия для исполнительного блока, ожидание окончания исполнения операции, определение локализации результатов, занесение результатов, определение адреса следующей команды и ряд других. Конкретный перечень микроопераций, реализуемый при выполнении очередной команды, определяется ее КОП. Для настройки схем процессора на требуемую микрооперацию используются последовательности управляющих сигналов. КОП считанной из памяти программ команды дешифрируется и поступает на микропрограммный автомат (МПА), вырабатывающий с каждым очередным тактом синхронизации, поступающим от контроллера шины, необходимый на данной стадии отработки команды набор управляющих сигналов. Выполнение в процессоре арифметических и логических операций, сдвигов, обнуления и т. п. обеспечивается арифметико-логическим устройством (АЛУ). Память констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при выполнении в АЛУ операций над битами, а также выдачу кодов констант. Для временного хранения данных, над которыми в АЛУ выполняется операция, предназначены регистры входных операндов, информация в которые заносится из области памяти данных с применением соответствующего указателя. По окончании выполнения операции в АЛУ ее результаты заносятся в регистры результатов, а также формируются признаки результатов операции (переполнение, сдвиг, знак и т. п.), заносимые в регистр слова состояния процессора и доступные для считывания и анализа программой (например, для организации перехода на иную ветвь программы в связи с наличием арифметического переполнения). Затем в общем случае в указатель данных последовательно заносятся адреса ячеек памяти данных, в которые необходимо поместить результаты команды (эти адреса извлекаются из полей адресации выходных операндов), и из регистров результата операнды заносятся в ячейки памяти данных, адресуемые указателем данных. (Следует отметить, что, как правило, в процессоре МК используется дополнительный указатель на память данных, снабженный механизмами автоувеличения при занесении операндов в память и автоуменьшения при извлечении операндов из памяти. Такой метод доступа к памяти называется стековым, а выделяемая в памяти данных область для этих манипуляций называется стеком. Стек используется и при организации подпрограмм, в частности, подпрограмм обработки прерываний.) После размещения выходных результатов происходит автоувеличе+ше указателя команд, либо, в случае выполнения ветвления в исполняемой программе, в него заносится содержимое заданного поля операнда в исполненной команде. В обоих случаях в указателе команд оказывается адрес ячейки памяти, Основы организации микроконтроллеров 17 содержащей очередную подлежащую выполнению команду, и описанный процесс повторяется. Например, выполнение гипотетической команды plus орх, opy, opz (opZ = = орХ + opY) вызовет следующие действия: загрузка адреса орХ в указатель данных, подача сигнала "чтение памяти данных", ожидание готовности памяти данных, загрузка с шины данных памяти данных в регистр № 1 входного операнда АЛУ, выполнение аналогичных действий для opY (с записью в регистр № 2), подача на АЛУ кода "сложить", ожидание готовности АЛУ, загрузка адреса opZ в указатель данных, подача данных из регистра № 1 выходного операнда АЛУ на шины данных памяти данных, подача сигнала "запись памяти данных", ожидание готовности памяти данных. 1.3. Память микроконтроллера На кристалл микроконтроллера интегрированы два блока памяти: память программ и память данных. В связи с ориентацией МК на функционирование в автономном режиме память программ должна сохранять содержимое в отсутствие напряжения питания (т. е. память должна являться энергонезависимой), а для упрощения внутренней архитектуры МК и возможности работы в широком диапазоне частот тактового генератора память данных должна обладать статической архитектурой (т. е. не требовать регенерации). Обобщенная структура модуля памяти показана на рис. 1.4. Модуль памяти состоит из матрицы запоминающих элементов, организованной в виде N m-разрядных строк, дешифратора адреса ячейки и буферного каскада. Разрядность шины адреса такого модуля памяти составляет n = log2N, а разрядность шины данных— ш. Информация о номере подлежащей выборке ячейки в виде кода адреса поступает на дешифратор, активизирующий одну из строк матрицы запоминающих элементов генерацией высокого логического уровня на одном из своих выходов. При этом (в зависимости от поступающих сигналов управления) логические уровни всех запоминающих элементов выбранной строки поступают через буферный усилительный каскад на шину данных (ситуация чтения состояния ячейки), либо передаются с шины данных через буферный усилительный каскад на запоминающие элементы выбранной строки (ситуация записи состояния ячейки). Логические состояния запоминающих элементов прочих строк не изменяются и не оказывают влияния на выходные логические уровни. Энергонезависимая память программ является постоянным запоминающим устройством (ПЗУ). Каждый запоминающий элемент ПЗУ находится в том логическом состоянии, в которое он был переведен при занесении информации в ПЗУ (программировании).
18 Глава 1 В зависимости от количества допустимых циклов записи управляющей программы в ПЗУ различаются однократно и многократно программируемые модули. В однократно программируемых ПЗУ каждый запоминающий элемент матрицы допускает только одну смену состояния. Запись программы в ПЗУ может производиться либо в условиях промышленного производства при изготовлении кристалла микроконтроллера ("по маске"), либо пользователем с помощью программатора. ПЗУ такого типа наиболее дешевы, т. к. каждый элемент матрицы предельно прост (рис. 1.5). При программировании ячейки на разряды шины данных прикладывается повышенное напряжение к тем линиям, которые должны быть переведены в состояние логической единицы. Так как в это же время на строку матрицы, задающую программируемую ячейку, поступает высокий уровень от дешифратора адреса, через плавкие перемычки протекает сильный ток, необратимо разрушающий их. Элементы, программируемые в состояние логического нуля, не подвергаются воздействию повышенных напряжения и тока, в связи с чем остаются в исходном состоянии. При чтении на строку матрицы, задающую считываемую ячейку, поступает высокий уровень от дешифратора адреса. Если при программировании переход столбца в данной ячейке был разрушен, то на столбце будет присутство- нать высокий логический уровень, формируемый при помощи подтягиваю-' Основы организации микроконтроллеров 19 щего резистора. Если при программировании переход столбца в данной ячейке был сохранен, то на столбце будет присутствовать низкий логический уровень, величина напряжения которого определяется соотношением сопротивлений подтягивающего резистора столбца и открытого перехода активного элемента. рис. 1.5. организация запоминающего элемента однократно программируемых пзу программ В многократно программируемых ПЗУ каждый запоминающий элемент матрицы допускает несколько смен состояний. В связи с этим усложнен как запоминающий элемент, представляющий собой транзистор с плавающим затвором (рис. 1.6), так и последовательность программирования, состоящая из нескольких этапов. Технология изготовления запоминающего элемента допускает принудительное введение {инжекцию) в околозатворную область транзистора при программировании дополнительного количества отрицательного заряда, препятствующего наведению канала в транзисторе при подаче на затвор напряжения высокого уровня. В этом случае запоминающий элемент матрицы постоянно хранит состояние логической единицы. В случае если инжекция заряда не проводилась, то при подаче на затвор напряжения высокого уровня открывается канал "сток-исток", и выходное напряжение в столбце снижается до нулевого логического уровня. - Для обеспечения возможности проведения повторной записи в ПЗУ необходим предварительный перевод всех запоминающих элементов матрицы в исходное ^запрограммированное) состояние, заключающийся в выведении введенного при предыдущем программировании избыточного заряда из око- 1ю затворного пространства транзистора (т. с. в стирании ячеек памяти). С'ти-
20 Глава 1 рание может производиться с помощью электрических импульсов или ультрафиолетового излучения (в последнем случае на поверхности микросхемы МК располагается окно для пропускания УФ-излучения). Число циклов программирования ПЗУ с УФ-стиранием составляет несколько сотен, с электрическим стиранием — несколько тысяч, что объясняется более щадящим режимом стирания во втором случае, дольше сохраняющем нормативные характеристики функционирования транзисторов запоминающих элементов. Рис. 1.6. Организация запоминающего элемента многократно программируемых ПЗУ программ (а — архитектура; б— незапрограммированный элемент: наведение канала возможно; | в — программирование элемента; г — запрограммированный элемент: наведение канала невозможно) Память данных МК является оперативным запоминающим устройством (ОЗУ) со статической организацией запоминающего элемента (рис. 1.7). Такая организация дает возможность хранить записанную информацию неограниченно долго без необходимости регенерации, что позволяет'МК функционировать в широком диапазоне частот от 0 Гц до FMax- В качестве элемента памяти применяют статический триггер с парафазным входом/выходом, коммутируемый посредством транзисторов VT1 и VT2 к Основы организации микроконтроллеров -г 21 линии столбца матрицы при активизации данной строки дешифратором адреса ячейки памяти. Рис. 1.7. Организация запоминающего элемента ОЗУ данных При записи в запоминающий элемент кода логической единицы на линии столбца матрицы присутствует высокий логический уровень, передаваемый через открытый транзистор VT2 на правое плечо триггера. Одновременно па левое плечо триггера через открытый транзистор VT1 поступает низкий логический уровень, полученный инвертированием значения логического уровня столбца матрицы. Конденсатор С1 заряжается практически до уровня логической единицы, конденсатор С2 разряжается практически до уровня логического нуля. В этом случае транзисторы VT4 и VT5 открыты, а транзисторы VT3 и VT6 — закрыты. Состояние запоминающего элемента будет сохраняться и после снятия напряжения высокого логического уровня со строки матрицы, активизирующего данную ячейку, т. к. является устойчивым состоянием триггера. При записи в запоминающий элемент кода логического нуля на столбце присутствует низкий логический уровень, передаваемый через открытый транзистор VT2 на правое плечо триггера. Одновременно на левое плечо триггера через открытый транзистор VT1 поступает высокий логический уровень, полученный инвертированием значения логического уровня столбца матрицы. Конденсатор С1 разряжается практически до уровня логического пуля, кон-
22 Глава 1 денсатор С2 заряжается практически до уровня логической единицы. В этом случае транзисторы VT3 и VT6 открыты, а транзисторы VT4 и VT5 — закрыты. Состояние запоминающего элемента будет сохраняться и после снятия напряжения высокого логического уровня со строки матрицы, активизирующего данную ячейку, поскольку, как и предыдущее, является устойчивым состоянием триггера. При чтении буферный каскад модуля памяти (см. рис. 1.4) настраивается на прием данных, и, после активизации необходимого запоминающего элемента выбором строки матрицы, напряжение, соответствующее логическому уровню хранимого в элементе бита данных, посредством транзистора VT2 будет передано на столбец матрицы памяти. Конфигурационные регистры периферийных устройств нередко располагают в адресном пространстве внутренней памяти, что позволяет организовать взаимодействие с ними через команды пересылок, т. е. упростить процедуру обмена. 1.4. Параллельные порты ввода-вывода Параллельные порты ввода-вывода предназначаются для обмена микроконтроллера и внешнего объекта данными, представленными в виде логических сигналов, передаваемых линий ввода-вывода микросхемы МК. В общем случае с каждым портом связаны регистр данных (для хранения выводимой из МК на объект информации или для хранения информации, введенной в МК с объекта), система управления (для задания режимов работы порта) и выходной каскад, решающий задачи усиления и сопряжения сигналов. Структура порта показана на рис. 1.8. Порты ввода-вывода реализованы во всех моделях МК. Регистр данных представляет собой двунаправленный N-разрядный регистр ввода-вывода с линиями управления записью й чтением, позволяющими заносить в регистр информацию с внутренней шины МК или выдавать на внутреннюю шину состояние регистра. Момент обмена информацией между процессором ядра МК и регистром порта через внутреннюю шину определяет контроллер шины ядра. В зависимости от типа команды обмена (пересылка из процессора в порт или из порта в процессор) формируются сигналы WR (Write) или RD (Read), после чего обмен стробируется сигналом управления CS (Chip Select). В общем случае, для возможности решения более сложных задач обмена в структуру порта ввода-вывода вводится система управления, представляющая собой комбинационную схему обнаружения и изменения состояний сиг- н.пюн, а также программно-доступный для записи и чтения регистр, сохра- Основы организации микроконтроллеров 23 няющий эти состояния. Таких задач две: это задача мультиплексирования линий ввода-вывода и задача поддержки расширенных протоколов обмена. Рассмотрим их более подробно. Рис. 1.8. Структура параллельного порта ввода-вывода 11омимо регистра данных, одни и те же контакты МК могут потребоваться некоторому периферийному устройству (например, таймеру) для обмена информацией с объектом (это так называемые альтернативные функции вводи* иывода). При этом необходимо определить, за каким устройством (портом или другим периферийным модулем) будет закреплен каждый конкретный контакт микросхемы МК. Такая настройка проводится записью в регистр системы управления специального кода, определяющего положение коммутатора сигналов (см. рис. I.8). В зависимости от положения контакта комму-
24 Гпава 1 татора, каждый внешний контакт микросхемы МК будет физически подсоединен либо к линиям ввода-вывода регистра порта, либо к линиям ввода- вывода иного периферийного устройства. Расширенные протоколы обмена требуются для организации надежной передачи данных между МК и объектом. В простейшем случае, при выполнении команды пересылки из процессора МК в регистр данных порта RG, после установки на внутренней шине информации, подлежащей записи, контроллер шины формирует сигналы WR и CS, после чего данные в виде совокупности двоичных сигналов будут занесены в регистр, выведены на контакты МК и восприняты объектом. Факт записи в порт, а следовательно, и изменения выходных данных не индицируется на внешних контактах, в связи с чем объекту неизвестен момент времени обновления информации. Так как вновь записываемые данные заменяют собой ранее присутствовавшие на контактах МК неодновременно по всем разрядам (в связи с разным временем протекания переходных процессов, обусловленным различной токовой нагрузкой контактов, гонками в комбинационных схемах и др.), может возникнуть ситуация чтения объектом ложной информации: частично измененных данных. В связи с тем, что факт прочтения объектом передаваемой ему информации недоступен для МК, возможна ситуация, при которой частота обновления информации МК превышает частоту восприятия этой информации объектом, что приводит к потерям в посылках. При чтении информации из объекта возможны ситуации недостоверного чтения и пропуска посылок, аналогичные описанным выше. Для устранения подобных коллизий в структуру порта вводятся две внешних линии, по которым передаются служебные сигналы обмена. Изменение двоичного состояния первой линии кодирует момент завершения обновления новых данных источником (это позволяет исключить чтение ложной информации приемником в момент переключения выводимых данных). Изменение двоичного состояния второй линии кодирует факт прочтения данных приемником (это позволяет сбалансировать частоту ввода информации приемником и частоту вывода информации источником). Обобщенный протокол обмена показан на рис. 1.9. Коммутация (с необходимой выдержкой времени) сигналов WR, RD и CS между внутренней шиной МК и внешними контактами в этом случае также осуществляется системой управления. При передаче прикладной программой данных из МК на объект, сигнал WR, зафиксировавший данные в регистре ввода-вывода, после выдержки паузы, необходимой для завершения типовых по длительности переходных процессов на контактах МК (указывается в паспортных данных на микросхему МК; там же указывается значение максимальной емкости нагрузки, превышение Основы организации микроконтроллеров 25 которой может затянуть переходные процессы и нарушить обмен по рассматриваемому протоколу), коммутируется на линию "Данные записаны", после чего объект воспринимает корректные данные и формирует сигнал подтверждения чтения "Данные прочитаны". Сигнал от объекта "Данные прочитаны" запоминается в регистре системы управления, и может быть проанализирован прикладной программой для определения возможности передачи следующей порции N-разрядных данных на объект. Передача из МК на объект Передача из объекта на МК Рис. 1.9. Временные диаграммы сигналов при обмене по расширенному протоколу При передаче данных из объекта на МК сигнал "Данные записаны", формируемый объектом, коммутируется системой управления на вход CS регистра данных; системой управления формируется и сигнал WR. Кроме того, сигнал "Данные записаны" запоминается в регистре системы управления. Прикладная программа перед чтением регистра данных порта опрашивает регистр системы управления на предмет наличия новых данных от объекта, и после обнаружения этого факта осуществляет чтение регистра данных, в ходе которого контроллер шины формирует сигналы RD и CS. Система управления коммутирует сигнал RD на линию "Данные прочитаны", сообщая объекту о готовности МК к приему следующей порции данных. Расширенные протоколы обмена применяются, в частности, в МК Scenix. Обобщенная структура разряда выходного каскада показана на рис. 1.10. 11арафазный информационный сигнал управляет выходными транзисторами, обеспечивающими необходимую мощность сигнала. Для работы с выходами объекта типа "открытый коллектор" или "открытый эмиттер" по сигналам программно настроенной системы управления коммутируются подтягивающие резисторы Rпoдт."l" или Яподт/'О". Направление обмена (ввод или вывод) по линии также задается программно путем настройки системы управления портом.
26 Глава 1 1.5. Таймеры-счетчики Таймеры-счетчики предназначаются для формирования временных интервалов и подсчета событий, что позволяет (при использовании соответствующего программного обеспечения) реализовывать на их основе любые функции времени, в том числе управление в реальном времени (т. е. во временном масштабе объекта). Обобщенная структура таймера-счетчика показана на рис. 1.11. Таймер-счетчик базируется на синхронном двоичном реверсивном счетчике с возможностью параллельной загрузки и чтения информации. Так как разрядность счетчика МК, как правило, превышает разрядность процессора, используется адресный обмен информацией между ядром МК и частью регистра данных счетчика. В указанной структуре при одновременной активизации сигналов RD и CS на внутреннюю шину МК коммутируется выходная шина таймера-счетчика, в противном случае внутренняя шина МК коммутируется к входам параллельной загрузки. Собственно загрузка данных в таймер-счетчик Произойдет при одновременной активизации сигналов WR и CS. Система управления позволяет определить источник задания направления счета (программно-доступный бит регистра системы управления или внеш- Основы организации микроконтроллеров 27 ний сигнал), а также источник тактирования (опорная частота ядра или внешние импульсы) и коэффициент деления тактовых импульсов. Полный диапазон счета— от 0 до 2(N+1)(m+,)- 1. Для задания временных интервалов, отличных от номинального (являющегося максимальным), используется предварительная программная загрузка счетчика (величиной N = Т/Ткванта при счете на убывание или Nmax - N при счете на возрастание). Рис. 1.11. структура таймера-счетчика При достижении кода 0 (при счете на убывание) или Nmax (при счете на возрастание) генерируется сигнал переполнения OV (Overflow), доступный как для программных средств (при чтении регистра состояния системы управления таймером-счетчиком), так и для внешней аппаратуры, в частности для объекта.
28 Глава 1 Следует отметить, что решение задачи выдержки временных интервалов возможно применением чисто программных средств: зная время t выполнения некоторой инструкции, несложно организовать ее N-кратное выполнение в цикле, тем самым обеспечив задержку длительностью Т = Nt, однако в этом случае невозможно выполнение иных программных действий (например, сбора информации, обмена данными с оператором и пр.); кроме того, значение кванта t может оказаться неудовлетворительно большим. Таймеры-счетчики реализованы практически во всех моделях МК. 1.6. Блоки обработки событий Для расширения возможностей реализации функций времени, достигаемых с применением таймеров-счетчиков, в состав периферийных устройств некоторых моделей МК введены блоки аппаратной обработки временных событий, связанных с таймерами-счетчиками. Название таких блоков в МК различных фирм может отличаться (часто применяемые названия: ЕРА (Event Processors Array — массив процессоров событий), HSIO (High Speed Input/Output unit — блок быстрого ввода-вывода), РСА (Programmable Counters Array — массив программируемых счетчиков) и др.). Основными задачами таких блоков являются: ? определение момента наступления события заданного вида (захват события). Принципиальной трудностью программной реализации захвата является невозможность точного чтения показаний регистра данных таймера без его останова (т. к. разрядность таймера превышает разрядность внутренней шины, и процедура последовательного чтения фрагментов регистра неизбежно будет проведена с искажениями); ? генерация события заданного вида в заданный момент времени (привязка события ко времени). Принципиальной трудностью программной реализации привязки является существование временной задержки между моментом обнаружения заданного момента времени (например, по переполнению регистра данных таймера) и моментом исполнения команды генерации заданного логического события; ? поддержка многоканальное™ указанных видов на общей временной базе. Принципиальной трудностью программной реализации многоканальное™ является сложность и неэффективность наблюдения за показаниями таймера со стороны нескольких программных модулей. • Особенно существенно отмеченные трудности проявляются при малых интервалах времени между событиями, программная обработка которых вносит значительные погрешности в измеряемые и генерируемые интервалы. Основы организации микроконтроллеров 29 Структура канала блока обработки событий показана на рис. 1.12. В качестве общей временной базы блока обработки выбран один из таймеров-счетчиков МК, шина QB которого, отражающая показания времени, поступает на все каналы модуля. Источник/приемник обрабатываемых/генерируемых событий является альтернативной функцией1 порта ввода-вывода МК. рис. 1.12. структура канала блока обработки событий Путем записи в регистр системы управления для каждого канала (как правимо, независимо от остальных) выбирается режим его функционирования. В случае реализации захвата путем записи в регистр системы управления определяется тип обнаруживаемого входного события — фронт, срез или перепад сигнала, что приводи!' к коммутации входного сигнала на один из входов
30 Глава 1 синхронизации триггера детектора событий. Кроме того, в режиме захвата система управления модулем скоммутирует на разряды входной шины регистра канала одноименные разряды выходной шины таймера. При обнаружении события заданного типа система управления сформирует сигналы CS и WR регистра данных канала, что приведет к аппаратной фиксации показаний таймера в регистре данных канала. Таким образом, в регистр данных канала аппаратно (т. е. с минимальными временными задержками) будут занесены и доступны прикладной программе показания таймера базы в момент появления заданного сигнала на входе микросхемы МК. В случае реализации привязки путем записи в регистр системы управления определяется тип выходного события, что приводит к соответствующей настройке управляемого одновибратора. Кроме того, в режиме захвата система управления модулем скоммутирует на разряды входной шины регистра канала одноименные разряды внутренней шины МК. После записи со стороны прикладной программы значений в регистр данных канала начнется ожидание требуемого момента времени. При совпадении Показаний таймера базы и содержимого регистра данных канала компаратор сформирует сигнал, сигнализирующий системе управления о необходимости перезапуска одновибратора. Таким образом, при достижении заданного момента времени аппаратно (т. е. с минимальными временными задержками) на выходе микросхемы МК будет сгенерирован сигнал заданного вида. Следует отметить, что средствами блока обработки событий могут быть реализованы и дополнительные режимы: например, перезагрузка регистра данных таймера базы по достижении им заданного кода, чтение показаний регистра данных таймера базы без останова таймера (т. е. захват не внешнего, а программного события), а также генерация широпто-импулъсно-модули- рованных (ШИМ) сигналов. Рассмотрим более подробно последний режим. ШИМ-сигнал представляет собой периодический двоичный сигнал с фиксированным периодом Тис управляемой длительностью импульса. Канал, настроенный на данный режим, при совпадении показаний регистра данных таймера базы и регистра данных канала (хранящего значение константы ШИМ), формирует начало импульса, а по достижении счетчиком максимального значения завершает импульс и начинает новый период ШИМ (рис. 1.13). Так как инерционность объекта существенно превышает инерционность системы управления объектом, генератор высокочастотного ШИМ воспринимается объектом как генератор, выдающий мощность, пропорциональную длительности импульсов ШИМ. Ьлоки обработки событий реализованы в МК Infineon, Intel, Motorola и др. Основы организации микроконтроллеров 31 рис. 1.13. генерация шим-сигналов 1.7. Цифро-аналоговые преобразователи 11ифроаналоговые преобразователи (ЦАП) служат для перевода кодового представления выводимой из цифровой вычислительной системы информации в эквивалентный этому коду аналоговый сигнал (выходное напряжение). 11ринцип цифроаналогового преобразования иллюстрируется выражением: ^вых ^'(^оп.макс Uqilmhh )-(aN_1-2N-,+aN_2.2N-2+... + a0.20). *N-1 ** 1 "N-2 3;iecbaNIiaN_2...a0 — двоичный код, поступающий на ЦАП, Uon.макс и "ом. мин.— опорные напряжения ЦАП (максимальное и минимальное соответственно), к— коэффициент пропорциональности, иВых— выходное напряжение ЦАП. Так, при k = 1 и входном коде ЦАП, равном половине максимального, иВых = (Uon. макс - U0n. мин)/2. При построении ЦАП могут быть использованы различные методы. В МК подавляющее большинство ЦАП строится на основе резистивной сетки "R-2R". Структура ЦАП такого типа показана на рис. 1.14. Конфигурируя блок ЦАП посредством записи настроечных команд в регистр системы управления, пользователь может выбрать источник опорных напряжений внешний (являющийся альтернативной функцией линии некоторою
Глава 1 рис. 1.14. Структура ЦАП Основы организации микроконтроллеров 33 порта) или внутренний. Источник внутреннего опорного напряжения допускает конфигурирование посредством выбора значения стабилизированного напряжения: от U, до UK для Uohmakc, от Um до Us для и0п.мин- При этом любое из значений U0n. макс превышает любое из значений Uohmmh- Существует возможность управлять коммутацией сформированного значения 11Вых на выходную линию порта. На выходе ЦАП имеется усилитель-повторитель, решающий вопросы согласования с объектом управления. Выходные разряды регистра данных ЦАП управляют ключами, осуществляющими выбор слагаемого для данного разряда: Uon. макс при единичном значении разряда, Uon. мин — при нулевом. Рассмотрим работу ЦАП на следующих примерах: Пусть код ам-1 aN^2 ¦•• ао равен 100...0. В этом случае старшим разрядом будет скоммутирована величина Uon. макс. а остальными — величина Uon. мин- Упрощая конфигурацию резистивной матрицы для разрядов N-2...0, имеем: 2R//(R + 2R//(R...R + 2R//2R)...), что эквивалентно величине R. Таким образом, иВых= (Uon. макс -Uon. Mhh)*(R + R)/(2R + R + R), т. е. UBbix = (Uon. макс - - Uon. мин)/2. Пусть код aN_i aN^2 ... а0 равен 0100...0. В этом случае разрядом N-2 будет скоммутирована величина Uon. макс, а остальными — Uon. мин- Упрощая конфигурацию резистивной матрицы для разрядов N-l, N-3...0, имеем: (2R + R)//(R + 2R//(R + 2R//(R...R + 2R//2R)...)), что эквивалентно величине 6R/5. Таким образом, UBb,x = ((Uon.макс-U0n.mhH)*(6R/5)/(2R+6R/5))*2R/3R, т. е. иВых= (U0n. макс _ Uon. мин)/4. Аналогичным образом иллюстрируется результат преобразования любого кода "1 из N"; по принципу суперпозиции показывается работа ЦАП с любым двоичным кодом на входе. Отметим, что иВЫх рассчитывается относительно Uon. мин- Влоки ЦАП используются в контроллерах фирм Fujitsu, Cygnal и некоторых других. 1.8. Аналоговые компараторы Аналоговые компараторы (АК) служат для сравнения значений двух входных напряжений: U] и U2. Результатом сравнения является битовый результат у = (Ui > U2), истинный при Ui > U2 и ложный в противном случае. I Гринцип работы АК основан на использовании дифференциального усилителя без обратной связи в ключевом режиме. Структура АК показана на рис. 1.I5. i зпк
34 Глава 1 рис. 1.15. структура аналогового компаратора Данное периферийное устройство использует внешние линии МК для ввода/вывода данных, как правило, задействуй для этого разряды некоторого порта в режиме альтернативных функций. Результат сравнения доступен в виде флага признака в регистре данных системы управления и, кроме того, может быть скоммутирован на выходную линию МК для непосредственной передачи на объект результата сравнения сигналов. Помимо собственно задачи сравнения двух аналоговых величин, АК можно использовать в качестве простейших АЦП с ограниченными возможностями, если в качестве одного из UBX использовать генератор с известной характеристикой (например, генератор линейно нарастающего напряжения, реализованный на внешнем счетчике, тактированием которого управляет МК, или RC-цепь с известной постоянной времени, заряжаемой/разряжаемой до уровня лог. "1"). Блоки АК используются в МК фирм Atmel, Scenix и др. 1.9. Аналого-цифровые преобразователи Аналого-цифровые преобразователи (АЦП) служат для ввода информации, представленной аналоговым сигналом, в цифровую вычислительную систему. Основы организации микроконтроллеров 35 Принцип аналого-цифрового преобразования заключается в разбиении полного диапазона значений аналогового сигнала на N поддиапазонов и сопоставлении входному сигналу кода уровня, покрывающего собой этот сигнал (рис. 1.16). 2 1 о l_ 1 1 1 1 > моменты опроса аналогового входа рис. 1.16. принцип аналого-цифрового образования I [ри построении АЦП могут быть использованы различные методы. В МК подавляющее большинство АЦП строится на основе метода последовательного приближения с применением ЦАП и взвешивающего регистра сдвигов (рис. 1.17). Функционирование такого АЦП осуществляется следующим образом: запуск предваряется инициализацией (путем подачи импульса "Reset"), по окончании которой во всех Т-триггерах и взвешивающем сдвиговом регистре находятся нули. Сразу по окончании инициализации подается сигнал "Пуск", заносящий уровень логической "1" в триггер старшего разряда. С приходом импульса опорной последовательности FTAKt в старший разряд сдвигового регистра также поступит уровень логической "1", после чего сигнал "Пуск" снимается. На ЦАП поступает цифровой код Nmax/2, приводящий к установке Uon = (Uon.макс-Uonмин)/2. Полученный уровень сравнивается аналоговым компаратором с входной измеряемой величиной UH3M; в случае Uoii>Uh3m на выходе компаратора устанавливается уровень логической "I".
36 Глава 1 в этом случае вентиль "и" будет открыт, что приведет к сбросу триггера старшего разряда (т. е. отказу от включения в выходной код старшего разряда, равного "1", определяющего наличие в иизм слагаемого (Uohmakc- - u0n. мин)/2). далее будет установлен следующий триггер и произведена проверка наличия слагаемого (uon. макс - uon. мин)/4. если иизм > (uon. макс - -- и0п.мин)/4, то на выходе аналогового компаратора устанавливается уровень логического "о", соответствующий вентиль "и" после сдвига в регистре не откроется, и указанный разряд сохранится в выходном коде. процесс повторяется до момента перехода бегущей единицы в младший разряд сдвигового регистра, после чего генерируется сигнал "конец преобразования", сдвиги во взвешивающем регистре прекращаются, а на выходах "код уровня" будет находиться цифровой двоичный код an...ao, соответствующий величине иизм и определяющий эталонные весовые напряжения согласно формулы иизм = ха]*и0пь где i = n...0. время преобразования ацп постоянно и определяется числом разрядов и частотой сдвигов; погрешность определяется погрешностью цап и чувствительностью компаратора. рис. 1.17. структура блока лцп последовательного приближения Основы организации микроконтроллеров 37 структура блока ацп мк показана на рис. 1.18. настройки системы управления блоком ацп позволяют осуществить выбор канала аналогового входа (являющегося альтернативной функцией входа некоторого порта), задать диапазон измеряемых величин и определить момент начала преобразования. после активизации флага готовности прикладная программа может осуществить чтение регистра данных ацп. вес единицы младшего разряда определяется по формуле: 8 = (uon. макс — uon. мину(2 + ), в связи с чем для повышения точности (при неизменной разрядности) следует уменьшить предполагаемый диапазон измеряемых сигналов. для этого в прикладной программе предусматривают два цикла измерений: в полном диапазоне входных сигналов для определения величин опорных напряжений, а затем — в локализованном — для получения точного результата. блоки ацп присутствуют в мк фирм infineon, intel, motorola, cygnal и др. рис. 1.18. структура блока ацп мк
38 Глава 1 1.10. Средства поддержки межпроцессорного обмена Средства поддержки межпроцессорного обмена применяются для построения распределенных систем. В связи с тем, что практически всегда для построения таких систем используется последовательная передача данных, средства поддержки межпроцессорного обмена часто именуются последовательными портами ввода-вывода. К причинам выбора последовательного метода передачи данных относятся следующие: необходимость обеспечения надежной передачи данных при существенной территориальной протяженности канала передачи, необходимость снижения затрат на кабельное хозяйство с учетом относительно невысокой интенсивности обмена, а также необходимость обеспечения передачи данных по различным протоколам на основе единой аппаратной реализации. К основным причинам использования распределенных систем относятся: ? территориальная распределенность объекта управления (в этом случае эффективным является решение построения управляющей вычислительной сети из нескольких МК, решающих задачи локального управления и обменивающихся информацией о характере этого управления для сохранения единства целей); ? иерархичность системы управления (в случае использования человеко- машинных систем управления необходимо осуществлять передачу информации об установках оператора от операторской станции к МК (или к сети МК), а в обратном направлении — о показаниях датчиков, параметрах управления в МК и др.); ? потребность в отладке системы на базе МК с применением инструментальных средств (в основном, инструментальных ЭВМ) в ходе реализации целевой функции МК (в этом случае необходимо реализовать возможность доступа к ресурсам МК, не блокируя штатные средства ввода- вывода МК, занятые для реализации процесса взаимодействия с объектом). Номенклатура средств межпроцессорного обмена достаточно широка. К универсальным средствам относятся интерфейсы UART (Universal Asynchronous Receiver and Transmitter— универсальный асинхронный приемопередатчик), SSI (Synchronous Serial Interface— синхронный последовательный интерфейс) и его разновидность SPI (Serial Peripherial Interface — последовательный периферийный интерфейс). К средствам поддержки обмена в управляющих вычислительных сетях относятся I2C (Inter-Integrated Circuit— межсхемный интерфейс) и CAN (Contollcrs Area Network— сеть контроллеров). К средствам поддержки отладки относятся интерфейсы ТАР (Test Access Основы организации микроконтроллеров 39 Port ¦— порт для тестового доступа) и ОпСЕ (On Crystal Emulator — внутрикристальный эмулятор). Структура блока межпроцессорного обмена показана на рис. 1.19. Рис. 1.19. Структура блока межпроцессорного обмена Блок содержит сдвиговые регистры передатчика и приемника, позволяющие преобразовывать данные из последовательного представления в параллельное. Оба регистра имеют входы сброса R (Reset) и разрешения работы Е (Enable), а регистр передатчика— вход разрешения параллельной загрузки. Входы синхронизации С (Clock) сдвиговых регистров являются независимы-
40 Глава 1 ми и могут принимать такты сдвига как от внешнего синхросигнала, так и от внутреннего источника, использующего счетчик/делитель частоты Fosc с программируемым коэффициентом деления (в ряде случаев в качестве такого счетчика может использоваться таймер общего назначения). Синхросигналы в общем случае поступают на внешнее устройство. И передатчик, и приемник связаны с буфером, доступным для записи и чтения программой МК. При записи в буфер его содержимое дополнительно копируется в передатчик, после чего побитно выводится через выходную линию. Окончание накопления (флаг ovf) регистрируется в системе управления и может быть обнаружено программно. При попытке чтения буфера в него копируется содержимое приемника, после чего становится доступным на внутренней шине. (Следует отметить, что для достоверного чтения посылки прежде необходимо проконтролировать наличие флага ovf от приемника.) Начало посылки обнаруживается триггером. Рассмотрим более подробно конкретные реализации блока. В интерфейсе UART используются две линии: вход приемника RxD и выход передатчика TxD, что позволяет организовать полнодуплексную (одновременную двустороннюю) асинхронную связь. Обмен между абонентами ведется на частоте, задаваемой только внутренним источником и устанавливаемой заранее. Для повышения надежности передачи посылка включает старт- бит, 7 или 8 информационных разрядов, бит контрольной суммы и стоп-бит. Старт-бит (переход из "1" в "О") активизирует бит "Е" приемника, после чего он фиксирует посылку. Реализуемая топология в многоабонентных системах (управляющих сетях) — "звезда". В SSI используются линии передаваемых и принимаемых данных, каждая стробируемая своим синхросигналом. Как разновидность SSI, наиболее часто применяется SPI с тремя линиями: выход передатчика MOSI, вход приемника MISO и общая линия синхронизации SCK, что позволяет организовать полнодуплексную связь с частотой, задаваемой ведущим абонентом. Ведущим является устройство, синхросигнал от которого подается на SCK всех остальных. Каждое ведомое устройство выбирается с помощью отдельной дополнительной линии. Топология — "звезда". В 12С используются две линии: SDA (линия данных) и SCL (линия синхросигналов), что позволяет организовать полудуплексную (разновременную двустороннюю) синхронную связь. Данные передаются от передатчика к приемнику по SDA, при этом ведущее устройство управляет линией SCL. Смена ролей устройств (передатчика и приемника; ведущего и ведомого) осуществляется программно на основе анализа информации, передаваемой в посылке. Топология — "шина". В интерфейсе CAN также используются две линии: CANH и CANL, что позволяет организован, полудуплексную асинхронную связь. Все устройства Основы организации микроконтроллеров 41 CAN-шины заранее пронумерованы. Ведущим в сеансе обмена считается устройство, чей номер является наибольшим (процедура CSMACD-AMP — Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority — множественный доступ с контролем несущей и обнаружением столкновений по приоритету сообщений). Применяемая топология сети — "шина". В интерфейсе ТАР используется пять линий: TMS, TRST, ТСК, TDI и TDO, три последние из которых относятся к модулю последовательного обмена и являются соответственно линией синхросигналов, линией ввода данных и линией вывода данных. Через эти выводы происходит синхронизированная передача отладочных команд в МК и получение из МК данных о ходе его функционирования и его состоянии (первые две -— это входной сигнал активизации модуля и входной сигнал его инициализации). В интерфейсе ОпСЕ используется четыре линии: DR, DSCK, DSI и DSO, аналогичные по назначению линиям TMS, ТСК, TDI и TDO в ТАР. Оба интерфейса реализуют синхронную полудуплексную связь и используются только для отладочных целей; управляющие сети на их основе не реализуются. 1.11. Блоки обслуживания прерывающих событий Функционирование любой вычислительной системы (в том числе на базе МК), как правило, предполагает обслуживание некоторого ряда событий. Место и причина их возникновения могут быть достаточно разнообразными, однако эти события обладают одним общим свойством — момент их возникновения заранее неизвестен для программы. В связи с этим, в вычислительной системе необходимо предусмотреть средства обнаружения этих событий с тем, чтобы по факту их обнаружения предпринять некоторые действия по их обслуживанию. При обслуживании события следует отложить ("прервать") выполнявшуюся программу и выполнить обслуживающую программу, поэтому такие события называются прерывающими событиями. I (аиболее простым способом обнаружения прерывающих событий является периодическая проверка факта их возникновения программным способом, что имеет два существенных недостатка: П снижение производительности вычислительной системы (некоторая часть программы будет отведена под перебор признаков возникновения событий); П наличие задержки между моментом возникновения события и моментом его обнаружения (в ряде случаев, например в системах реального времени, принципиально недопустимая).
42 Глава 1 Исключение указанных недостатков возможно лишь в случае аппаратного обнаружения заданных прерывающих событий, что реализуется посредством системы обслуживания прерывающих событий (кратко— "система прерываний"). Помимо обнаружения прерывающих событий, на систему прерываний возложен арбитраж событий для определения наиболее приоритетного из них. Прерывающие события имеют и программную, и аппаратную природу: ? к программным причинам возникновения прерывающих событий относятся: попытка выполнения несуществующих команд (т. е. таких, чей КОП отсутствует в системе команд данного МК) или выполнение команд с недопустимыми данными (например, в случае деления на ноль); ? к аппаратным причинам возникновения прерывающих событий относятся: готовность периферийных модулей (например, окончание преобразования в АЦП, переполнение таймера, прием посылки по последовательному порту и т. п.) и активизация сигналов, поступающих на МК извне от объекта управления (например, двоичный сигнал от датчика срабатывания исполнительного механизма). Количество прерывающих событий ограничено (так, количество внешних прерывающих событий не может превышать числа линий ввода-вывода МК), поэтому все они могут быть индивидуально обнаружены аппаратными средствами. Напротив, действия по их обслуживанию определяются целевой функцией МК и могут быть достаточно разнообразными, в связи с чем прерывающие события, как правило, обслуживаются программными средствами. Исключение составляют ситуации, связанные с пересылками данных (например, помещение очередного результата аналого-цифрового преобразования в заданную ячейку массива данных), выполняемые по заранее заданной схеме действий аппаратно в режиме прямого доступа к памяти (ПДП) (модули обслуживания такого типа называются PTS— Peripherial Transaction Servers — периферийные серверы транзакций). Суть обработки прерывающего события сводится к следующим действиям: ? обнаружение факта прерывающего события; ? установление необходимости реакции на него (т. к. не все из потенциально возможных прерывающих событий необходимы для реализации данной целевой функции МК, например, может не потребоваться обработка запроса прерывания от АЦП, работа с которым осуществляется путем выдержки паузы в Тпреобр); ? выполнение арбитража событий (в случае возникновения нового прерывающею события в момент обслуживания предыдущего прерывающего события, в зависимости от степени важности них событий следует либо Основы организации микроконтроллеров 43 продолжить начатое обслуживание, либо прервать его, переключившись на обслуживание нового); ? выполнение переключения программного контекста (сохранение состояния прерываемой программы и переключение на программу обслуживания, адрес которой заранее однозначно сопоставлен типу прерывающего события (так называемый "вектор прерывания" или "точка входа в обработчик")); ? выполнение восстановления программного контекста (восстановление со- . стояния прерванной программы и обратное переключение на нее). Обобщенная схема системы прерываний показана на рис. 1.20. Обработка прерывающих событий от любого источника может быть индивидуально запрещена ("замаскирована") записью лог. "0" в регистры масок (за исключением особо важных, так называемых "немаскируемых событий", для которых в регистре масок всегда занесена лог. "1"). Кроме того, каждому источнику может быть сопоставлен один из К уровней приоритетов записью соответствующего кода в регистры приоритетов, управляющих коммутаторами входов приоритетного шифратора. (Так как количество прерывающих событий может превышать разрядность МК, то для индивидуального маскирования и кодирования приоритетов может требоваться несколько регистров; на рисунке показано по одному регистру масок и приоритетов.) Каждое прерывающее событие запоминается в фиксаторе события своего типа. В случае наличия нескольких зафиксированных событий благодаря использованию приоритетного шифратора на вход памяти таблицы векторов будет подан код самого старшего прерывающего события, а на выходах таблицы будет находиться адрес точки входа в обработчик прерывающего события данного типа. Перед занесением данного адреса в указатель команд процессора ядра МК необходимо выполнить микропрограмму сохранения контекста прерываемой программы. Для этого в модуле обработки прерывающих событий имеются регистр-указатель адреса ПДП (адресует ячейку области памяти данных), регистр данных ПДП (хранит содержимое адресуемой ячейки) и ОЗУ команд 11ДП (хранит последовательность действий сохранения контекста). С их помощью аппаратно считывается содержимое регистров контекста и сохраняется в специальной области памяти данных МК. Для того чтобы по окончании обработки прерывающего события вернуться к прерванному контексту, как минимум, необходимо сохранить указатель команд (остальные ресурсы могут быть сохранены программно в обработчике события). Как правило, для удобства сохранения и восстановления контекста используется стек. По окончании обработки события (завершающегося, как правило, специальной командой, при выполнении которой процессор ядра посылает в систему управления обслуживания прерывающих событий специальный сигнал) заяв-
44 Глава 1 ка, хранившаяся в фиксаторе и вызвавшая обработку события, снимается (сигналом на входе "R" фиксатора). рис. 1.20. структура блока обслуживания прерывающих событий В случаях однозначной и несложной обработки события (типа пересылки данных из ячейки в ячейку), такие действия могут быть выполнены полностью аппаратно, в режиме ИДИ. При подготовке этих действий и инициа- Основы организации микроконтроллеров 45 лизации ПДП-обслуживания прерывающих событий в ОЗУ команд ПДП основной программой записывается управляющий блок, описывающий будущую процедуру аппаратных пересылок. Приблизительный формат управляющего блока таков: "начальный адрес источника данных", "начальный адрес приемника данных", "количество повторений пересылок", "признак необходимости изменения адреса источника", "направление изменения адреса источника", "величина изменения адреса источника", "признак необходимости изменения адреса приемника", "направление изменения адреса приемника", "величина изменения адреса приемника". Используя эти поля, можно организовать одиночную и групповую пересылку данных по разным направлениям адресов в памяти и с различным шагом этих адресов. Блоки обслуживания прерывающих событий есть в подавляющем большинстве МК. Блоки PTS встречаются в некоторых моделях МК фирмы Intel. 1.12. Средства повышения надежности функционирования МК Микроконтроллерные системы (МКС) зачастую эксплуатируются в автономном режиме (без участия оператора), поэтому в составе МК желательно наличие средств, обнаруживающих ситуации, угрожающие нормальной работе МК. К этим средствам относятся сторожевые таймеры и мониторы питания (рис. 1.21). Основными причинами сбоев в работе МК-систем являются помехи, вызванные нестабильностями в цепях питания: провалами, выбросами, высокочастотными помехами. Наиболее сильно влияющим на достоверность вычислительного процесса в МК из критичных к таким помехам элементов относится указатель команд: любое искажение его содержимого приведет к выполнению кодов, не соответствующих исходной программе, и, следовательно, катастрофическим последствиям для МК-системы в целом. Характерно, что прикладная программа для МК является бесконечно повторяемым циклом, реализующим целевую функцию. Временные характеристики выполнения этого цикла (в частности, среднее и максимальное время одной итерации) легко определяемы. Если аппаратными средствами контролировать время выполнения цикла и сопоставлять его с расчетным, то факт их существенного несовпадения будет достоверно свидетельствовать о сбоях в программе. Обнаружив расхождение во временных параметрах, модуль аппаратного контроля генерирует сигнал запроса прерывания или формирует сигнал сброса МК, перезапуская программу. Сопоставление временных параметров функционирования программы осуществляет устройство WDI
46 Глава 1 (WatchDog Timer— сторожевой таймер). При нормальном функционировании программа периодически очищает таймер сигналом "Сброс WDT". Для надежности работы системы сигнал "Сброс WDT" в ряде МК должен формироваться в виде заданной последовательности обращений к системе управления WDT. рис. 1.21. структура сторожевого таймера и монитора питания Монитор питания (Power Monitor) осуществляет контроль за величиной питающего напряжения и формирует сигнал "Сброс МК" в случае, если его значение стало ниже предельно допустимого порогового значения. При подаче питания сигнал "Сброс МК" с помощью таймера POR (Power-On Reset) удерживается некоторое время после установления штатного питания для надежного запуска МК. К дополнительным средствам повышения надежности относятся средства перевода МК в режимы пониженного энергопотребления, что обеспечивает продление срока автономной работы при питании от источников аккумуляторного типа. В этих режимах аппаратно отключается периферия МК, а в ряде случаев — и процессорное ядро, что приводит к значительному сокращению энергопотребления. Эти режимы эффективно применять в системах с холостым ожиданием редких событий. ГЛАВА 2 Микроконтроллер Infineon 80С515 2.1. Общее описание и цоколевка В данной главе рассматривается представитель семейства микроконтроллеров MCS-51 — микроконтроллер 80С515 фирмы Infineon. Данное семейство микроконтроллеров выбрано как объект для рассмотрения в связи с многолетней значительной популярностью среди разработчиков встраиваемых приложений, что объясняется продуманностью архитектурных решений, широкой номенклатурой клонов семейства от всемирно известных производителей (Siemens, Intel, Dallas Semiconductor, Atmel и др.), а также эффективной ценовой политикой изготовителей и поставщиков. Основными характеристиками микроконтроллера 80С515 являются: ? 8-разрядная гарвардская архитектура; ? 111 базовых команд; ? длительность машинного цикла — 1 мке при частоте опорных импульсов 12 МГц; ? 8 Кбайт внутрикристальной памяти программ с масочным программированием; ? 256 байт внутренней памяти данных; ? возможность обращения к внешней памяти программ объемом до 64 Кбайт и к внешней памяти данных объемом до 64 Кбайт; ? шесть 8-разрядных портов ввода-вывода; П 8-разрядный порт ввода, совмещенный с 8-канальным АЦП с программируемыми диапазонами измерения;
48 Гпава 2 ? три 16-разрядных таймера-счетчика; ? блок быстрого ввода-вывода; ? полнодуплексный последовательный порт с управляемой и фиксированной скоростями передачи; ? 12-векторный 4-уровневый внутрикристальный контроллер прерываний; ? 16-разрядный сторожевой таймер; ? режимы холостого хода и пониженного энергопотребления. На рис. 2.1 изображена цоколевка корпуса микросхемы микроконтроллера. Совокупность контактов можно разделить на следующие группы: линии портов ввода-вывода, линии шины управления, а также линии для подключения источника опорных тактовых импульсов и цепей питания. рис. 2.1. цоколевка корпуса микроконтроллера 80с515 В табл. 2.1 рассмотрено назначение контактов микросхемы микроконтроллера 80C5I5. Микроконтроллер Infineon 80С515 49 Таблица 2.1. Назначение контактов микросхемы микроконтроллера 80С515 обозначения контакты направление назначение р0.0—р0.7 52—59 вх/вых 8-разрядный двунаправленный параллельный порт № 0 с альтернативной функцией вывода младшего байта адреса/ввода-вывода байта данных при обменах с внешней памятью р1.7—р1.0 29—36 вх/вых 8-разрядный двунаправленный параллельный порт № 1 с набором альтернативных функций р2.0—р2.7 41—48 вх/вых 8-разрядный двунаправленный параллельный порт № 2 с альтернативной функцией вывода старшего байта адреса при обменах с внешней памятью рз.о—р3.7 21—28 вх/вых 8-разрядный двунаправленный параллельный порт № 3 с набором альтернативных функций р4.0—р4.7 1—3, 5—9 вх/вых 8-разрядный двунаправленный параллельный порт №4 р5.7—р5.0 60—67 вх/вых 8-разрядный двунаправленный параллельный порт № 5 р6.7—р6.0 13—20 вх 8-разрядный входной параллельный порт № 6 с альтернативной функцией входов 8-канального ацп reset 10 вх сигнал "сброс". низкий уровень сигнала осуществляет перезапуск микроконтроллера еа 51 вх отключение внутренней памяти. низкий уровень переводит контроллер в режим работы с внешней памятью программ ale 50 вых строб адреса внешней памяти. стробирует выдачу адресной информации при работе с внешней памятью psen 49 вых разрешение внешней памяти программ. стробирует чтение внешней памяти программ ре 4 вх разрешение перехода в режим пониженного энергопотребления. низкий уровень разрешает функции программного перехода в режим пониженного энергопотребления xtal1 40 — контакт № 1 источника опорных тактовых импульсов xtal2 за — контакт №2 источника опорных тактовых импульсов vcc 68, 37 — напряжение питания (5 в) — основное (контакт 68) и дополнительное (контакт 37) vss 38 — цифровая "земля" (0 в) varef 11 — опорное напряжение для ацп vagnd 12 - аналоговая "земля"
54 Гпава 2 2.3. Система команд мк 80с515 оперирует с операндами четырех типов: битами, тетрадами, байтами и 16-битными словами, при этом большинство операндов команд являются байтами. в мк 80с515 используются следующие типы адресации: неявная, регистровая, прямая, непосредственная, косвенная регистровая и разновидность косвенной— базово-индексная адресация. указанные способы адресации обеспечивают обращение к операндам-источникам. при обращении к операндам- приемникам непосредственная и базово-индексная адресации не используются. неявная адресация используется для адресации аккумулятора, регистра в в командах умножения и деления, флага с в командах битовых операций, косвенной адресации посредством указателя данных dptr и указателя стека sp. регистровая адресация применяется для адресации регистров r0—r7 текущего банка регистров. так как эти регистры принадлежат пространству младших 128 байт внутреннего озу, то к ним также можно обратиться, используя прямую и косвенную адресацию через регистр ri (i = 0, 1) текущего банка регистров. прямая адресация используется для задания адресов младших 128 байт внутренней памяти данных и адресов регистров блока sfr. косвенная адресация используется для обращения к операндам внутренней памяти данных через регистр ri (i = 0, 1) и в командах пересылок из внешней/во внешнюю память данных через регистр ri или dptr. для адресации бит используется только прямая адресация, т. е. адресация, при которой в команде содержится 8-разрядный адрес бита. при обращении к внешней памяти программ для считывания констант используется базово-индексная адресация, обеспечивающая формирование адреса выбираемого байта путем сложения 8-битного беззнакового содержимого аккумулятора с содержимым 16-битного базового регистра (dptr или pc). в мк 80с515 применяется 13 типов команд (рис. 2.3). первый байт любой команды содержит код операции. синтаксис команд языка ассемблера состоит из мнемонического обозначения функции команды, за которым могут размещаться операнды, указывающие методы адресации и типы данных. машинные коды команд мк представляются одним, двумя или тремя байтами. команды выполняются за один или два машинных цикла (исключение составляют команды умножения и деления, длительность исполнения которых составляет 4 машинных цикла). Микроконтроллер Infineon 80С515 55 для обозначения типов данных и способов адресации в мнемониках команд применяются следующие обозначения: п rn — регистры r0—r7 текущего банка регистров; п bit— прямоадресуемый бит внутренней памяти данных или регистра sfr; п imata — 8-битная константа, входящая в состав команды; п |kiatal6— 16-битпая константа, входящая в состав команды;
56 Гпава 2 ? direct— 8-битный адрес 128 младших байт внутренней памяти данных или регистра SFR; ? @ri — обозначение косвенной адресации через регистр Ri (i = 0, 1); ? @dptr — обозначение косвенной адресации через регистр DPTR; ? addrl6 — 16-битный адрес безусловной передачи управления; ? addrll— 11-битный адрес безусловной передачи управления в пределах 2-килобайтного блока памяти программ; ? rel — 8-битное значение смещения со знаком, которое суммируется с содержимым PC для формирования адреса перехода в командах условной передачи управления и командах короткого безусловного перехода; ? /bit— в команде используется инвертированное значение бита- источника. Состав системы команд МК 80С515 приведен в приложении 2. 2.4. Параллельные порты ввода-вывода В состав периферийных устройств МК входят семь 8-разрядных портов: шесть портов ввода-вывода Р0, PI, Р2, РЗ, Р4, Р5 и один порт ввода Р6. Порты ввода-вывода МК 80С515 не содержат регистров управления. Для реализации альтернативных функций, а также для настройки линии порта на ввод информации необходимо записать "1" в соответствующий разряд регистра защелки. Альтернативными функциями обладают порты Р0, PI, Р2 и РЗ (табл. 2.4, 2.5). Таблица 2.4. Альтернативные функции порта Р1 Номер бита Обозначение Назначение 7 Т2 Внешний счетный вход таймера Т2 6 CLKOUT Выходной сигнал тактовой частоты Fosc/12 5 Т2ЕХ Сигнал внешней принудительной перезагрузки таймера Т2 4 INT2 Сигнал внешнего запроса прерывания № 2 3 INT6/CC3 Сигнал внешнего запроса прерывания № 6/ Канал захвата/сравнения № 3 2 INT5/CC2 Сигнал внешнего запроса прерывания № 5/ Канал захвата/сравнения № 2 1 INT4/CC1 Сигнал внешнего запроса прерывания № 4/ Канал захвата/сравнения № 1 Микроконтроллер Infineon 80С515 Таблица 2.4 (окончание) Номер бита Обозначение Назначение 0 INT3/CC0 Сигнал внешнего запроса прерывания № 3/ Канал захвата/сравнения № 0 При работе с внешней памятью (на входе ЕА шины управления МК низкий уровень) линии портов Р0 и Р2 выполняют функции внешней шины адреса и двунаправленной шины данных. С помощью порта Р0 осуществляется мультиплексирование младшего байта адреса и данных на внешней шине МК. При внешних обменах на выводы порта Р0 последовательно во времени поступают младший байт адреса А7—АО, строб фиксации адреса ALE, а затем данные D7—DO, стробируемые сигналами PSEN при обращении к памяти программ для чтения, RD — при обращении к памяти данных для чтения данных, WR — при обращении к памяти данных для записи. Через порт Р2 выводится старший байт адреса А15—А8. Таблица 2.5. Альтернативные функции порта РЗ Номер бита Обозначение Назначение 7 RD Сигнал чтения внешней памяти данных 6 WR Сигнал записи внешней памяти данных 5 тт- Счетный вход таймера 1 4 то Счетный вход таймера 0 3 INT1 Вход внешнего прерывания 1/вход разрешения счета таймера 1 2 INTO Вход внешнего прерывания О/вход разрешения счета таймера 0 1 TxD Выход асинхронного последовательного порта/выход синхроимпульсов синхронного последовательного порта 0 RxD Вход асинхронного последовательного порта/вход/выход данных синхронного последовательного порта 1 2.5. Таймеры-счетчики ТО и Т1 II состав периферийных устройств МК 80С515 входят три 16-битных тайме- i'i счетчика. Рассмотрим таймеры-счетчики общего назначения I/СО и 1/(1. Мри работе в качестве таймера содержимое регистра данных Т/С ипкремеп- шруется в каждом машинном цикле, т.е. через каждые 12 периодов резона-
58 Глава тора. При работе в качестве счетчика содержимое регистра данных Т/С ин- крементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого источником импульсов на вход ТО (Т1). Для управления режимами работы таймера-счетчика и для организации взаимодействия таймеров с системой прерывания используются два регистра специальных функций — TMOD (табл. 2.6) и TCON (табл. 2.7), а также регистрь данных ТН1, ТЫ (старший и младший байты счетчика 1) и THO, TL0 (старший и младший байты счетчика 0). Модуль использует альтернативные функции ТО, Tl, INTO, INT1 порта РЗ. Таблица 2.7. Формат регистра TCON Микроконтроллер Infineon 80С515 59 Таблица 2.7 (окончание) номер бита обозначение назначение 5 tf0 флаг переполнения таймера 0. устанавливается аппаратно. сбрасывается аппаратно при обслуживании прерывания 4 tr0 бит управления таймера 0. устанавливается/сбрасывается программно для пуска/останова таймера/счетчика 0 3 ie1 флаг запроса прерывания 1. устанавливается аппаратно. сбрасывается аппаратно при обслуживании прерывания 2 it1 бит управления типом прерывания 1. устанавливается/сбрасывается программно для спецификации запроса int1 (срез/низкий уровень) 1 ie0 флаг запроса прерывания 0. устанавливается аппаратно. сбрасывается аппаратно при обслуживании прерывания 0 it0 бит управления типом прерывания 0. устанавливается/сбрасывается программно для спецификации запроса into (срез/низкий уровень) 2.6. Таймер 2 и блок быстрого ввода-вывода И МК 80С515 встроен четырехканальный блок быстрого ввода-вывода, использующий в своей работе дополнительный таймер 2 (Т2). В качестве вхо- дон/пыходов блока используются линии порта Р1, настроенные на режим ра- гииы с альтернативными функциями: Р1.0 — канал 0; Р1.1 — канал 1; Р1.2 — канал 2; Р1.3— канал 3; Р1.5— вход принудительной перезагрузки тайме- mi Г2; Р1.7— счетный вход/разрешение работы таймера Т2. Ресурсы микро- Контроллера, используемые блоком быстрого ввода-вывода, перечислены в Ябл. 2.8. Таблица 2.8. Регистры SFR, используемые блоком быстрого ввода-вывода ишистр si к назначение регистра sfr адрес 11 l?/tl2 старший/младший байт регистра данных таймера t2 0cdh/0cch !?con регистр управления таймером t2 0c8h ccen i i ii1/ccl1 регистр выбора режима работы каналов 0c1h старший/младший байт регистра меток канала 1 0c3h/0c2h bch2/ccl2 старший/младший байт регистра меток канала 2 0c5h/0c4h b6h3/ccl3 старший/младший байт регистра меток канала 3 0c7h/0c6h
60 Гпава 2 Таблица 2.8 (окончание) Регистр SFR Назначение регистра SFR Адрес CRCH/CRCL Старший/младший байт регистра перезагрузки и меток канала 0 OCBh/OCAh ' Формат регистра управления таймером-счетчиком Т2 приведен в табл. 2.9. Таблица 2.9. Формат T2CON Номер бита Обозначение Назначение 7 T2PS Предделитель на 2 источника счетных импульсов: 0 — счетные импульсы поступают с частотой Fosc/12; 1 —с частотой Fosc/24 6 I3FR Вид сигнала запроса прерывания INT3 и захвата событий каналом 0: 0 — по срезу: 1 — по фронту 5 I2FR Вид сигнала запроса прерывания INT2: 0 — по срезу; 1 — по фронту 4 T2R1 Режим перезагрузки: 00 и 01 — перезагрузка запрещена; 10 — перезагрузка по переполнению; 11 — перезагрузка по срезу сигнала на Р1.5 3 T2R0 2 T2CM Режим сравнения 1 T2I1 Режим работы: 00 — останов; 01 — неуправляемый таймер; 10 — счетчик импульсов на Р1.7 (инкремент по срезу сигнала); 11 — управляемый таймер (счет разрешен при Р1.7 = 1) 0 T2I0 Переполнение таймера 2 во всех режимах фиксируется во флаге TF2. В режиме быстрого ввода в каналах 1—3 захват события происходит по фронту сигнала на соответствующем разряде порта 1, в канале 0— по срезу или фронту в зависимости от значения бита I3FR регистра T2CON. Содержимое регистра данных таймера Т2, соответствующее моменту захвата, загружается в регистр меток канала ССх в цикле, следующем за идентификацией перехода. В режиме "01" при поступлении внешнего события осуществляется запись содержимого регистра данных таймера Т2 в соответствующий регистр меток ССх. В режиме "11" захват инициируется при выполнении записи в регистр CCLx, что обеспечивает чтение содержимого регистра данных таймера Т2 без остановки счета (на лету), как показано в табл. 2.10. Требуемый режим сравнения задается битом Т2СМ регистра T2CON. В режиме 0 (формирование ШИМ-сигналов) при совпадении значений регистра данных таймера Т2 и регистра меток канала на соответствующем выводе Микроконтроллер Infineon 80С515 61 порта устанавливается единичное значение выходного ШИМ-сигнала. Импульс переполнения таймера Т2 переключает ШЙМ-сигнал в значение логического нуля. Таблица 2.10. Формат CCEN Номер бита Обозначение Назначение 7 Режим канала ССЗ Для каждого канала: 00 — Захват/сравнение запрещены 01 — Захват внешнего события (быстрый ввод) 10 —- Сравнение (быстрый вывод или ШИМ) 11 — Захват содержимого таймера T2 6 5 Режим канала СС2 4 3 Режим канала СС1 2 1 Режим канала CC0 0 В режиме 1 (привязка генерации кода) при совпадении значений регистра данных таймера Т2 и регистра меток канала на соответствующем выводе порта устанавливается значение, предварительно записанное в него программой. Особенность этого режима— отложенное до наступления заданного нремени формирование логического уровня на выходе порта. 2.7. Аналого-цифровой преобразователь АЦП содержит три регистра специальных функций: ADCON— регистр управления, ADDAT— регистр данных и DAPR— регистр опорных напряжений. Регистр управления АЦП ADCON (адрес 0D8h) служит для управления входным мультиплексором, установки работы АЦП и фиксации бита готовности (табл. 2.11). Таблица 2.11. Формат ADCON Номер бита Обозначение Назначение 7 BD Управление режимом последовательного порта: 0 — настройки определяются SCON; 1 — частота обмена 4800 бит/с (SMOD=0) или 9600 бит/с (SMOD=1)
62 Гпава 2 Таблица 2,11 (окончание) Номер бита Обозначение Назначение СО CLK Подключение частоты Focs/12 к выводу Р1.6 5 — Зарезервирован 4 BSY Флаг занятости: 0 — АЦП свободен; 1 — выполняется преобразование 3 ADM Режим преобразования: 0 — одиночный; 1—непрерывный 2 МХ2 Двоичный код выбранного канала 1 МХ1 0 МХО Регистр данных АЦП ADDAT (адрес 0D9h) служит для хранения байта данных результата аналого-цифрового преобразования. Регистр специальных функций DAPR (адрес ODAh) предназначен для программирования внутренних опорных напряжений АЦП— минимального VAGND и максимального VAREF. Четыре младших разряда задают значение VAGND, четыре старших— значение VAREF. Шаг изменения составляет 0,3125 В, при этом разность VAREF — VAGND должна составлять не менее 1 В. Преобразование начинается при записи в регистр DAPR. Готовность данных можно определить по флагу BSY или по флагу запроса прерывания от АЦП. 2.8. Последовательный порт Посредством универсального синхронно-асинхронного приемопередатчика (УСАПП) осуществляется прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена. Для управления режимами работы УСАПП используются регистр режимов SCON (табл. 2.12), бит SMOD (PCON.7), бит BD (ADCON.7) а также регистр буфера приемопередатчика SBUF. В режиме 0 ("синхронный 8-битный приемопередатчик") 8-битная посылка передается и принимается через внешний вывод входа приемника (RXD). Через внешний вывод выхода передатчика (TXD) выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора. Микроконтроллер Infineon 80С515 63 Таблица 2.12. Формат регистра SCON Номер бита Обозначение Назначение 7 SM0 Биты управления режимом, устанавливаются программно. 00 — режим 0; 01 — режим 1; 10 — режим 2; 11 — режим 3 6 SM1 5 SM2 Бит управления режимом. Устанавливается программно для запрета приема сообщения, в котором девятый бит равен 0 4 REN Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных СО ТВ8 Передаваемый бит 8. Устанавливается/сбрасывается программно для задания значения девятого передаваемого бита в режиме 9-битного приемопередатчика см RB8 Принятый бит 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принятого бита в режиме 9-битного приемопередатчика 1 TI Флаг прерывания передатчика. Устанавливается аппаратно по окончании передачи. Сбрасывается программно после обслуживания прерывания 0 RI Флаг прерывания приемника. Устанавливается аппаратно по окончании приема. Сбрасывается программно после обслуживания прерывания Н режиме 1 ("асинхронный 8-битный приемопередатчик с изменяемой таймером скоростью передачи") 10-битная посылка (старт-бит ("0"), 8 бит данных и i топ-бит ("1")) передается через TXD, принимается через RXD. Частота псре- 2smod цачи равна ^ ¦ FovTl, где FovTl — частота переполнений таймера Т1. It режиме 2 ("асинхронный 9-битный приемопередатчик с фиксированной скоростью передачи") 11-битная посылка (старт-бит ("0"), 8 бит данных, про- |раммируемый девятый бит и стоп-бит ("1")) передается через TXD, припи- 2smod Мается через RXD. Частота передачи равна Fosc . 64 И режиме 3 ("асинхронный 9-битный приемопередатчик с изменяемой таймером скоростью передачи") 11-битная посылка (старт-бит ("0"), 8 бит данных, программируемый девятый бит и стоп-бит ("1")) передается через TXD, при* osmod НИМается через RXD. Частота передачи равна ^ ¦ FovTl , где FovTl частота переполнений таймера II.
64 Гпава 2 Примерные константы перезагрузки таймера Т1 при использовании его для задания некоторых частот передачи в 8-битном автоперезагружаемом режиме указаны в табл. 2.13. Таблица 2.13. Некоторые значения констант перезагрузки таймера Т1 Значение константы перезагрузки Скорость передачи данных OFDh 9,6 кГц 0F9h 4,8 кГц 0F3h 2,4 кГц 0E6h 1,2 кГц Отметим, что для организации обмена со скоростью, задаваемой с помощью таймера Т1, необходимо обнулить бит BD регистра ADCON. Передача инициируется любой командой, в которой буфер SBUF указан как приемник. Прием в режиме 0 осуществляется при условии, что RI = 0 и REN = 1. В остальных режимах прием начинается с приходом старт-бита, если REN = 1. Устройство использует альтернативные функции RxD и TxD порта РЗ. 2.9. Система прерываний Система прерываний контроллера 80С515 имеет двенадцать источников прерываний и четыре уровня приоритетов. Для управления системой прерываний используются следующие регистры SFR: регистры масок IE0 и IE1, регистры приоритетов IP0 и IP 1, регистры настроек сигналов запроса прерываний IRCON, T2CON (частично) и TCON (частично). При обработке запроса прерывания контроллер прерываний осуществляет переключение на обработчик путем перехода на точку входа (адрес), жестко сопоставленную источнику прерываний. В табл. 2.14 перечислены точки входа в обработчики прерываний. Таблица 2.14. Точки входа в обработчики прерываний Источник Адрес входа Наименование прерывания i IE0 0003Н Внешнее прерывание 0 TF0 ооовн Прерывание от таймера 0 Микроконтроллер Infineon 80С515 65 Таблица 2.14 (окончание) Источник Адрес входа Наименование прерывания IE1 001 зн Внешнее прерывание 1 TF1 001ВН Прерывание от таймера 1 RI+TI 0023Н Прерывание от последовательного порта TF2+EXF2 002ВН Прерывание от таймера 2 IADC 0043Н Прерывание от АЦП IEX2 004ВН Внешнее прерывание 2 IEX3 0053Н Внешнее прерывание 3 IEX4 005ВН Внешнее прерывание 4 IEX5 0063Н Внешнее прерывание 5 IEX6 006ВН Внешнее прерывание 6 Ike флаги запросов прерываний, кроме IE0 и IE1, могут быть установлены/сброшены программным способом и таким образом выполнять функции программных прерываний. Нее источники прерываний могут быть индивидуально разрешены/запрещены установкой/сбросом соответствующего источнику бита из регистров IEN0 и IEN1 (либо полностью запрещены сбросом бита ЕА); формат регистров приведен в табл. 2.15 и 2.16. Таблица 2.15. Формат регистра 1Е0 (0A8h) Номер бита Обозначение Назначение 7 ЕА Бит разрешения работы контроллера прерываний 6 WDT Управление сторожевым таймером (см. разд. 2.10) 5 ЕТ2 Бит разрешения прерывания по переполнению таймера T2 4 ES Бит разрешения прерывания по окончанию обмена через последовательный порт 3 ЕТ1 Бит разрешения прерывания по переполнению таймера T1 2 ЕХ1 Бит разрешения прерывания по внешнему сигналу INT1 1 ET0 Бит разрешения прерывания по переполнению таймера ТО 0 ЕХО Бит разрешения прерывания по внешнему сигналу INTO inn i so i
66 Гпава 2 Таблица 2.16. Формат регистра IE1 (0B8h) Номер бита Обозначение Назначение 7 EXEN2 Бит разрешения прерывания по перезагрузке таймера внешним сигналом СО SWDT Управление сторожевым таймером (см. разд. 2.10) 5 ЕХ6 Бит разрешения прерывания по внешнему сигналу INT6 4 ЕХ5 Бит разрешения прерывания по внешнему сигналу INT5 3 ЕХ4 Бит разрешения прерывания по внешнему сигналу INT4 2 ЕХЗ Бит разрешения прерывания по внешнему сигналу INT3 1 ЕХ2 Бит разрешения прерывания по внешнему сигналу INT2 0 EADC Бит разрешения прерывания по завершению преобразования в АЦП Для присвоения источнику прерываний определенного приоритета используются регистры IP0 и IP1. Приоритеты назначаются одновременно паре источников прерываний двумя битами: IPO.x и IP 1.x (табл. 2.17). Код приоритета с меньшим номером соответствует более низкому уровню приоритета. Таблица 2.17. Кодирование приоритетов источников запросов прерываний Биты Пара источников прерываний IP1.0 IP0.0 IE0/IADC IP1.1 IP0.1 TF0/IEX2 IP1.2 IP0.2 IE1/IEX3 IP1.3 IP0.3 TF1/IEX4 IP1.4IP0.4 RI+TI/EX5 IP1.5IP0.5 TF2+EXF2/IEX6 Внешние прерывания INT2 (INT3) могут быть активизированы фронтом/срезом в зависимости от значения бита I2FR (I3FR) в регистре T2CON. Прерывания устанавливают флаги IEX2 (IEX3) в регистре IRCON, которые сбрасываются автоматически при вызове программы обслуживания. Внешние прерывания INT4, INT5 и INT6 активизируются фронтом. Они устанавливают флаги IEX4, IEX5 и IEX6 в регистре IRCON (табл. 2.18), которые сбрасываются автоматически. Переполнение таймера Т2 активизирует флаг TF2. Сбрасывается программно. Микроконтроллер Infineon 80С515 67 Таблица 2.18. Формат регистра запросов прерываний IRCON(OCOH) Номер бита Обозначение Назначение 7 EXF2 Флаг запроса прерывания по перезагрузке таймера внешним сигналом 6 TF2 Флаг запроса прерывания по перезагрузке таймера Т2 5 IEX6 Флаг запроса прерывания по внешнему сигналу INT6 4 IEX5 Флаг запроса прерывания по внешнему сигналу INT5 3 IEX4 Флаг запроса прерывания по внешнему сигналу INT4 2 IEX3 Флаг запроса прерывания по внешнему сигналу INT3 1 IEX2 Флаг запроса прерывания по внешнему сигналу INT2 0 IADC Флаг запроса прерывания по завершению преобразования в АЦП Прерывание от Р1.5 (внешнее прерывание/прерывание перезагрузки таймера Т2) активизирует флаг EXF2. Сбрасывается программно. Внешние прерывания INTO и INT1 могут активизироваться срезом/низким уровнем в зависимости от значения битов IT0 и 1Т1 в регистре управления ишмерами ТО и Tl TCON. Эти прерывания устанавливают флаги IE0 и IE1 в ICON. Переполнение таймеров ТО и Т1 активизирует флаги запросов прерывания ПО и TF1. Флаги сбрасываются автоматически при вызове обработчика. 11рсрывания от последовательного порта могут генерироваться приемником (флаг окончания приема— RI) или передатчиком (флаг окончания передачи — TI). Обработчик прерывания должен опросить эти флаги для определения источника прерывания, а затем сбросить установленный флаг. 2.10. Сторожевой таймер и особые режимы работы МК 80С515 I Юрожевой таймер МК управляется посредством следующих битов: П бита запуска/перезапуска SWDT (IEN1.6); П бита статуса WDTS (IP0.6); П бита перезапуска WDT (IEN0.6). После запуска таймера установкой бита SWDT автоматически устанавливается бит статуса, и таймер осуществляет выдержку интервала времени в
68 Гпава 2 65532 мкс. Если за это время не было перезапуска таймера, он сгенерирует сигнал внутреннего сброса для инициализации МК. Прикладная программа, анализируя бит WDTS, может определить причину сброса МК. Для программного перезапуска таймера должны быть последовательно выполнены две команды: "установка бита WDT" и "установка бита SWDT", которые будут сброшены автоматически. Различают три особых режима работы 80С515: режим сброса, режим холостого хода и режим пониженного энергопотребления. Режим сброса предназначен для инициализации МК и активизируется подачей низкого логического уровня на вход "Reset" МК. При сбросе обнуляются следующие регистры SFR: А, В, PSW, PC, DPTR, SCON, TMOD, TCON, T2CON, TLO, THO, TL1, TH1, TL2, TH2, CCL3, CCH3, CCL2, CCH2, CCLl, CCH1, CRCL, CRCH, CCEN, DAPR, ADD AT, IENO, IEN1, IRCON, Watchdog. Обнуляются используемые биты следующих регистров SFR: ADCON (00X00000B), PCON (000X0000B), IPO (XOOOOOOOB), IP1 XX000000B. В регистры портов P0...P5 заносятся коды FFh. Состояние буфера SBUF неопределенное. В указатель стека SP заносится код 07. Состояние прочих ячеек памяти не изменяется (таким образом, после перезапуска программа может продолжить работу с неизмененными значениями своих переменных). Режимы холостого хода и пониженного энергопотребления предназначены для уменьшения потребляемой мощности. Для их программной активации необходимо наличие низкого логического уровня на входе РЕ. Управление режимами проводится с использованием регистра SFR— PCON (87h), формат которого представлен в табл. 2.19. Таблица 2.19. Формат регистра управления потребляемой мощностью PCON Номер бита Обозначение Назначение 7 SMOD Режим удвоенной скорости передачи последовательного порта (к управлению мощностью не имеет отношения) 6 PDS Переход в режим пониженного энергопотребления 5 IDLS Переход в режим холостого хода 4 — Не используется 3 GF1 Флаг общего назначения № 1 (к управлению мощностью не имеет отношения) 2 GF0 Флаг общего назначения № 0 (к управлению мощностью не имеет отношения) 1 PDE Разрешение перехода в режим пониженного энергопотребления 0 IDLE Разрешение перехода в режим холостого хода Микроконтроллер Infineon 80С515 69 Переход в режим холостого хода осуществляется установкой битов IDLE, а затем IDLS в двух последовательно выполняемых командах (для снижения вероятности случайного перехода в режим). При этом останавливается выполнение программы, но продолжает функционировать контроллер прерываний, активизирующий возобновление штатного функционирования МК при нозникновении любого разрешенного прерывания (кроме того, возможен перезапуск системы по сигналу "Сброс"). Ток потребления составляет около 15 мА (в штатном режиме 35 мА). 11ереход в режим пониженного энергопотребления осуществляется установкой битов PDE, а затем PDS в двух последовательно выполняемых командах. Возобновление функционирования МК возможно лишь путем перезапуска системы по сигналу "Сброс". Режим предназначен для сохранения содержимого внутренней памяти в критичных к мощности источника питания приложениях. Ток потребления составляет около 50 мкА.
ГЛАВА 3 Проектирование микроконтроллерных систем 3.1. Общие положения Проектирование — комплекс мероприятий, обеспечивающих поиск технических решений, удовлетворяющих заданным требованиям, их оптимизацию и реализацию в виде комплекта конструкторских документов и опытного образца (образцов), подвергаемого циклу испытаний на соответствие требованиям технического задания. Процесс разработки любого изделия состоит из трех основных этапов: ? научно-исследовательской работы (НИР); ? опытно-конструкторской работы (ОКР); ? производства. Все эти этапы входят в жизненный цикл изделия (рис. 3.1). )тап НИР предназначен для определения принципиальной возможности и целесообразности разработки системы; по окончании этапа либо осуществляется постановка технического задания (ТЗ) на ОКР, либо дается мотивиро- ванное обоснование ее невозможности или нецелесообразности. Основными критериями оценки являются: величина ожидаемой прибыли, степень риска производителя, длительность жизненного цикла продукции, доступность необходимых трудовых и материальных ресурсов, возможность производства по конкурентоспособным ценам и др. 11роцесс выполнения НИР и ее основные стадии показаны на рис. 3.2. ТЗ описывает основное назначение, технические характеристики, показатели качества и технико-экономические требования, предъявляемые к системе. 11осле завершения НИР при условии положительных результатов анализа предложения на разработку проводятся опытно-конструкторские работы
исследование потребностей и генерация идей новые потребности описание проекта эксплуатация изделий научно- исследовательская работа готовые изделия производство и сбыт изделий техническое задание опытно- конструкторская работа конструкторская документация, опытные образцы рис. 3.1. жизненный цикл изделия (ОКР). Основная задача ОКР — создание комплекта конструкторской документации для серийного производства изделия. Процесс выполнения ОКР и ее основные стадии показаны на рис. 3.3. Обеспечение производства включает в себя три составляющие: ? конструкторское обеспечение (адаптация конструкторской документации ОКР к условиям конкретного серийного производства предприятия- изготовителя. Производится в соответствии с правилами "Единой системы конструкторской документации" (ЕСКД)); ? технологическое обеспечение (обеспечение технологической готовности предприятия к производству; разработка технологических маршрутов и процессов; сопровождение изготовления. Производится в соответствии с правилами "Единой системы технологической подготовки производства" (ЕСТПП)); / 1роектрование микроконтроллерных систем 73 описание проекта, идеи сбор и изучение научно-технической информации, формулирование возможных направлений решения поставленной задачи и их сравнительная оценка теоретическая экспериментальная аналитическая заключительная тз на окр обоснованный выбор направления решения задачи, разработка рабочих гипотез и теоретические исследования, построение моделей объекта исследований подготовка экспериментальных образцов и испытательного оборудования, экспериментальные исследования, обработка данных сопоставление результатов эксперимента с теоретическими исследованиями, корректировка теоретических моделей объекта, проведение технико- экономических исследований, определение ожидаемых показателей нового изделия, оценка экономической эффективности разработка рекомендаций по дальнейшим исследованиям и тз на проведение окр рис. 3.2. стадии нир П организационное обеспечение (расчеты хода производства, загрузки оборудования, движения материальных потоков; обеспечение кадрами, оборудованием, материалами, полуфабрикатами, финансовыми средствами; проектирование участков и цехов, планировка расположения оборудования). Вопросы сбыта продукции находятся в компетенции отделов рекламы и сбыта предприятия, изучаются в разделе "менеджмент" экономических дисциплин и в настоящем пособии не рассматриваются. ,
74 Гпава 3 ТЗ техническое предложение анализ предметной области и научно-технической информации, определение дополнительных требований к изделию, его техническим характеристикам и показателям качества, предварительные расчеты эскизное и техническое проектирование выбор технических решений, разработка структурных, функциональных и принципиальных схем, уточнение параметров, проведение конструктивной компоновки изделия, испытание макетов разработка документации разработка рабочей документации, изготовление и испытание опытного образца, коррекция документации по результатам испытаний документация для производства Рис. 3.3. Стадии ОКР 3.2. Специфика проектирования встраиваемых приложений Обобщенная встраиваемая система управления на базе микроконтроллера, структура которой показана на рис. 3.4, включает в себя: ? объект управления, содержащий исполнительные устройства, собственно объект или процесс, и систему датчиков, предоставляющих информацию об объекте управления; ? микроконтроллерную систему управления, реализующую процесс управления объектом, заключающийся в сообщении объекту воздействий в соответствии с алгоритмом решаемой задачи и информацией, поступающей с датчиков контролируемых величин и с пульта управления системой; ? блок сопряжения с объектом управления, заключающий в себе унифицированный набор элементов, реализующих функции согласования сигналов (как управляющих, так и информационных) стандартов микроконтроллер- ной системы и объекта управления; Проектирование микроконтроллерных систем 75 Микроконтроллерная система управления Пульт оператора Блок сопряжения с объектом Объект управления иу у иу Объект (процесс) Датчики Рис. 3.4. Структура системы управления на базе микроконтроллера Анализ ТЗ и предметной области, проведение моделирования ¦ Разработка структурной и функционально функций между аппаратным и программным аппаратного обеспечения и ТЗ на разработку L_ ¦ й схем системы в целом; распреде обеспечением; постановка ТЗ на разрг программного обеспечения. пение ботку > j '. 1 Проектирование аппаратного обеспечения: - разработка структурной схемы; - выбор элементной базы; - разработка принципиальных схем; - расчет параметров элементов; - изготовление печатных плат и макетов. Проектирование программного обеспечения: - разработка моделей программ; - разработка функциональной схемы; - разработка схем программ; - выбор языка программирования; - программирование. Отладка аппаратного обес t 1 печения 3 Отладка п i 1——— рограммного обеспечения > 1 : 1 ¦ '— Комплексирование системы и совместная отладка аппаратного и программного обеспечения Передача встраиваемой системы в эксплуатацию Рис. 3.5. Стадии проектирования встраиваемой системы на базе МК
76 Гпава 3 ? пульт оператора системы, предоставляющий пользователю возможность контролировать параметры процесса управления и вносить в него коррективы по своему усмотрению. Разработка встраиваемых приложений на МК представляет собой совокупность ряда этапов (рис. 3.5). Далее в данной главе рассмотрим вопросы, касающиеся непосредственно проектирования; вопросы отладки ввиду их особой важности будут рассмотрены в главе 4. 3.3. Анализ предметной области и моделирование Анализ ТЗ и предметной области— необходимый этап разработки любого изделия. Он проводится на начальной стадии проектирования при разработке технического предложения. Целью анализа является генерация предложений по разработке структуры системы. Решение таких творческих задач основано на проводимых совместно системно-структурном анализе и синтезе. Полнота синтеза определяется глубиной анализа, которая зависит от степени разработки ТЗ. Данный этап позволяет выявить особенности объекта управления и требования к системе управления и проводится общими для любых областей технического проектирования методами системного анализа и моделирования. Рассмотрим пример проведения моделирования. Системе управления технологическим процессом необходимо поддерживать заданный уровень концентрации реагента в растворе, который в отсутствие рис. 3.6. структура системы поддержания заданной концентрации реагента Проектирование микроконтроллерных систем (J_ о 5 ю 15 20 t рис. 3.7, а. закон разложения реагента регулирования экспоненциально уменьшается. Для определения текущего значения концентрации реагента в системе имеется фотоэлектрический датчик, применение которого основывается на законе Бугера-Ламберта-Бера, описывающего зависимость уровня интенсивности световой волны, проходящей через раствор реагента, от концентрации этого реагента в растворе. В случае снижения концентрации реагента относительно требуемой система производит его добавление в раствор, в случае превышения — для снижения концентрации используется естественное разложение реагента. Структура системы показана на рис. 3.6, а ее описание в терминах среды моделирования Mathcad приведено в разд. 3.3.1. 3.3.1. модель системы управления концентрацией реагента в растворе ()писание необходимых переменных: I := 0, 0.1 ... 20 Время наблюдения процессов с max := 0.001 Максимальная концентрация раствора ()писание нерегулируемого процесса с разложением реагента: с f е := 0.5 Множитель показателя степени разложения реагента с f,io:=vmax ¦e~c-f-e't N Закон разложения реагента (рис. 3.7, а)
78 Гпава 3 Описание желаемого процесса изменения концентрации реагента: w_c_n := 0.6 Частота изменения концентрации реагента c_n,io := Требуемый закон изменения концентра- sin(w_c_n-t)Nj ции (рис. 3.7, б) с max- 0.5 + - рис. 3.7, б. требуемый закон изменения концентрации Описание регулируемого процесса поддержания заданной концентрации реагента: А := 1 d := 0.05 Закон Бугера-Ламберта-Бера изменения U(c) •= e~Acd относительной интенсивности световой волны, проходящей через раствор, в зависимости от концентрации реагента: А — постоянная характеристика реагента; d — расстояние между излучателем и приемником. Три анализируемых коэффициента П-регулятора. Описание процесса регулирования: Очередное значение концентрации определяется на основе предыдущего (с учетом разло- K_reg:=(0 -2 -5)т m :=0 ... 2 c_resm о := стах Проектирование микроконтроллерных систем 79 жения реагента) значения и добавки реагента по П-закону. minus(a) := if (а<0, а, 0) Система может лишь увеличить концентрацию c_resmt,0+1 :=(c_resm,,0 -е--'-**1 +K_regm -minus(u(c_nt,0)-U(c_resmt,0))) На рис. 3.8, a—в показаны графики поддерживаемых концентраций для регуляторов с различными коэффициентами усиления. б) рис. 3.8. концентрация реагента: для к_гед = 0 (а), для к_гед = -2 (б)
80 Глава 3 5 10 15 20 t в) рис. 3.8. концентрация реагента: для k_reg = -15 (в) В построенной модели системы приведены описания и графики нерегулируемого процесса снижения концентрации раствора, желаемого уровня концентрации и реальных процессов регулирования при различных значениях коэффициента регулирования. Описание процесса регулирования дано в рекуррентной форме и с учетом невозможности системы управлять снижением концентрации реагента. Примечание - Используемый закон, отражающий зависимость интенсивности выходной световой волны от концентрации раствора, имеет силу лишь при слабых концентрациях растворенного реагента; используемый параметр А абстрактен. 3.4. Определение функций аппаратного и программного обеспечения. Разработка структурной схемы Процесс разработки структурной схемы системы проводится путем последовательного уточнения ее компонентов. На исходном этапе из ТЗ известны входы, выходы и управляющие воздействия на систему, поэтому проектируемую систему можно представить в виде совокупности более простых подсистем, связанных между собой входами, выходами и управляющими воздействиями (рис. 3.9). При последовательном уточнении структуры увеличивается число составляющих исходную систему подсистем, но сложность каждой из них уменьшается. При этом производится декомпозиция требований ТЗ, Проектирование микроконтроллерных систем 81 применяемых к конкретной подсистеме, начиная с подсистем, выходы Которых являются выходами всей системы и заканчивая входными подсистемами Процесс повторяется до достижения элементарного уровня детализа.ции представляющего систему состоящей из известных элементов, для которЫХ проведение дальнейшей декомпозиции нецелесообразно. управляющие воздействия на систему входы входы подсистема 1 проектируемая система выходы а) управляющие воздействия на систему подсистема 2 выходы 6) Нходы подсистема 1.1 подсистема 1.2 управляющие воздействия на систему подсистема 2.1 подсистема 2.2 подсистема 2.3 выхо] CMCT«iJb7 в) рис. 3.9. пример последовательного уточнения структуры системы: начальная структура уточненная структура (б), финальная структура (в)
82 Гпава 3 На элементарном уровне для каждого вида применяемых элементов выполняется следующая процедура: ? определяется множество М известных разновидностей элемента; ? составляется иерархия требований ТЗ к элементам данного вида по критерию принципиальности для разработки; ? требованию а ставится в соответствие подмножество АсМ; ? требованию b ставится в соответствие подмножество Вс А; ? требованию с ставится в соответствие подмножество СсВ; ? процесс повторяется до удовлетворения всех требований. Если мощность полученного множества превышает 1, то некоторые из требований ТЗ могут быть превзойдены. Если пересечение является пустым множеством, значит, среди известных элементов нет удовлетворяющего всем требованиям ТЗ, и необходимо проведение дополнительной конкретизации данной подсистемы. Методы синтеза делятся на эвристические (творческие) и формальные (математические). Как правило, эвристически предлагается общая структура системы, а формальными методами определяются конкретные технические решения. Соотношение формальных и эвристических методов зависит от сложности системы и ее класса (наиболее формализованы методы синтеза комбинационных цифровых и линейных аналоговых схем, наименее — методы синтеза нелинейных и импульсных устройств). Выбор конкретных технических решений математически представляет собой задачу оптимизации, для решения которой могут использоваться известные методы теории операций (вариационное исчисление, численные методы поиска, линейное и нелинейное программирование и др.). При распределении функций между аппаратным и программным обеспечением следует исходить из того, что использование специализированных дополнительных больших интегральных схем (БИС) упрощает разработку и обеспечивает высокое быстродействие системы в целом, но сопряжено с увеличением стоимости, объема и потребляемой мощности. Больший удельный вес программного обеспечения позволяет сократить число компонентов системы и стоимость ее аппаратных средств, но это приводит к снижению быстродействия и увеличению затрат и сроков разработки и отладки прикладных программ. При этом время жизни изделия, в котором большая часть функций реализована в программном обеспечении, многократно возрастает за счет того, что срок морального старения изделия может быть существенно отодвинут. Программная реализация основных элементов алгоритма работы контроллера допускает его модификацию путем перепрограммирования, в то Проектирование микроконтроллерных систем 83 время как возможность изменения уже существующей фиксации элементов алгоритма в аппаратуре контроллера практически отсутствует [1]. 3.5. Проектирование аппаратного обеспечения Процесс проектрования аппаратного обеспечения состоит из нескольких этапов (см. рис. 3.5); рассмотрим их более подробно. 3.5.1. Выбор элементной базы Одна из наиболее важных задач выбора элементной базы относится к выбору непосредственно микроконтроллера. Принятие решения о выборе, как правило, проводится на основании методики комплексного сравнения параметров микроконтроллеров по совокупности основных технико-экономических характеристик. Приведем одну из таких методик, базирующуюся на определении мультипликативного оценочного функционала [4]. I !усть, исходя из предполагаемой области будущего применения, заданы следующие требуемые параметры микроконтроллерной системы: производительность — W, коэффициент запаса производительности — К, количество линий ввода-вывода — N, коэффициент запаса линий ввода-вывода— L, потребляемая мощность — Р, массогабаритные показатели — S, стоимость — (диапазон рабочих температур — Т и требования заказчика — U. 11еобходимо из М имеющихся на рынке микроконтроллерных систем вы- брать оптимальную с точки зрения удовлетворения указанным требованиям. Решение задачи заключается в вычислении функционалов Е; = W: ' П; • Р- ¦ S: ' С| - t: 41, для всех i = 1...М и нахождении] такого, что Е: = max{Ej}. Оптимальной системой для данной области применения с точки зрения предъявленных фебований будет система с порядковым номером]. Здесь W|, iij, p|, Sj, Cj, tj, Uj —пороговые коэффициенты, определяющие применимость данного типа микроконтроллера в данной задаче, такие, что w, = 0 при W; < К • W, w, = 1 при Wj => К • W; и, 0 при Nj < Е- N , iij = 1 при N| => EN ;
84 Гпава 3 Pj= 0 при Pj > Р , Р;= 1 при Р; <= Р ; Sj = 0 при Sj > S, Sj = 1 при Sj <= S; Cj = 0 при Cj > С , Cj = 1 при С, <= С; t; = 0 при Tj о Т, tj = 1 при Tj = Т ; и( = 0 при UjOU, Uj = 1 при Uj = U. Примечания к методике Примечание 1. оценка уровня производительности как величины числа выполняемых команд в единицу времени является необъективной, т. к. не учитывает наиболее часто встречающуюся ситуацию с несовпадением систем команд сравниваемых микроконтроллерных систем. например, в системе команд микроконтроллера мк1 из арифметических команд присутствуют только команды сложения и вычитания, а в системе команд микроконтроллера мк2 в состав арифметических команд дополнительно включены команды умножения и деления. при решении задачи y = а * x + в микроконтроллер мк2 выполнит две команды — умножения и сложения, а микроконтроллер мк1 вычислит произведение путем реализации нескольких сложений. при равной тактовой частоте и определенным образом подобранном интервале времени наблюдения может оказаться, что в единицу времени микроконтроллер мк1 выполнил большее количество команд, чем мк2 (т. к. время выполнения команды сложения меньше, чем время выполнения команды умножения), поэтому производительность микроконтроллера мк1 будет ошибочно считаться выше. в связи с отмеченным, производительность микроконтроллеров определяется на тестовых задачах, содержащих смесь различных команд. как правило, для удобства команды разделяют на короткие и длинные (например, к коротким относят команды сложения, а к длинным — умножения). в этом случае: W = 100%, при этом 8К + блл = 1. t -8 +t -8 кдл lk ик т 1дл идл в смеси присутствуют короткие и длинные команды, имеющие определенную долю от общего количества команд смеси и время выполнения. в зависимости от доли команд каждого типа в данной смеси производительность контроллера может изменяться (рис. 3.10). в случае, если предполагаемая область применения микроконтроллера требует относительно большой доли коротких команд (как показано на рисунке пунктирными вертикальными линиями), лидером по производительности оказывается микроконтроллер мк1. Примечание 2. в случае, когда в состав микроконтроллерной системы входят несколько блоков, значения энергетических, массогабаритных и стоимостных показателей микроконтроллерной системы определяются как сумма значений показателей всех блоков, входящих в состав системы. Примечание 3. в приложении 1 приведены некоторые представители мк и их основные характеристики. Проектирование микроконтроллерных систем 85 мк1 рис. 3.10. сравнение производительности микроконтроллеров Микроконтроллер представляет собой логический автомат с высокой, степенью детерминированности, в связи с чем число вариантов его системного ьключения невелико [1]. Поэтому типовой состав аппаратных средств ядра любой МК-системы (МК, ПЗУ, ОЗУ, интерфейсные БИС, схемы синхронизации и системного управления) оформляется конструктивно в виде одноплатных универсальных программируемых контроллеров, которые предназначены для встраивания в контур управления объектом или процессом. На некоторых моделях таких плат имеется так называемое монтажное поле пользователя, на котором он имеет возможность смонтировать свои специфические схемы, такие как оптронные развязки, реле и т. п. Кроме того, на плате МК-системы может быть размещен источник электропитания. Пример реализации одноплатного МК показан на рис. 3.11 и 3.12. Рис. 3.11. Внешний иид одноплатного контроллера
86 Гпава 3 ш| g -nfl ТЗ с cd ifiBESBnECSEn dp ют 'с о 1 i 1 г qoqdqqoq О (Л s3 1 о » < « к и ш ?00 ~ о» «с < < оооооооо vcc grid rg uqqoqouo 9 о О о о о о о о о claa.aaq.aa о d о о - ™ + | о hi , о > cd . _ о о + , ¦ о* ^ с"- ¦о 2 ой aaaaaaaa ^13 д«' t*> f н н н н н н ill о < а11 а12 j а13| а14| а15 о г г СО 2 i 2 со 5 ю ш m СМ СО ш ш iri ю' ег> to" iri ю « ifi aaaaaaaa о о О ~ С* СО ч V> <В t~ aaaaaazaa m ш г. a a a q q о x x fc z ггптггггпт aa alia a tiaa гп ч in Ш юлю a a. a x r x x 2 _ ^ CN 4- D _! _J tu С В Л t) w g oi № «-l j 3 h h штптпттттштп i a) о a. о x 3 го s ф X о о; го х л с го 3 с S О. с о s a Проектирование микроконтроллерных систем 87 При использовании в системе управления такого одноплатного контроллера задача разработчика сводится к проектированию лишь специализированных схем сопряжения с объектом. При выборе элементной базы для устройств сопряжения наиболее предпочтительным является использование интегральных схем, а дискретные компоненты выполняют вспомогательные функции. Элементы сравнивают по значению комплексного показателя качества Q = V(p; -а(, определяемого в виде совокупности нормированных значений частных показателей af, взвешенной коэффициентами значимости ср,. Так, например, для диода к частным показателям относятся значения прямого и обратного токов, обратного напряжения, масса, рабочая температура. Для интегральных схем данным методом определяется серия. 3.5.2. Разработка принципиальных схем Принципиальная схема аппаратной части системы разрабатывается по структурной схеме на основе требований ТЗ и требований, предъявляемых разработчиком к каждому функциональному элементу. Эти требования определяются нормативно-техническими документами, результатами экспериментов и испытаний, общими конструкторскими нормами и правилами с целью ограничения, типизации и унификации изделия. Разработка принципиальной схемы функционального элемента заключается в предложении схемы, удовлетворяющей совокупности технико-экономических требований при максимальной простоте и надежности. 11ри разработке МК-системы в состав аппаратных средств, как правило, вводят элементы настройки, управления, контроля и защиты. К элементам настройки относятся элементы, параметры которых могут быть изменены в процессе производства с целью установления необходимого знамения одного или нескольких параметров устройства. Элементы настройки используются в случаях, когда к допускам на выходные параметры функциональных элементов предъявляются жесткие требования, при дополнительных фебованиях снижения стоимости системы и ее упрощения. К элементам управления относятся элементы, параметры которых могут быть изменены в процессе эксплуатации с целью установления необходимого значения одного или нескольких параметров устройства, для изменения структуры системы (в многофункциональных системах), для включения резерва || г. п. в их число входят устройства регулировки, тумблеры, кнопки, сенсоры и др. К элементам контроля относятся элементы, предназначенные для передачи оператору информации о функционировании системы. в их число входят измерительные приборы, табло, панели, индикаторы и т. п.
88 Гпава 3 К элементам защиты относятся элементы, предназначенные для предотвращения выхода из строя или гибели системы при отклонении значений внешних параметров от допустимых, а также при возникновении аварийных режимов в самой системе по причине отказа ее частей. При производстве, эксплуатации и ремонте системы осуществляют контроль и настройку режимов работы ее цепей. Для этих целей на схеме определяют некоторую совокупность контрольных точек для подключения контрольно- измерительной и тестовой аппаратуры. 3.5.3. Расчет параметров элементов Основной задачей расчета является определение значений электрических параметров элементов принципиальной схемы, обеспечивающих ее эффективную оптимизацию в дальнейшем. Задачу расчета полагают решенной, если определены номинальные значения всех пассивных компонентов, значения параметров схем замещения активных элементов, определены типы элементов при значениях выходных параметров, гарантирующих работоспособность системы в случайных условиях ее производства и эксплуатации. При проектировании аппаратуры расчет наиболее часто выполняется в следующем порядке: 1. Ориентировочный расчет выходных параметров функциональных элементов. 2. Расчеты, позволяющие выбрать типы активных элементов (транзисторы, диоды, микросхемы). 3. Расчеты рабочих режимов активных элементов. 4. Расчет значений пассивных элементов, обеспечивающих выбранные режимы активных элементов. 5. Определение номинальных значений параметров пассивных элементов и| выбор их типов. 6. Расчет выходных параметров системы и проверка их соответствия ТЗ. Для любой аппаратной схемы существует некоторое множество подмножеств значений параметров компонентов, удовлетворяющее предъявляемым к ней техническим требованиям, т. к. вариации значений параметров могут компенсироваться и оказывать слабое влияние на выходные параметры. Определение оптимального варианта производится путем вариации параметров: аналитически (формальными методами анализа), имитационно (с помощью моделей на ЭВМ) или натурно (на макете). Расчет аппаратуры носит итерационный характер. После выполнения ряда расчетных операций может возникнуть необходимость повторить предыду- Проектирование микроконтроллерных систем 89 щие операции для улучшения режимов всей аппаратуры или ее части. Например, расчет может показать необходимость введения дополнительных обратных связей, что потребует новых расчетов. Следует отметить, что расчетные значения элементов необходимо заменять номинальными величинами, соответствующими стандартным шкалам, т. к. вероятность совпадения расчетного и номинального значений мала. Выбор элементов производится на основании анализа справочной документации, при этом элементы должны соответствовать назначению, условиям эксплуатации и т. п. Элемент считается выбранным правильно, если номинальные значения его параметров находятся в допустимых отношениях с расчетными, а будущие условия эксплуатации элемента (температурный режим, значения влажности, уровень вибраций и др.) соответствуют его заводским техническим условиям (ТУ) [11]. 3.5.4. Разработка печатных плат и макетирование Высокая стоимость аппаратуры и ее относительно низкая надежность делают актуальными такие конструктивные решения, при которых замена некоторой части изделия была бы легко осуществима. В связи с этим практически все аппаратные решения для встраиваемых систем выполняются на печатных платах. Печатная плата представляет собой пластину из электроизоляционного материала, применяемую в качестве основания для установки и механическою укрепления элементов, а также для их электрического соединения посредством печатного монтажа. Наиболее часто печатные платы изготавливаются из стеклотекстолита, на поверхность которого наклеена металлическая фольга. В процессе обработки платы на ее поверхности создают монтажные и крепежные отверстия и проводящий рисунок. I .рименение печатных плат на производстве обеспечивает: П идентичность параметров монтажа; П высокую плотность размещения элементов; П возможность автоматизации монтажных, сборочных и контрольно- регулировочных процессов. ( уществует несколько технологий изготовления печатных плат, которые с водятся либо к применению только механических (как разновидность элек- фомеханических — электроискровых) способов обработки, либо комбинированных— фотохимических и механических.
90 Гпава 3 При механическом способе изготовление происходит на одном станке и включает в себя следующие операции: ? подготовка управляющего файла для станка с ЧПУ (топология платы преобразуется в команды фрезерования и сверления); ? автоматическая сверловка заготовки; ? фрезерование изолирующих каналов (для ускорения процесса проводится не удаление всех пробельных участков, а оконтуривание проводников, выделение их из слоя фольги); ? металлизация переходных отверстий (путем вставок заклепок, втулок, впрыскивания электропроводящей пасты). При химическом способе изготовление происходит на нескольких станках и включает в себя следующую последовательность операций: 1. Изготовление фотошаблонов. Рисунок чертежа проводников с помощью фотоплоттера переносится на прозрачную пленку — фотошаблон. 2. Сверление монтажных и переходных отверстий с помощью сверлильного станка с ЧПУ на основе информации об описании платы. 3. Экспонирование. Заготовка платы покрывается фоточувствительным материалом — фоторезистом (меняющим свою растворимость в зависимости от дозы поглощенного излучения), после чего она покрывается фотошаблоном и производится ее засветка мощным источником ультрафиолетового излучения. После экспонирования засвеченный фоторезист удаляется растворителем. (Как вариант может применяться негативное экспонирование с последующей металлизацией лишь токопроводящих участков платы.) 4. Травление. Плата помещается в травильный раствор, который растворяет участки металлизации, не покрытые слоем фоторезиста. После травления на плате формируется готовый рисунок печатного монтажа. 5. Промывка и очистка. 6. Прессование многослойных плат, обрезка. После изготовления платы в ряде случаев (при использовании компонентов для поверхностного монтажа) возможен автоматический монтаж элементов на плате с помощью робота-манипулятора (элементы фиксируются вязкой паяльной пастой на контактных площадках платы, после чего плата подвергается термической обработке, под воздействием которой элементы припаиваются к площадкам). Параметры разрабатываемой аппаратной системы оптимизируют на ее физической модели (макете), номинальные параметры элементов которой соответствуют расчетным. Задача макетирования состоит в том, чтобы получить Проектирование микроконтроллерных систем 91 требуемые значения выходных параметров, установить необходимые режимы работы, исследовать влияние внешних факторов на функционирование аппаратуры. Экспериментальная отладка производится путем последовательного подбора параметров для каждого из функциональных элементов. Для сокращения сроков отладки необходимо применять методы планирования эксперимента, а также использовать оптимизацию на численных моделях с применением )ВМ. 3.5.5. Средства автоматизированного проектирования аппаратуры В условиях возрастающей сложности аппаратуры ручное проектирование МК-систем практически не применяется; для проектирования используются системы автоматизированного проектирования (САПР). ( овременные САПР решают задачи размещения элементов на плате, трассировки печатных проводников, формируют программы управления для станков ЧПУ, осуществляющих сверление отверстий, изготовление фотошаблонов, травление и другие операции. САПР существенно снижает затраты трута п обеспечивает высокое и стабильное качество проектирования. В состав подавляющего большинства средств САПР входят (рис. 3.13): П редактор принципиальных схем, позволяющий разработать чертеж схемы устройства; П библиотека параметризируемых элементов, содержащая описание работы цифровых (вентили, регистры, счетчики, мультиплексоры, устройства памяти и др.), аналоговых (резисторы, конденсаторы, дроссели, трансформа- горы и др.) и смешанных (АЦП, ЦАП и др.) устройств; П редактор элементов, позволяющий сформировать описание отсутствующего в библиотеке компонента; П редактор входных воздействий, позволяющий построить план проведения моделирования (в том числе, задать входные воздействия на систему); П подсистема моделирования, выполняющая моделирование работы спроектированного устройства на основе его принципиальной схемы, библиотечных данных о примененных в схеме компонентах и построенного плана моделирования с выводом отчета о результатах моделирования; П подсистема разработки печатных плат, позволяющая определить оптимальные размеры печатной платы, расположение на ней элементов и расположение соединительных проводников.
92 Гпава 3 редактор тестовых воздействий средства сбора данных, журнализации и анализа изменение параметров элементов, входных воздействий, внешних условий редактор принципиальных схем создание чертежа модель системы реакции системы на воздействия сведения о компоновке элементов трассировщик печатных плат законы функционь рования элементов графическое библиотека и конструктивное описание элемента элементов создание элементов новых - редактор элементов файлы описания операций для станков с чпу рис. 3.13. структура сапр электронных устройств К числу таких систем относятся пакеты P-CAD, DesignLab, MicroCap и др. Рассмотрим пример их использования для проектирования аппаратуры. В разрабатываемой микроконтроллерной системе необходимо реализовать вывод информации на регистратор-самописец, угол отклонения пера которого от положения покоя пропорционален уровню интенсивности подаваемого на него аналогового сигнала. Применить цифроаналоговый преобразователь в системе невозможно по причине нехватки выходных линий микроконтроллера, в связи с чем для передачи требуемой интенсивности сигнала используется метод широтно-импульсной модуляции, однако подавать ШИМ-сигнал непосредственно на вход самописца нельзя в связи с недостаточной инерционностью объекта. Проектирование микроконтроллерных систем 93 Для разрешения указанной проблемы используется внешний пассивный интегратор, принципиальная схема которого, разработанная в системе проектирования DesignLab, показана на рис. 3.14. шшзавь . .у..; schematics - 7400 (V) DST-M2 CLK„n. R1 A A A VvV 2k7 1u R2. VW 2k7 C1 1u C2 л» рис. 3.14. схема пассивного интегратора второго порядка 11омимо собственно интегратора, образованного резисторами R1 и R2 и конденсаторами С1 и С2, для проведения моделирования в схему включен ис- i очник цифровых сигналов DSTM2 с изменяемыми параметрами длительно- i in импульса и длительности паузы, позволяющий моделировать выходные сигналы микроконтроллера с различными значениями коэффициентов ШИМ, а также контрольные приборы V, дающие возможность регистрировать уровни напряжений в указанных точках. 11а рис. 3.15 показан переходный процесс в системе при выводе сигнала с отношением длительности импульса к длительности периода, равным 0,9. На рис. 3.16 показано установившееся значение аналогового сигнала, равное 0,9 от максимально возможного. На рис. 3.17 показано установившееся значение аналогового сигнала для коэффициентов ШИМ, равного 0,5. Примечание методика программного формирования шим-сигналов на микроконтроллере будет рассмотрена в главе 6.
os sns 18ns tins 2 ens 25ns -cms i/orlf dp. somw j рис. 3.15. переходный процесс в системе при коэффициенте шим 0,9 s.w- ¦¦28ns u(dst№:0 »(8?:2) рис. 3.16. установившийся процесс при коэффициенте шим 0,9 1 aims Проектирование микроконтроллерных систем 95 r-ГiffTffiS№fllшщдддршмташЩ^^ """""""""втайне •фй г 1 1 <а»|с1)2э|о,| unwibi fcl^sj^l-rfl 1 1 1 1 ii i 11 1 1 далия : Щ, ..... 2 bets ??n, u(dsth?:1) u r k."": 2) 26й8 hi рис. 3.17. установившийся процесс при коэффициенте шим 0,5 3.6. Разработка программного обеспечения i !од программным обеспечением микроконтроллерных систем подразумева- i гея совокупность программ, используемых в процессе подготовки и решения задач на микроконтроллерных системах. (' i руктура программного обеспечения микроконтроллерных систем показана на рис. 3.18. И соответствии с выполняемыми функциями программное обеспечение (по) микроконтроллерных систем подразделяется на: П системное; П инструментальное; П прикладное. К системному ПО относятся программы, предназначенные для организации вычислительного процесса в микроконтроллерной системе и контроля ее функционирования. *
96 Гпава 3 по мкс системное по инструментальное по операционные системы библиотеки программ программы диагностики прикладное по сервисные программы трансляторы размещающие программы средства отладки _ задатчики — измерители регуляторы драйверы рис. 3.18. структура по микроконтроллерных систем К инструментальному ПО относятся программы, применяемые для разработки программного обеспечения микроконтроллерных систем. К прикладному ПО относятся программы, реализующие целевую задачу управления микроконтроллерной системы. Программное обеспечение, предназначенное для выполнения на данной микроконтроллерной системе, называется резидентным программным обеспечением. К резидентному ПО относятся системное и прикладное ПО, а также ряд программ инструментального ПО. Программное обеспечение, предназначенное для работы с данной микроконтроллерной системой, но выполняющееся на системах, программно несовместимых с данной, называется кроссовым ПО. К кроссовому ПО принадлежит ряд программ инструментального ПО. 3.6.1. Структура и функции системного ПО При необходимости предоставления пользователю возможностей манипулирования ходом вычислительного процесса на микроконтроллерной системе (загрузка новых модулей из инструментальной системы, изменение содержимого памяти данных и оперативной памяти программ, запуск модулей на выполнение, управление обменом информацией в мультимикроконтроллерных системах и др.) в состав программного обеспечения микроконтроллерной системы вводятся компоненты, обладающие способностью управления процессом выполнения задач на основе команд оператора. Такие программные системы, называемые операционными системами (ОС), содержат в своем составе: ядро, реализующее общую логику функционирования операционной системы (реакция на прерывания, исполнение команд и др.), модули диалога с пользователем (проведение которого предполагает наличие в составе микроконтроллерной системы устройств ввода-вывода информации), модули Проектирование микроконтроллерных систем 97 управления задачами (загрузкой, выгрузкой, переключением между задачами в мультизадачных системах, определением достижения условий останова и др.), а также модули связи с внешними вычислительными системами (в мультимикроконтроллерных системах, в системах с инструментальными ЭВМ и др.) (рис. 3.19). ядро результаты i 1 состояние прием команды процессов данных передача передача управления данных г 1 модули взаимодействия с оператором модули управления задачами связные модули рис. 3.19. структура операционной системы мк Для осуществления своих функций ядро операционной системы, передача управления на которое осуществляется в соответствии с определенными временными метками, должно использовать высшие приоритеты системы обработки прерываний (рис. 3.20). память мк векторы прерываний ядро ос -И- модули ос ¦ пользовательские задачи квант времени таймеры мк (высший приоритет) устройства ввода- вывода команды пользователя ¦> ответы пользователю связь в распределенных системах смена выполняемого контекста рис. 3.20. управление в микроконтроллерных системах с операционной системой (ос) » |.н iso i
98 Гпава 3 В отличие от операционных систем, библиотеки подпрограмм непосредственно не решают задачи управления вычислительным процессом, однако содержат набор функционально законченных модулей, выполняющих типовые действия по обмену информацией с устройствами ввода-вывода, математические функции и т. п. Программы диагностики выполняют проверку исправности микроконтроллерной системы и ее составных частей. Проведение диагностических процедур описано в главе 5. 3.6.2. Структура и функции инструментального ПО В состав инструментального ПО входят: сервисные программы, трансляторы, размещающие программы и средства отладки. К сервисным программам относятся редакторы, библиотекари, информационно-обучающие программы и др. Редакторы предназначены для подготовки исходных текстов программ микроконтроллерной системы. Редакторы принимают исходную программу с некоторого устройства ввода-вывода (клавиатуры, дисковой памяти и пр.) и заносят в оперативную или дисковую память инструментальной ЭВМ. Для подготовки программ в инструментальных системах используются общецелевые редактирующие программы, которые могут использоваться для создания исходных программ на любом языке. Редактор оперирует с исходной программой как с текстом, не учитывая те синтаксические правила, которым должна удовлетворять программа. Библиотекари предназначены для создания и ведения библиотек подпрограмм, реализующих типовые функции, часто применяемые в разработках. Библиотекари, как правило, имеют команды организации библиотеки, включения и удаления программных модулей, получения информации о содержащихся в библиотеке программных модулях. Информационно-обучающие программы предназначены для начинающих пользователей и позволяют приобрести некоторые навыки применения инструментальных систем. Трансляторы преобразуют исходную программу, написанную на входном языке (в качестве которого, как правило, применяются ассемблер и ряд языков высокого уровня, в частности язык Си) в результирующую — так называемую объектную программу на языке кодов команд микроконтроллера. Кроме объектной программы трансляторы выдают листинг программы, содержащий распечатку исходной и объектной программ, таблицы идентификаторов, сообщения об ошибках и другие виды диагностической информации. Как правило, трансляторы обладают возможностью формировать объ- / 1роектрование микроконтроллерных систем 99 сктную программу в перемещаемых адресах и обрабатывать внешние связи между программными модулями. , Размещающие программы преобразуют объектные программы к виду, непосредственно готовому к выполнению на микропроцессорной системе, и заносят полученные программы в память микроконтроллерной системы (МКС). I !роцесс перевода объектных программ к виду, пригодному для исполнения, заключается в преобразовании перемещаемого варианта объектной программы в вариант программы в абсолютных адресах. При необходимости установления связей между отдельными объектными модулями производится дополнительное редактирование внешних ссылок. Отметим, что сам процесс занесения программы в память микропроцессорной системы должен быть поддержан средствами как инструментальной вычислительной системы, так и самой МКС. В качестве примера подобных систем можно привести пакет фирмы 2500 Л.О. v4.02, включающий в себя макроассемблер Х8051 для МКС, совместимых с однокристальными микро-ЭВМ семейства МК-51, библиотекарь и редактор связей, формирующий результирующие программы в ряде широко распространенных форматов. Примечания Примечание 1. директивы ассемблера х8051 приведены в приложении 3. Примечание 2. средства отладки по, а также аппаратные средства размещения программ в памяти микроконтроллерной системы будут подробно рассмотрены в разд. 4.2. 3.6.3. Структура и функции прикладного ПО Прикладное ПО, реализующее процесс управления объектом, как любая сложная программная система, строится по модульному принципу, в соответствии с которым каждая функционально законченная программная единица оформляется в виде подпрограммы, обращение к которой возможно из других программных модулей (рис. 3.21). Чадающие модули (задатчики) реализуют функцию, описывающую желаемое (заданное) поведение объекта управления в виде набора ряда программно- доступных переменных управления. Информацию, необходимую для формирования задающей функции (например, выбор типа функции) задатчик может получать от оператора либо генерировать самостоятельно на основе информации об объекте управления. Функция, задающая желаемое поведение объема, может быть реализована либо путем математических вычислений, либо путем обращения к участку памяти, храпящему набор значений данной функции. Критериями выбора одного из методов служат необходимая точ-
100 Гпава 3 ность и требуемая скорость вычислений (например, sin(x) = х-х3/3! + х5/5! либо sin[x] = [0,0.01, 0.03,0.07,...!]). Пользователь I Задатчик Регулятор Драйвер Измеритель Объект Рис. 3.21. Организация взаимодействия прикладного ПО Измерительные модули выполняют взаимодействие с аппаратурой датчиков объекта управления, предоставляя программам информацию о текущем состоянии объекта управления в виде значения ряда программ но-доступных переменных. Регулирующие модули (регуляторы) предназначены для построения выдаваемого на объект воздействия на основе информации о требуемом поведении объекта управления и его реальном поведении. В настоящее время в рамках теории автоматического управления разработано достаточно большое количество способов регулирования. В качестве примера рассмотрим про- порционолъно-интегрально-дифференциалъный регулятор (ПИД-регулятор). ПИД-регулятор имеет два входа (задатчика и измерителя) и один выход (на драйвер). Уравнение, связывающее выход регулятора u(t) и величину рассогласования его входов у = хзад - хшм, следующее: u(t) = K„-y(t) + —jy(t)dt + Tx и 0 dy(t) dt где Кп — коэффициент передачи пропорциональной части регулятора, Ти — постоянная времени интегрирования, Тд— постоянная времени дифференцирования. При квантовании с малой длительностью такта Т подобные уравнения можно преобразовать в разностные, заменив производные разностями соответст- Проектирование микроконтроллерных систем 101 вующих порядков, а интегралы -— интерполяционными формулами. При использовании интерполяционной формулы по методу прямоугольников имеем: u[n] = К„ ¦ у[п] + ~ Jy[i] + i• (yfn]- y[n -1]). Драйверы объекта предназначены для преобразования информации об управляющем воздействии в управляющее воздействие того типа, которое соответствует объекту управления. Так, например, для реализации управления частотой вращения шагового двигателя с тахогенератором в роли датчика частоты, задатчик формирует требуемое значение частоты вращения (в оборотах в секунду), измеритель определяет текущее значение частоты в тех же единицах, что и задатчик, осуществляя пересчет показаний аналого-цифрового преобразователя в количество оборотов в секунду, регулятор определяет уровень воздействия на объект (например, путем вычислений функции пропорционального регулятора), а драйвер преобразует полученный уровень воздействия в сигналы коммутации фазовых обмоток шагового двигателя, следующие с частотой, определяющейся информацией, полученной с регулятора. Драйвер и измеритель принадлежат к объектно-зависимым компонентам прикладного ПО, а задатчик и регулятор— к объектно-независимым. При смене объекта управления драйвер объекта также подлежит смене (в описанной системе замена шагового двигателя на двигатель постоянного тока потребует от драйвера объекта реализации управления, например, методом широтно-импульсной модуляции). При смене датчиков объекта замене подлежит измеритель. 3.6.4. Стадии разработки программного обеспечения При проектировании программного обеспечения микроконтроллерных систем управления техническим объектом разработчику необходимо осуществить продвижение проекта через ряд стадий [7]: 1. Постановка задачи. 2. Анализ проблемы и построение математической модели. 3. Построение алгоритмов решения задачи. 4. Проектирование программы, решающей поставленную задачу. 5. Программирование задачи. <>. 11роведенис автономной отладки.
102 Гпава 3 7. Проведение комплексной отладки. 8. Передача в эксплуатацию. 9. Сопровождение. Первый этап предполагает формирование описания (на естественном языке либо на языке специальных символов) условий задачи и желаемого результата. Как правило, постановка задачи представляется в виде технического задания. На втором этапе осуществляется построение математической модели того физического процесса, который описывается в постановке задачи. На третьем этапе математическая модель представляется в виде, удобном для числовой оценки, и осуществляется выбор метода решения задачи. На двух первых этапах описывалась сущность, которую необходимо получить в процессе проектирования, начиная с третьего этапа формируется способ реализации этой сущности — алгоритм получения результата на основе исходных данных. На четвертом этапе осуществляется проектирование программного комплекса, завершающееся разработкой спецификаций требований к составным частям программного комплекса. На пятом этапе выполняется собственно программирование, т. е. кодирование алгоритма с помощью выбранного языка программирования. На шестом этапе выполняется автономная отладка каждой программы, входящей в состав программного комплекса, т. е. достижение правильности реализации функции, возложенной на данную программу. На седьмом этапе проверяется соответствие техническому заданию всего программного комплекса. На восьмом этапе разработанный программный комплекс передается в эксплуатацию с изготовлением необходимой документации. Процесс сопровождения (девятый этап) заключается в устранении обнару- женных ошибок, в модификации и улучшении применяемых подпрограмм. Следует отметить, что в микроконтроллерных системах заключительная передача в эксплуатацию разработанного программного комплекса требует проведения комплексной отладки аппаратного и программного обеспечения (см. рис. 3.5). Примечание Главными факторами, определяющими выбор между языком программирования высокого уровня или языком ассемблера, являются технические (объем программ и время их выполнения) и экономические (стоимость конечного изде- Проектирование микроконтроллерных систем 103 лия) факторы. При использовании трансляторов с языков высокого уровня объем и время выполняемой программы больше, чем при использовании языка ассемблера, однако затраты на разработку программного комплекса и время его изготовления будут меньше. Стоимость микроконтроллерной системы может быть представлена суммой стоимости программного и аппаратного обеспечения. При изготовлении партии систем стоимость разработки программного обеспечения остается постоянной, а стоимость аппаратуры растет пропорционально числу изготавливаемых систем (рис. 3.22). Так как стоимость разработки программного обеспечения ниже при использовании языка высокого уровня, но каждое аппаратное изделие при этом дороже (программы больше по объему, ряд функций в связи с недостаточной скоростью выполнения программ необходимо реализовать аппаратно и т. п.), то начиная с некоторого количества изделий в партии экономически выгоднее использовать язык ассемблера. Стоимость Объем партии Рис. 3.22. Стоимость партии в зависимости от языка разработки программного обеспечения
ГЛАВА 4 Отладка микроконтроллерных систем 11од отладкой понимается процесс поиска, обнаружения и исправления ошибок в разрабатываемой системе. Отладка микроконтроллерных систем включает в себя стадии отладки аппаратных средств, программных средств, а также комплексную совместную отладку аппаратуры и программного обеспечения. 4.1. Средства и методы отладки аппаратуры МКС Для проведения отладки аппаратных средств микроконтроллерных систем применяются аппаратные и программные средства отладки (рис. 4.1). средства отладки аппаратуры программные аппаратные системы моделирования общетехнические логические пробники у логические пульсаторы индикаторы тока рис. 4.1. средства отладки аппаратуры
106 Гпава 4 Программные системы моделирования аппаратных средств позволяют исследовать работу аппаратной части микроконтроллерной системы и выявить ошибки в функционировании аппаратуры без проведения трудоемкого макетирования. Как отмечалось в разд. 3.5, одной из компонент современных систем проектирования аппаратных средств является подсистема моделирования, выполняющая моделирование работы спроектированного устройства на основе его принципиальной схемы, библиотечных данных о примененных в схеме компонентах и построенного плана моделирования. При разработке пользовательских устройств (как правило, это устройства сопряжения с объектом) проведение отладки путем моделирования и сопоставления его результатов с требуемым поведением системы позволяет существенно сократить трудозатраты и временные потери. По окончании этапов моделирования и разработки принципиальной схемы аппаратного обеспечения и формирования топологии платы выполняется построение макета системы и проводится автономная отладка аппаратуры. 4.1.1. Общетехнические средства отладки аппаратуры В состав общетехнических средств отладки входят контрольно-измерительные приборы, предназначенные для использования в любых электрических схемах. К их числу относятся мультиметры, частотомеры и осциллографы. Мулътиметр предназначен для измерения постоянных и переменных периодических напряжений и токов, а также значений сопротивлений, емкостей и индуктивностей. С помощью мультиметра выявляются ошибки в проектировании блоков электропитания (в частности, ситуации несоответствия уровня питающего напряжения номинальному диапазону питающих напряжений микросхем), а также факты ошибок монтажа — обрывы и замыкания проводников. Частотомер предназначен для определения значений частоты следования периодических сигналов. С помощью частотомера выявляются ошибки проектирования блока системной синхронизации. Осциллограф предназначен для регистрации электрических сигналов в виде графика функции зависимости уровня сигнала от времени. С помощью осциллографа выявляются сбои в работе устройств синхронизации, фиксируются факты гонок (непредусмотренных задержек одного сигнала по отношению к другому в связи с различным распространением сигналов в схеме) и т. п. Особенности микроконтроллерных систем управления (параллельное представление информации, высокая скорость смены состояний и т. п.) ограничи- Отладка микроконтроллерных систем 107 вают область применения общетехнических средств отладки и число разрешаемых с их помощью задач, в связи с чем в микроконтроллерных системах широко применяются специализированные средства. 4.1.2. Логические пробники В современных цифровых системах, как правило, применяется двоичная система счисления, в связи с чем для задания цифровых сигналов применяется два уровня напряжения — высокий и низкий, разделенные зоной неопределенности. Уровень напряжения цифрового сигнала номинально соответствует одному из разрешенных уровней. Его переход в зону неопределенности свидетельствует о ненормальной работе участвующих в его формировании элементов и воспринимается как заранее непредсказуемое цифровое значение. Гак, для ТТЛ-входа область логического нуля лежит в диапазоне 0...0,8 В, а область логической единицы — в диапазоне 2...5В. Структурная схема логического пробника показана на рис. 4.2, а его внешний вид — на рис. 4.3. К2 ri+ On >2В К2 2В ри -0- 0- <0,8В ион Высокий уровень Импульс Зона неопределенности Низкий уровень Рис. 4.2. Структурная схема логического пробника Рис. 4.3. Внешний вид логического пробника
108 Гпава 4 С помощью источника опорного напряжения — ИОН и компараторов К1 и К2 выявляются следующие ситуации: ? уровень напряжения входного сигнала более 2 В; ? уровень напряжения входного сигнала менее 0,8 В; ? уровень напряжения входного сигнала лежит в диапазоне от 0,8 до 2 В. В указанных случаях активизируются соответствующие индикаторы логического пробника. Схема расширителя импульсов РИ позволяет отобразить ситуацию прохождения высокочастотных импульсов. В микроконтроллерной системе логический пробник применяется для проверки питания микросхем, определения логических уровней сигналов в различных участках схемы, установления наличия импульсов в цепях, определения целостности проводников. 4.1.3. Логические пульсаторы Для анализа работы цифровой схемы в ряде случаев необходимо определить поведение системы в ответ на некоторое воздействие, формируемое внешними по отношению к системе элементами и подаваемое на вход интересующего элемента. Логические пульсаторы используются для введения в узел мощных (током до 1 А) коротких (длительностью до 100 не) импульсов, переводящих его из одного логического состояния в другое, а затем возвращающие в первоначальное состояние. Параметры вводимого импульса таковы, что не повреждают цифровую схему, в связи с чем логические пульсаторы можно использовать для анализа без демонтажа элементов. Структурная схема логического пульсатора показана на рис. 4.4. пуск схемы управления управляемый генератор выход режим ¦ усилитель рис. 4.4. структурная схема логического пульсатора Пользователь может задать несколько режимов работы пульсатора. Как правило, в их число входят: Отладка микроконтроллерных систем 109 П формирование одиночного импульса; ? формирование непрерывной последовательности импульсов с заданной частотой; ? формирование пакета заданного количества импульсов заданной частоты. С помощью логического пульсатора легко установить счетчики в требуемое состояние, чтобы затем проследить работу системы с данного момента. В совокупности с логическим пробником логический пульсатор позволяет контролировать целостность проводников и работу отдельных узлов системы так, как показано на рис. 4.5. логический контролируемый логический пульсатор узел пробник рис. 4.5. совместное использование логического пробника и логического пульсатора 4.1.4. Индикаторы тока В ряде случаев для анализа работы цифровой схемы необходимо определить наличие протекания тока в проводнике. Для этих целей применяется индикатор тока, работа которого основана на явлении электромагнитной индукции. Устройство индикатора тока показано на рис. 4.6. чувствительность схемы управления схемы индикации » усилитель рис. 4.6. устройство индикатора тока Интенсивность свечения индикатора устройства пропорциональна величине скорости изменения тока в проводнике, над которым располагается катушка индуктивности индикатора тока. Задание чувствительности индикатора тока позволяет определить относительные величины протекающих в отлаживаемом устройстве токов.
110 Гпава 4 В совокупности с логическим пульсатором индикатор тока позволяет контролировать целостность проводников и работу отдельных узлов системы так, как это показано на рис. 4.7. Принцип отладки заключается в том, что при наличии замыканий проводников или неисправных элементов с пробоем выходных каскадов путь основной части тока отличается от предполагаемого. логический пульсатор элемент 1 индикатор тока элемент 2 путь тока рис. 4.7. совместное использование логического пульсатора и индикатора тока Следует отметить, что с помощью описанных приборов провести детальный анализ системы с шинной структурой, такой как микроконтроллерная система, в ряде случаев не удается, в связи с чем необходимо использовать более сложные технические средства. 4.2. Средства и методы отладки программного обеспечения По завершению стадии программирования микропроцессорной системы процесс разработки программного обеспечения переходит на следующую стадию — стадию отладки, во время которой выявляются семантически неверные с точки зрения управления объектом конструкции программного обеспечения. На данном этапе могут применяться программные и программно-аппаратные средства (рис. 4.8). 4.2.1. Отладчики Отладчик представляет собой резидентную программу, выполняющую следующие действия: ? запуск программы на выполнение с указанного адреса; ? приостановка выполнения программы по достижении одной из заданных команд или при выполнении заданною условия; Отладка микроконтроллерных систем 111 средства отладки программного обеспечения программные программно- аппаратные отладчики программные модели эмуляторы пзу программаторы пзу рис. 4.8. средства отладки программного обеспечения ? вывод на пульт оператора содержимого требуемой области памяти и/или регистров процессора; ? изменение с пульта оператора содержимого требуемой области памяти и/или регистров процессора. Более сложные отладчики позволяют получать текущую информацию о ходе вычислительного процесса (адреса контрольных точек, содержимое стековой памяти) и контролировать действия выполняемой программы на допустимость. Отметим, что для использования отладчика в МК-системе необходимо наличие средств взаимодействия с оператором (табло, клавиатура и т. п.). 4.2.2. Программные модели Программная модель (симулятор) представляет собой комплекс программ, размещаемый на инструментальной ЭВМ, позволяющий моделировать работу микроконтроллерной системы, для которой производится разработка программного обеспечения, непосредственно на ЭВМ. Для этих целей каждая команда для процессора микроконтроллера заменяется набором команд инструментальной ЭВМ, выполняемых над областью данных, имитирующей пространство памяти микроконтроллерной системы (рис. 4.9). Программа, пройдя стадию трансляции, обработанная редактором связей и превращенная в двоичный или шестнадцатеричный формат, поступает па вход программной модели. В процессе отладки оператор имеет возможность запускать и приостанавливать выполнение программы, наблюдать за содержимым симулируемой памяти, контролировать и задавать состояние периферийных узлов симулируемой микроконтроллерной системы.
Рис. 4.9. Вид экрана программной модели 4.2.3. Эмуляторы ПЗУ Аппаратура эмулятора ПЗУ— наиболее простого средства отладки программного обеспечения (рис. 4.10)— имеет в своем составе блок оперативной памяти, подсоединяемый на место внешней памяти программ отлаживаемой микроконтроллерной системы, устройство управления, а также средства связи с инструментальной ЭВМ. Такой комплекс пригоден для отладки микроконтроллеров с внешней памятью программ. Программное обеспечение инструментальной ЭВМ позволяет заносить в память эмулятора пользовательские программы. Взаимодействуя с программным обеспечением эмулятора ПЗУ, пользователь обладает возможностью указать файл, содержащий исполнимый код программы, размещаемой в эмулируемом ПЗУ. Эмулятор принимает от инструментального ПО ЭВМ адреса, по которым в ОЗУ следует разместить данные, представляющие собой исполнимый код программы, а также сами данные. Установив необходимые сигналы на входах ОЗУ, эмулятор заносит информацию в требуемую ячейку. По окончании размещения программы в ОЗУ эмулятор подключает к нему линии микроконтроллерной системы, позволяя микроконтроллеру работать с хранимой в ОЗУ информацией. Отладка микроконтроллерных систем 113 Инструментальная ЭВМ "Неустройство управления Программирование/работа ША ШД S Выбор кристалла запись 1 ША ША ШД К ШД Выбор кристалла чтение ОЗУ эмулятора Сигналы от целевой контроллерной системы Рис. 4.10. Аппаратура эмулятора ПЗУ При обнаружении ошибок в исполняемой программе производится возврат на предыдущие этапы разработки (анализ предметной области, алгоритмизацию или программирование), после чего программа с внесенными в нее изменениями вновь заносится в оперативную память эмулятора ПЗУ для исполнения. Подобная тактика проведения отладки не требует выполнения циклов стирания предыдущей версии программы из ПЗУ, что сокращает временные затраты и сохраняет ограниченные по числу циклов стирания-записи ресурсы ПЗУ микроконтроллерной системы. Примечания Примечание 1. Следует отметить, что подобная тактика отладки программного обеспечения имеет ограничения на степень локализации ошибки, не позволяя, в частности, определить конкретный оператор, приводящий к неверной работе программы. Примечание 2. Эмулятор ПЗУ позволяет выполнять элементы комплексной отладки аппаратуры и программного обеспечения, поскольку отлаживаемая программа может быть размещена в проектируемой микроконтроллерной системе, при этом выполнение отлаживаемой программы (ввод-вывод через порты, работа с внешними источниками прерываний и пр.) и работа отлаживаемой аппаратуры оказывают взаимное влияние. 4.2.4. Программаторы Как уже отмечалось ранее, завершающим этапом проектирования программного обеспечения, позволяющим осуществить переход к комплексной отладке аппаратуры и программного обеспечения, является размещение разработанной программы в постоянной памяти микроконтроллерпой системы, как и предполагается для конечного изделия.
774 Гпава 4 Приведем классификацию устройств постоянной памяти: ? по отношению к микросхеме микроконтроллера: внешняя и внутренняя; П по количеству допустимых циклов "стирание— программирование": однократно программируемая и многократно программируемая; ? по способу доступа: последовательная и параллельная. Программаторы позволяют выполнять размещение пользовательских программ в различных по приведенной классификации типах постоянной памяти. Таким образом, программатор позволяет, с одной стороны, выполнить подготовку финальной версии ПО, а с другой стороны — провести заключительный этап отладки ПО в реальном аппаратном окружении. Структура и внешний вид программатора показаны на рис. 4.11 и 4.12. инструментальная эвм устройство управления данные усилитель запись данные буфер чтение „ шд 4 > ша выбор кристалла г разрешение выходов W программирующий импульс программируемая микросхема пзу рис. 4.11. структурная схема устройства программатора рис. 4.12. внешний вид программатора Отладка микроконтроллерных систем 115 Взаимодействуя с программным обеспечением программатора, пользователь обладает возможностью указать: ? режим работы программатора: чтение ПЗУ, программирование, верификация; П файл, содержащий исполнимый код программы, размещаемой в программируемом ПЗУ (для режима программирования и верификации), либо файл, в который будет помещаться информация из ПЗУ (для режима чтения); ? алгоритм программирования ПЗУ (щадящий, нормальный и пр.). 11рограмматор принимает от инструментального ПО ЭВМ команды (указания пользователя) и информацию, предназначенную для размещения в памяти ПЗУ. 11апример, в режиме записи программатор выполняет следующую последовательность шагов: 1. Принять от ЭВМ адрес А. 2. Принять от ЭВМ данные Д. Считать ячейку ПЗУ, имеющую адрес А. 4. Если ячейка не пуста— выдать сообщение "микросхема не стерта" и прекратить текущий сеанс программирования. 5. Если ячейка пуста, установить на запись данные Д. 6. Выдать серию программирующих импульсов. 7. Считать байт К из ячейки ПЗУ с адресом А. X. Если К = Д, перейти на шаг 1. •). Если не исчерпано количество попыток программирования ячейки, определяемое алгоритмом записи, вернуться на шаг 6. К). Если количество попыток исчерпано— выдать сообщение "микросхема неисправна" и прекратить текущий сеанс программирования. Занесенная в память микроконтроллерной системы программа исполняется в реальном аппаратном окружении в реальных временных режимах. Несмотря па ю, что, как и в случае эмулятора ПЗУ, возможности отладки нрограммно- ю обеспечения ограничены, возможности комплексной отладки аппаратуры и программного обеспечения с программатором шире, чем с эмулятором ПЗУ, т. к. в данном случае временные характеристики доступа к внешней нами iи соответствуют характеристикам конечного изделия.
116 Гпава 4 4.2.5. Методика отладки программного обеспечения Как следует из статистических данных, на стадиях проектирования программного обеспечения допускается порядка 60% всех ошибок проекта, приходящихся на программное обеспечение, и около 40% ошибок допускается на стадии реализации. При этом в процессе отладки обнаруживаются лишь 40% допущенных ошибок, а 60% допущенных ошибок выявляются в процессе эксплуатации программного комплекса. В соответствии со статистикой, вероятность правильного исправления ошибок со временем снижается, а стоимость данного исправления возрастает [7] (рис. 4.13). стоимость исправления ошибки вероятность правильного исправления ошибки — , ^. время рис. 4.13. основания для раннего обнаружения ошибок В отличие от аппаратного обеспечения, надежность достоверного функционирования которого со временем снижается, ненадежность программного обеспечения является следствием внесения в него на этапе разработки ошибок. По мере их обнаружения и исправления надежность программного обеспечения повышается, однако, как правило, частота отказов в программном обеспечении не снижается до нуля, а колеблется вблизи некоторого установившегося значения, что объясняется теоретической возможностью внесения в программное обеспечение новых ошибок при попытке исправления старых (рис. 4.14). В зависимости от объекта отладки различают синтаксическую и семантическую отладку. Синтаксическая отладка предназначена для выявления в программе конструкций, не соответствующих синтаксису применяемого языка программирования. Вопросы синтаксической отладки изучаются в теории формальных грамматик и теории языков и в настоящее время реализованы в транслирующих системах инструментального программного обеспечения. Целью семантической отладки является выявление и корректировка в программе ошибок, не позволяющих программе выполнять заданную функцию Отладка микроконтроллерных систем 117 преобразования входных данных в выходные. Этап семантической отладки i фоводится по завершению этапа синтаксической отладки. количество отказов время рис. 4.14. зависимость надежности отлаживаемого программного обеспечения от времени Существует несколько способов классификации методов семантической отладки программного обеспечения. 11риведем два способа классификации: П по способу получения результатов выполнения программы: статические методы (не требующие выполнения программы в процессе ее отладки) и динамические методы (требующие выполнения программы в процессе отладки); П по характеру воздействия на исходный текст программы: разрушающие (предполагающие модификацию исходного текста с целью введения отладочных операторов, процедур, макрокоманд и др.) и неразрушающис (не предполагающие модификации исходного текста программы). >ффективность применяемых методов отладки программного обеспечения оценивается по степени отлаженное™ программы и стоимостью обнаружения ошибки. ('тепень отлаженное™ программы в зависимости от специфики задачи, реализуемой отлаживаемой программой, и требований к этой программе может Выражаться в следующем виде: П количество выявленных ошибок в программе; П количество оставшихся ошибок в программе; П среднее количество оставшихся ошибок в программе, приходящихся пл сто операторов исходного текста; П количество пройденных при тестировании ветвей или операторов про- i раммы; i гарантированное время наработки программы па отказ;
118 Гпава 4 ? среднее время наработки программы на отказ; ? число ошибок, обнаруживаемых за постоянное время в режиме эксплуатации программы; ? прочие оценки. Стоимость обнаружения ошибки оценивается на основе затрачиваемых на обнаружение временных, стоимостных, материально-технических ресурсов. Для обнаружения ошибки в программном обеспечении на основе текста программы и представления об алгоритме решения задачи программисту следует выполнить анализ некоторой совокупности объектов программы (переменных, операторов, управляющих и информационных связей между ними), объем которой может быть достаточно велик. Особенности психологического восприятия информации человеком накладывают ограничения на количество одновременно воспринимаемых объектов на уровне 5...9 объектов. Используемые методы отладки служат для автоматизированного выделения необходимой для обнаружения ошибки информации и представления ее в виде, удобном для восприятия человеком. При этом процесс отладки является итерационным, на каждом этапе которого программист воспринимает ограниченный объем информации о программе, позволяющий сделать некоторые частичные обоснованные выводы об ошибке и определить направление сокращения информации на последующих итерациях процесса отладки. Таким образом, задача отладки сводится к построению процедур сокращения объема информации о программе до уровня, на основе которого программист в состоянии сделать обоснованные выводы относительно наличия или отсутствия ошибки в программе, а в случае наличия — о ее характере и местоположении. При этом процедуры должны обеспечивать наибольшую степень отлаженное™ программы и наименьшую стоимость обнаружения ошибки. Исходя из сути семантических ошибок, процесс отладки программ любым методом сводится к следующей схеме: ? формирование гипотезы о наличии в программе ошибки; ? формирование на базе внешнего по отношению к программе источника информации описания функций программы; ? формирование на основе самой программы описания выполняемых ею функций; ? выполнение сравнения двух полученных описаний; ? построение на основе проведенного сравнения заключения об отсутствии или наличии ошибки, ее характере и местонахождении. Таким образом, для поиска семантических ошибок в программе необходимо внешнее по отношению к самой программе описание решаемой задачи. Отладка микроконтроллерных систем 119 Такими описаниями являются: 1. Техническое задание на программу, содержащее требования к функционированию программы (ограничения, описания функций, входные и выходные данные и т. п.). 2. Описание математической модели решаемой задачи (в данном формализованном описании задачи выделены все исследуемые параметры, входные и выходные данные, процессы преобразования информации, критерии оценки результатов и т. п.). 3. Алгоритм решения задачи (описывает метод решения задачи и фиксирует все процессы преобразования входных данных в выходные так, как это должно быть реализовано в Программе). 4. Проект программы (представляет программу в виде блок-схем или другим способом, уточняя описание алгоритма в терминах, близких к конструкциям используемого языка программирования). 5. Данные заказчика (дополнительные уточняющие сведения о решаемой задаче, деталях технического задания и т. п.). Типовыми методами семантической отладки программного обеспечения являются метод тестирования, метод верификации и метод инспекций исходного текста. В общем случае задача эффективного поиска семантических ошибок в программах является алгоритмически неразрешимой, в связи с чем каждый из методов решает практическую задачу — поиск некоторого подмножества семантических ошибок, определяемого критерием отладки данного метода. В табл. 4.1 приведено сравнение указанных методов отладки. Таблица 4.1. Методы отладки программного обеспечения микроконтроллерных систем Параметр для сравнения методов Методы отладки Тестирование Верификация Инспекции текста Критерии отладки Прохождение некоторого множества путей на графе программы Формальное доказательство тождественности преобразования данных заданной функцией и реализующей ее частью программы Поиск в программе ошибок, включенных в каталог Характеристики обнаруживаемых ошибок Позволяет обнаружить ошибки, находящиеся на исследуемых структурах программы Позволяет обнаружить ошибки, находящиеся на верифицируемых участках программы Позволяет обнаружить ошибки, включенные в каталог
120 Гпава 4 Таблица 4.1 (окончание) Параметр для сравнения методов Методы отл адки Тестирование Верификация Инспекции текста Зависимость эффективности от выделяемых ресурсов Увеличение выделяемых на отладку ресурсов позволяет увеличить сложность алгоритмов тестирования (в частности, определяющих выбор входных данных для прохождения различных путей графа) Увеличение выделяемых на отладку ресурсов позволяет увеличить число верифицируемых участков программы Увеличение выделяемых на отладку ресурсов позволяет увеличить число реализуемых алгоритмов поиска ошибок, внесенных в каталог Причины ограничения метода Невозможно построить алгоритм, позволяющий для любой программы найти входные данные, определяющие прохождение всех реализуемых путей графа Невозможно полностью снять ограничения, налагаемые на отлаживаемые верификацией программы Невозможно составить каталог, содержащий все ошибки Стратегия отладки Последовательность обнаружения ошибок должна соответствовать вероятности прохождения ветвей графа программы Последовательность обнаружения ошибок должна соответствовать простоте проведения верификации Последовательность обнаружения ошибок должна соответствовать их вероятности появления в программе На рис. 4.15 показаны подмножества ошибок, обнаруживаемых каждым из методов. Как следует из рисунка, в общем случае в программе останутся не-' обнаруженные ни одним из методов ошибки. Использование нескольких методов совместно повышает отлаженность программы. Множество ошибок Ошибки, обнаруживаемые тестированием Ошибки, обнаруживаемые верификацией Ошибки, обнаруживаемые инспекциями текста Рис. 4.15. Ошибки, обнаруживаемые различными методами Отладка микроконтроллерных систем 121 На рис. 4.16 показана стоимость обнаружения Ошибок данными методами. В зависимости от количества ошибок в программе, эффективным в плане стоимости является один из используемых методов. Кривая, выделенная жирной линией (см. рис. 4.16), показывает эффективную стратегию отладки. Одним из важных условий качественного проектирования и эффективной отладки программного обеспечения является знание разработчиком типовых семантических ошибок, допускаемых при программировании данного класса задач в вычислительной системе данного типа. к Стоимость ¦ ' / / обнаружения 1 / у / / S Тестирование ) Метод у инспекций Количество ошибок Рис. 4.16. Изменение стоимости обнаружения ошибок различными методами в зависимости от количества ошибок 4.2.6. каталог семантических ошибок программирования Анализ семантических ошибок программирования и статистики их появления показывает, что, несмотря на многочисленность факторов, определяющих структуру и свойства программ, существует ограниченное число устойчивых ошибок программирования, присутствующих в большинстве реальных программ. Исходя из сложности поиска и устранения, ошибки в программах следует разделить на три группы (рис. 4.17). Ошибки программирования Локальные Локализованные Глобальные Для поиска и устранения необходим анализ программ в пределах одного оператора Для поиска и устранения необходим анализ в пределах линейного участка программ Для поиска и устранения необходим анализ в пределах всей программы Рис. 4.17. Типы ошибок программирования
122 Гпава 4 Рассмотрим далее наиболее распространенные семантические ошибки на примерах программирования микроконтроллерных систем семейства МК-51, приводя обобщенные ситуации, наиболее ярко иллюстрирующие возможные ошибки. Локальные ошибки 1. Неверный тип или значение константы Такая ошибка связана с величинами программы, которые не меняют своего значения при ее выполнении. Ошибочным может быть тип константы или неверно задано ее значение, отличающееся от обеспечивающего правильную работу (табл. 4.2). Таблица 4.2 Ошибочно Комментарий Правильно add а, #101 Программист предполагал добавить к аккумулятору значение 5ю, записав его в двоичном виде, но не указал постфикс b двоичного операнда, что привело к суммированию с аккумулятором величины 101ю, т. к. по умолчанию при записи операндов предполагается употребление десятичной системы счисления add а, #101Ь mov a,#12h Программист ошибся в величине константы, которую следовало занести в аккумулятор mov а,#11п 2. Неправильный сдвиг регистра Ошибка возникает при выполнении операций сдвига содержимого регистра, в частности, с целью выделения определенных разрядов регистра (табл. 4.3). Таблица 4.3 Ошибочно Комментарий Правильно rl а Программист ошибся в задании направления сдвига аккумулятора rr а 3. Неверное формирование и употребление логических выражений Ошибка появляется в операторах, содержащих логические выражения, и в операторах, непосредственно связанных с этими выражениями (табл. 4.4). Отладка микроконтроллерных систем 123 Таблица 4.4 Ошибочно Комментарий Правильно anl а,г0 Программист ошибся в выборе типа логической операции — наложил маску по функции "И", в то время как по условиям задачи следовало использовать наложение маски по "ИЛИ" ¦ orl а,г0 xrl а,Ь Программист ошибся в выборе операнда, взяв его из регистра-расширителя, в то время как по условиям задачи следовало использовать операнд из порта 1 xrl a,pl 4. Неверный результат арифметических выражений Ошибка представляет собой появление в результате выполнения последовательности арифметических операций результата, отличного от предполагаемого (табл. 4.5). ¦ • Таблица 4.5 Ошибочно Комментарий Правильно add а,#100 Программист корректирует значение аккумулятора. По условию задачи при коррекции следовало учесть перенос в старший разряд, который мог возникнуть перед выполнением данной команды addc а,#100 5. Наличие знаменателей, способных обратиться в нуль Такая ситуация не является непосредственно ошибкой, но может приводить к неправильному функционированию программы, если результат (а при делении на ноль он не определен) используется без надлежащей проверки (табл. 4.6). Таблица 4.6 Ошибочно Комментарий Правильно div ab / Программист не учитывает возможности деления на ноль, рискуя получить неожиданное поведение программы. / Следует сначала проверить делитель (в регистре- расширителе) на равенство нулю и, если это так, перейти к обработке данной ситуации, а в противном случае осуществить деление mov а,Ь jz err div mov a,opl div ab
124 Гпава 4 6. Применение одних синтаксических конструкций вместо других Возникает при замене одних конструкций языка другими без нарушения правил синтаксического построения операторов и программы в целом (табл. 4.7). Таблица 4.7 Ошибочно Комментарий Правильно si: equ 30h si: equ 31h mov pi,si Программист передает в первый порт значение переменной si вместо si. Так как оба этих символических имени определены, транслятор не объявит примененную конструкцию недопустимой si: equ 30h si: equ 31h mov pi,si 7. Неверная размерность данных Ошибка возникает при использовании операндов с размерностью, отличной от предписываемой в данной команде (табл. 4.8). Таблица 4.8 Ошибочно Комментарий Правильно push, dptr Программист предполагает сохранить в стеке значение указателя данных (имеющего размерность 16 бит), чтобы использовать dptr для обращения к новой области данных, а затем восстановить указатель на прежнюю область. Так как в качестве операнда команды push используется 8-битный адрес внутренней памяти данных, то в стек занесется содержимое байта, эквивалентного байту начала области, отведенной под dptr, а именно — содержимого 82h ячейки внутренней памяти данных (т. е. dpi). Старший байт dptr сохранен в стеке не будет, и ошибка проявится в случае изменения старшего байта dptr. Следует сохранять многобайтные конструкции в стеке побайтно push dph push dpi - Локализованные ошибки 1. Неверная передача управления оператором перехода Возникает в операторах условной и/или безусловной передачи управления и в связанных с ними метках. Ошибка приводит к нарушению порядка выполнения операторов. Причиной ошибки могут быть неверно расставленные метки и/или неверно сформированные условия перехода (табл. 4.9). Отладка микроконтроллерных систем 125 Таблица 4.9 Ошибочно Комментарий Правильно inc 1о jnc ml inc hi ml: Программист предполагал увеличить на 1 двухбайтную переменную (hi 1о), не учтя тот факт, что уело- ч вие для выполнения инкрементирования байта hi никогда не будет сформировано, т. к. команда inc не влияет на флаг С. Следует анализировать перенос в старший байт сравнением младшего байта с нулем inc 1о mov а,1о jnz ml inc hi ml: 2. Отсутствие анализа кодов ответа Если при возврате управления из вызванной подпрограммы вызвавшая подпрограмма не анализирует ее код ответа (например, информацию об успешном завершении вычислений в подпрограмме), то при ненормальном завершении вызванной подпрограммы в вызывающей может возникнуть ошибка, т. к. она будет выполняться так же, как и в случае успешного завершения вызванной подпрограммы (табл. 4.10). Таблица 4.10 Ошибочно Комментарий Правильно lcall subr Программист не анализирует результат работы подпрограммы subr, помещаемый ею в аккумулятор, что может привести к ошибке. Перед продолжением вычислений следует проверить, не равно ли нулю значение аккумулятора, и если равно, то перейти к обработке ошибки lcall subr jz err 3. Неверный адрес в дескрипторе Такая ошибка возникает в операторах, формирующих адреса, указатели, ссылки для косвенного обращения к объектам (табл. 4.11). Таблица 4.11 Ошибочно Комментарий Правильно mov dptr,#tbl imp @a+dptr Программист предполагал перейти к началу таблицы tbl, не учтя тот факт, что данная команда использует смещение, хранимое в аккумуляторе, которое к моменту выполнения команды может быть любым. Перед выполнением команды следует обнулить аккумулятор mov dptr,#tbl clr a jmp @a+dptr
126 Гпава 4 4. Ошибки при работе со стековой памятью Ошибки возникают при выполнении операторов, использующих стековую память в качестве одного из операндов (табл. 4.12). К ошибкам данного типа относятся: выход за пределы области стековой памяти (при использовании большего количества обращений на запись в стек, чем это предусмотрено отведенной под него памятью, не занятой программными переменными), а также нарушение структуры стековой памяти (при чтении из стека большего количества информации, чем было в него помещено, при выполнении лишних операторов возврата из подпрограммы и пр.). Таблица 4.12 Ошибочно Комментарий Правильно mov a, opl mov Ь,ор2 lcall divider divider: push a mov a,b jz ex ok: pop a div ab ex: ret Программист использует подпрограмму divider для вычисления частного. В подпрограмме избегается ситуация деления на ноль, для анализа которой используется стек как средство временного хранения операнда А. Однако в случае нулевого делителя обратное чтение из стека, восстанавливающее его баланс, произведено не будет, в результате чего команда ret будет использовать для возврата неверный адрес: вместо (hi addr, Lo addr) наверху стека будет (a hi addr). Для того чтобы исправить ошибку, необходимо усложнить логику переходов к оператору возврата в нормальном случае и в случае нулевого делителя mov a, opl mov b, ор2 lcall divider divider: push a mov a,b jz ex ok: pop a div ab jmp quit ex: pop a quit: ret 5. Сдвиг на единицу при индексировании Сущность ошибки заключается в том, что при использовании индексирующих переменных значение индекса оказывается на единицу больше или меньше граничного значения индекса (табл. 4.13). 6. Бесконечный повтор последовательности операторов Ошибка ведет к прекращению выполнения задачи вследствие невыполнения условий входа из циклически повторяющегося участка (табл. 4.14). Отладка микроконтроллерных систем 127 Таблица 4.13 Ошибочно Комментарий Правильно mov г0,#10 mov dptr,#tbl ml: mov a,rO movx Sdptr,a inc dptr djnz rO,ml Программист предполагал заполнить область tbl значениями 10, 9, 8 2,1,0. Однако переход на метку ml для занесения последнего числа — нуля — выполнен не будет. Следует либо помещать в аккумулятор на единицу меньшее значение, либо использовать другой вариант построения цикла (например: cjne r0, #0FFh, ml) mov r0,#11 mov dptr,#tbl ml: mov a,r0 dec a movx Sdptr,a inc dptr djnz r0,ml Таблица 4.14 Ошибочно Комментарий Правильно mov a,#255 mov r0,#0 m I : dec a inc rO cjne a,0,ml Программист предполагал выполнить численное решение уравнения 255 — X = X методом перебора возможных значений X. В аккумуляторе значения функции (255 — X) изменяются от 255 до нуля, в регистре г0 значения функции X изменяются от нуля до 255. Цикл будет выполняться бесконечно, т. к. значения в а и г0 никогда не совпадут (точное решение уравнения X = 127,5). В данной программе значения будут изменяться так: а: 255, 254 129, 128, 127, 126 0, 255... г0: 0, 1 126, 127, 128, 129, 255, 0... Следует не выявлять равенство значений функций, а выявлять ситуацию, когда изначально большая по значениям функция стала меньше, чем изначально меньшая (иными словами, произошел переход через точку пересечения графиков) mov а,#255 mov г0,#0 ml: dec а inc r0 cjne a,0,m2 m2: jnc ml 7. Ошибки при организации циклов Возникают при неправильной работе с переменными цикла, неправильным формированием условий выхода из цикла, ошибочным включением операторов в тело цикла и т. и. (табл. 4.15).
728 Гпава 4 Таблица 4.15 Ошибочно Комментарий Правильно п: equ 30h Программист предполагал осуществить накоплеп: equ 30h res: equ 31h ние в переменной res суммы (по модулю 256) ряда res: equ 31h mov rl, n неотрицательных чисел n, п — 3, п — 6 и т. д. mov rl, n mov res,#0 Однако не было учтено то, что равенство нулю завершающего слагаемого (по факту которого выmov res,#0 полняется выход из цикла) выполняется не всегда ml: ml: mov a, res (это ряд 8, 5, 2, -1 и ряд 7, 4, 1, -2) — в таких mov a, res add a, rl случаях цикл будет повторен (два или три раза), add a, rl mov res, a выполняя дополнительное суммирование (ряда mov res, a 255, 252, 0, либо ряда 254, 251,..., 2, 255, 252, a, rl mov a, rl ...,0). mov clr с Следует отметить, что в данной программе бескоclr с subb a, #3 нечный повтор участка команд, описанный в п. 6, subb a, #3 mov rl,a не наблюдается. mov rl, a jnz' ml В данном случае следует выявлять отрицательный jnc ml результат, возникающий при подготовке очередного слагаемого, и заканчивать на этом цикл суммирования Глобальные ошибки 1. Ошибки инициализации Ошибка такого типа означает, что перед первым использованием регистров, переменных, областей памяти и других программно-доступных элементов микроконтроллера не выполнялось либо было неверно выполнено занесение начальных значений (табл. 4.16). Таблица 4.16 Ошибочно Комментарий Правильно cnt: equ 31h ptr: equ 32h lcall init ml: movx a,@dptr jnz m2 inc cnt m2: inc dptr inc ptr mov a,ptr cjne a, #5,ml ret Программист предполагал выполнить подсчет количества нулевых значений среди первых пяти элементов таблицы tbl, размещаемой во внешней памяти данных. Настройка указателя данных и счетчика количества нулевых элементов производится в подпрограмме init. Однако программистом не был учтен тот факт, что для пятикратного выполнения цикла необходимо, чтобы инкременти- рующаяся переменная ptr при первом выполнении цикла равнялась нулю cnt: equ 31h ptr: equ 32h lcall init ml: movx a,@dptr jnz m2 inc cnt m2: inc dptr inc ptr mov a,ptr cjne a, #5,ml ret Отладка микроконтроллерных систем 129 Таблица 4.16 (окончание) Ошибочно Комментарий Правильно init: mov cnt,#0 mov dptr,#tbl ret (в противном случае цикл может выполняться от одного до 255 раз в зависимости от значения переменной ptr). В подпрограмме init следует присвоить счетчику проходов нулевое значение init: mov cnt,#0 mov dptr,#tbl mov ptr,#0 ret 2. Наложение переменных и участков программ Ошибка проявляется в ситуации, при которой обращение к некоторой переменной или метке по ее адресу фактически приводит к обращению в участок памяти, отведенный для размещения другой переменной или метки (табл. 4.17). Таблица 4.17 Ошибочно Комментарий Правильно main.asm org 8100h lcall divider include modi.asm include mod2.asm end Hindi. asm • >rq 8200h 11 i vider: mod2.asm org 8200h inn Itipl: Программист использует в программе main.asm два модуля — modi.asm и mod2.asm. Из модуля main вызывается подпрограмма divider, описанная в модуле modi Фактически при вызове подпрограммы divider обращение произойдет к подпрограмме multipl, расположенной в модуле mod2. Причина заключается в указанных адресах расположения модулей в памяти, задаваемых директивой org ассемблера, а также в порядке трансляции модулей, определяемом порядком подключения модулей директивами include. Так как и у модуля modi.asm, и у модуля mod2.asm одинаковые адреса расположения — 8200h, то фактически с адреса 8200h будет расположен оттранслированный код модуля, подключаемого последним, т. е. код модуля mod2. Таким образом, при любых вызовах по общим адресам обращение будет производиться к участку кода последнего модуля. При этом возможно выполнение кодов, соответствующих данным, и прочие ошибки. Следует избегать необоснованного задания абсолютных адресов в подключаемых модулях. mam. asm org 8100h lcall divider include modi.asm include mod2.asm end modi.asm divider: ret mod2.asm multipl: ret Inn 4501
130 Гпава 4 3. Неправильное использование переменных многими модулями Рассматриваемая ошибка связана с взаимодействием подпрограмм и обнаруживается, как правило, на стадиях комплексной отладки. Примером ошибки может являться ситуация, при которой одна подпрограмма искажает значения переменных, используемых другой подпрограммой (табл. 4.18). Таблица 4.18 Ошибочно Комментарий Правильно num: arl: ar2: resl: res2: equ 30h equ 4Oh equ 5Oh equ 61h equ 62h subl: mov rl,#arl clr a ccl: add a,@rl inc rl djnz num,ccl mov resl,a ret sub2: mov rl,#ar2 clr a cc2: add a, @rl inc rl djnz num,cc2 mov res2,a ret main: <num> lcall subl lcall sub2 Программистом реализованы две подпрограммы subl и sub2, выполняющие суммирование num элементов из областей данных arl и аг2 соответственно с сохранением результатов вычислений в переменных resl и res2 соответственно. Программой main осуществляется определение числа num подлежащих суммированию элементов, а затем производится вызов описанных подпрограмм. Ошибка заключается в том, что подпрограмма subl завершит свое выполнение, обнулив переменную-счетчик num, в результате чего подпрограмма sub2 произведет суммирование 256 элементов внутренней памяти данных, расположенных с начала области аг2 (байта 50h) и выше (т. к. внутренняя память данных микроконтроллера имеет объем 256 байт, то адреса, большие 255, будут вычислены по модулю 256). Следует оставить переменную num, указывающую количество обрабатываемых данных, без изменений по ходу выполнения программы, а цикл суммирования организовать на другом счетчике — cnt, в который каждый раз перед выполнением цикла заносится информация о количестве его повторений num: arl: ar2: resl: res2: cnt: subl: ccl: sub2: cc2: equ 30h equ 4Oh equ 50h equ 61h equ 62h equ 63h mov rl,#arl mov cnt, num clr a add a,@rl inc rl djnz cnt,ccl mov resl,a ret mov rl,#ar2 mov cnt,num clr a add a,@rl inc rl dj nz cnt,cc2 mov res2,a ret <num> lcall subl lcall sub2 Отладка микроконтроллерных систем 131 4. Некорректное внесение изменений в программу Ошибка появляется при попытке внесения изменений в отлаживаемую программу без учета возможных влияний этих изменений на оставшуюся нетронутой часть программы (табл. 4.19). Таблица 4.19 Первоначально Ошибочно Правильно yl: equ 30h yl: equ 30h y2: equ 31h y2: equ 31h y3: equ 32h УЗ: equ 32h y4: equ 33h y4: equ 33h xl: equ 30h xl: equ 4Oh xl: equ 4 Oh х2: equ 31h x2: equ 41h x2: equ 4 lh хЗ: equ 32h хЗ: equ 42h хЗ: equ 42h x4: equ 33h x4: equ 43h x4: equ 43h sum: mov rO,#30h sum: mov r0,#30h sum: mov rO,#xl mov rl,#4 mov rl,#4 mov rl,#4 clr a clr a clr a eye: add a,@rO eye: add a,@rO eye: add a,@rO inc rO inc rO inc rO djnz rl,cyc djnz rl,cyc djn2 rl,eye ret ret ret Комментарий 11рограммист в подпрограмме sum предполагал осуществить суммирование четырех переменных xl — х4, расположенных в смежных ячейках памяти, начиная с адреса 30h. 1'азвитие программы потребовало размещения переменных yl — у4 с адреса, первоначально отведенного для переменных xl — х4, так что сами они стали располагаться, начиная с адреса 40h. Этот факт не был учтен в подпрограмме sum, в результате чего она стала осуществлять суммирование переменных yl — у4. ()ледует использовать скорректированные значения адреса. В данном случае — через (.имволическую адресацию переменных
732 Гпава 4 5. Функциональное изменение последовательности выполняемых команд Программа может выполнять действия, не предусмотренные алгоритмом, или не выполнять предусмотренных действий, либо выполнять только предусмотренные, но в неверной последовательности (табл. 4.20). Таблица 4.20 Ошибочно Комментарий Правильно lcall subrl lcall subr2 lcall subr3 lcall subr5 Программист предполагает выполнять 1,2,3 и 5-ю подпрограммы. Однако правильным для реализации задачи является последовательность вызовов 3, 4, 1 и 2-й подпрограмм (был нарушен порядок вызовов и, кроме того, вызывалась лишняя — 5-я и не вызывалась нужная — 4-я подпрограмма) lcall subr3 lcall subr4 lcall subrl lcall subr2 6. Ошибки при обработке прерываний Ошибки данного класса могут состоять как в задании неправильных действий по обработке прерываний, так и в неверном определении места обработки прерываний (в частности, того множества операторов, на котором разрешены прерывания) (табл. 4.21). Таблица 4.21 Ошибочно Комментарий Правильно org 8003h ret Программист завершает обработчик прерывания от внешнего источника 0 оператором ret. Данный оператор не восстанавливает внутренний флаг окончания обработки прерывания в системе управления прерываниями, в связи с чем обработка прерываний данного типа и прерываний с уровнем приоритета, равным и меньшим, чем у данного, будет автоматически заблокирована до момента сброса микроконтроллера. Завершать обработку прерываний следует командой reti org 8003h reti add a,lo mov lo,a mov a,hi addc a,#0 mov hi,a Программист в фоновой программе выполняет сложение С участием двухбайтной переменной (hi lo) с использованием для коррекции старшего байта команды addc. Обработчик прерывания int sub в числе прочих действий выполняет умножение переменных inl и in2. В случае переключения на обработчик прерывания на участке между командами фоновой программы add а, 1о и addc а, #0 и наличии переноса из младшего байта в старший, результат сложения будет неверным, т. к. команда add a,lo mov lo,a mov a,hi addc a,#0 mov hi,a Отладка микроконтроллерных систем 133 Таблица 4.21 (окончание) Ошибочно Комментарий Правильно int _sub: умножения обнуляет бит С слова состояния программы, int sub: push а в результате чего команда addc не сможет учесть предшеpush а push b ствующее значение бита С. push b Следует сохранять (как правило, в стековой памяти) соpush psw держимое слова состояния программы фонового процесса a, inl при входе в обработчик прерывания, способного своими mov a,inl mov вычислениями влиять на значение слова состояния проmov b, in2 граммы, а при выходе из обработчика — восстанавливать mov b,in2 mul ab значение слова состояния, существовавшее на момент переключения на обработчик прерывания mul ab mov res, a mov res,a pop b pop psw pop a pop b ret: . pop a reti - — - Программист использует переменную flags, в которой расположены биты-признаки ряда программных ситуаций. clr ea mov a,flags Ошибка в программе заключается в том, что, если прерыmov a,flags clr acc. 3 вание, обрабатываемое подпрограммой int_sub возникclr acc.3 mov flags,a нет в момент после выполнения команды clr асс.З, но mov flags,a перед выполнением команды mov flags, а, и при этом в setb ea байте flags третий бит был установлен в "1", то его обнуление в байте flags выполнено не будет, т. к. выполняюLnt_ sub: щийся обработчик прочтет в аккумулятор необновленное int_sub: - значение байта flags. mov a,flags Сохранение аккумулятора в стеке (как это сделано в преmov a,flags clr acc. 4 дыдущем случае) в данной ситуации не позволит подпроclr acc.4 mov flags,a грамме intsub обнулить установленный четвертый бит mov flags,a (т. к. в восстановленном из стека аккумуляторе будет стаreti рое значение четвертого бита). reti Следует в подобных ситуациях запрещать на время прохождения критического участка прерывания, конфликтующие по ресурсам с фоновым заданием 7. Непредусмотренные исключительные ситуации (>шибки данного вида возникают, когда характеристики обрабатываемой программой входной информации выходят за допустимые алгоритмом пре- цслы, и обработка подобных ситуаций в программе не была предусмотрена (габл. 4.22).
734 Гпава 4 Таблица 4.22 Ошибочно Комментарий Правильно receive: jnb гi,receive mov a,sbuf clr ri ret mov rl,#3 ml: lcall receive add a,res mov res,a djnz rl,ml Программист при возникновении некоторых событий (например, приход подтверждающего сигнала) предполагает осуществить прием трех байт информации через последовательный порт микроконтроллера, реализуя обмен путем опроса флага готовности приемника. При аварии источника данных, произошедшей перед окончанием приема трех байт, программа будет находиться в состоянии ожидания готовности приемопередатчика, не производя действий по решению основной задачи. Следует предусмотреть возможность принудительного выхода из цикла приема в случае превышения некоторого времени ожидания. В данном примере с помощью таймера О реализуется подсчет временных меток с инкрементированием счетчика t_0. При каждом входе в подпрограмму receive значение счетчика обнуляется, и счет времени начинается сначала. В процессе ожидания данных, поступающих в приемник микроконтроллера от источника, подпрограмма receive анализирует истечение интервала тайм-аута путем сравнения накопленного в переменной t_0 значения с максимально возможным интервалом ожидания time. При превышении допустимого времени происходит принудительный выход из подпрограммы с фиксацией ошибки в переменной err для реализации дальнейших действий по обработке аварийной ситуации org OOObh inc t_0 reti receive: mov t_0,#0 mov err,#0 wt: mov a,t_0 cjne a,#time,ll 11: jc ok mov err,#1 jmp ex ok: jnb ri,wt mov a,sbuf clr ri ex: ret ml mov rl,#3 lcall receive add a,res mov res,a mov a,err jnz to_error djnz rl,ml Примечания Примечание 1. Таймер 0 и система прерываний микроконтроллера должны быть соответствующим образом настроены. Примечание 2. В ряде моделей микроконтроллеров подобные функции выполняет специальное устройство — сторожевой таймер. Отладка микроконтроллерных систем 135 8. Ошибки времени Выделяются две группы таких ошибок. К первой группе «относятся ошибки, обусловленные неправильным квантованием времени, проявляющиеся в том, что для выполнения некоторого участка программы отводцится недостаточно длительный отрезок. Ко второй группе относятся ошибки, обусловленные неправильным расчетом времени выполнения отдельных «процессов (связанные, например, с неучетом частоты вызовов процессов и времени их выполнения) (табл. 4.23). Таблица 4.23 Ошибочно Комментарий Правильно chan: equ 30h res: equ 31h mov ODAh, #0 mov a,0D8h anl a,#0F8h orl a,chan mov 0D8h,a mov res,0D9h Программист осуществляет чтение значения сигнала со встроенного аналого- цифрового преобразователя МК SAB80C515 в переменную res, предварительно настраивая диапазон входного сигнала и осуществляя переключение аналогового канала. Ошибка заключается в том, что после изменения параметров работы АЦП и перед чтением новых значений необходимо выдержать паузу, во время которой АЦП аппаратно осуществляет перепрограммирование встроенного ЦАП, переключение каналов и собственно аналого-цифровое преобразование. В противном случае будут считаны неверные показания. При полной перенастройке АЦП максимальное время преобразования не превышает 29 мкс (в случае использования микроконтроллера с тактовой частотой в 12 МГц). Следует выдержать паузу указанной длительности либо осуществлять работу по флагу готовности C;han: equ 30h tees: equ 31h mov ODAh, #0 mov a, 0D8h anl a,#0F8h orl a,chan mov 0D8h,a lcall pause mov res,0D9h ~^ — — Reuse: mov r0,#10 Wait: nop djnz r0,wait ret mov a,#l mov r0,#8 nil : mov pi,a rl a djnz r0,ml Программист предполагал осуществить выдачу на разряды первого порта последовательности "бегущая единица", предназначенной для внешнего исполнительного устройства, работающего на частоте около 1 кГц. Ошибка заключается в неучете скорости выполнения операций микроконтроллером. Команды mov и rl выполняются за 1 машинный цикл, команда djnz — mov a,#1 mov r0,#8 %1: mov pi,a rl a lcall pause djnz r0,ml
736 Гпава 4 Таблица 4.23 (окончание) Ошибочно Комментарий Правильно за 2 цикла. При тактовой частоте микроконтроллера в 12 МГц длительность удержания разряда порта составит 4 мкс, что недопустимо для внешнего устройства. Следует ввести программную задержку между переключениями разрядов порта в пределах 1—1,2 мс pause: mov cntl,#5 pal: mov cnt2,#100 pa2: djnz cnt2,pa2 djnz cnt1,pal ret 4.3. Средства и методы комплексной отладки микроконтроллерных систем К средствам отладки, позволяющим проводить совместную отладку аппара туры и программного обеспечения, относятся логические анализаторы, внутрисхемные эмуляторы и интегрированные среды отладки. Все эти средства являются сложными программно-аппаратными комплексами, решающими достаточно широкий круг задач отладки. 4.3.1. Логические анализаторы Во многих случаях для анализа работы вычислительной системы необходимо зафиксировать изменяющийся с высокой частотой информационный поток нескольких линий на протяжении нескольких циклов работы вычислительной системы. Для этих целей применяются логические анализаторы. Типовая структура данного средства отладки показана на рис. 4.18, а его внешний вид — на рис. 4.19. При использовании логического анализатора его входы подключают к контролируемым точкам вычислительной системы и проводят его программирование. При программировании логического анализатора задаются: ? метод формирования тактовых импульсов регистрации событий во внутренней памяти анализатора (от внутреннего генератора, от внешней цепи, коэффициент деления частоты тактовых импульсов); ? признаки событий, формирование которых активизирует процесс фиксации состояний отлаживаемой вычислительной системы в памяти анализатора (значения или диапазон значений контролируемых шин, тип события — запускающее процесс регистрации или останавливающее его); ? количество предзапусков логического анализатора (указывает-, какое количество регистрационных отсчетов анализатора, предшествующих появлению запускающих событий, следует сохранить в памяти); Отладка микроконтроллерных систем 137 Контрольные точки схемы. с==сн Усилитель Внешние синхроимпульсы Ad ШД вход ША ОЗУ ШД выход Компаратор Заданные события Наличие . заданных событий МПС Адрес ОЗУ Формирователь адреса Делитель Такты Режим работы Дисплей Клавиатура 7\ Внутренний генератор Рис. 4.18. Структурная схема логического анализатора Рис. 4.19. Внешний вид логического анализатора Г) количество постзапусков логического анализатора (указывает, какое количество регистрационных отсчетов анализатора, следующих за появлением останавливающих событий, следует сохранить в памяти). I Скопленные измерения могут быть представлены различными способами: П в виде графа переходов в пространстве состояний; П в виде временных диаграмм;
138 Гпава 4 ? в виде цифровых кодов; ? в виде дизассемблированных мнемоник команд шины данных. Логические анализаторы позволяют подсчитывать количество событий заданного типа, произошедших за интервал измерения, определять временные параметры сигналов, фиксировать и отображать помехи (импульсы с длительностью менее минимально допустимой, заданной пользователем) в контролируемых цепях. Используемые в настоящее время логические анализаторы позволяют контролировать одновременно до 150 точек схемы, обладают емкостью памяти Рис. 4.20. Пример блок-схемы отлаживаемой программы Отладка микроконтроллерных систем 139 до 32 Мбайт на канал и позволяют фиксировать состояние контрольных точек с периодом от единиц секунд до долей наносекунд. Популярны логические анализаторы фирмы Hewlett-Packard. Рассмотрим методику использования логического анализатора при отладке на реальной аппаратуре программы, схема работы которой показана на рис. 4.20. Допустим, исследователя интересует решение задачи в момент передачи управления от команды "А5" к команде "А6" после двух повторений внешнего цикла "А1"—"А9" и восьми повторений внутреннего цикла "А2"—"А7". Для запуска в этой области программы необходимо сформировать следующее условие запуска: ? обнаружить "А1" 2 раза; ? обнаружить "А2" 8 раз; ? обнаружить последовательность адресов "А5" и "А6", идущих подряд. 4.3.2. Внутрисхемные эмуляторы Одним из главных обстоятельств, затрудняющих отладку микроконтроллер- пых систем, является недоступность внутренних элементов микросхемы микроконтроллера для прямого контроля и воздействий во время работы программы. Контроль и воздействия можно осуществлять лишь косвенно, путем передачи информации от внутренних элементов схемы во внешнюю среду (при контроле) и извне во внутренние элементы (при управлении) с помощью специальных подпрограмм по факту появления некоторых событий. Вследствие сложности микроконтроллера, а также в связи с необходимостью такой реализации подпрограмм, при которой не нарушается ход основного вычислительного процесса, для реализации указанных действий требуются значительные временные и программно-аппаратные ресурсы системы. Для преодоления указанных трудностей применяются внутрисхемные эмуляторы. 11ри использовании внутрисхемного эмулятора микроконтроллер извлекается из панели своего разъема и на его место с помощью кабеля подсоединяется аппаратура внутрисхемного эмулятора. Внутрисхемный эмулятор полностью заменяет микроконтроллер отлаживаемой системы, сохраняя при этом доступ пользователя ко всей информации о внутреннем состоянии контроллера и его памяти посредством инструментальной ПЭВМ (рис. 4.21). Внешний вид платы микроконтроллерной системы с извлеченным МК и подсоединенным через его разъем внутрисхемным эмулятором показан на рис. 4.22. Существуют варианты исполнений эмулятора в виде платы расширения инструментальной ЭВМ.
ША ШД ШУ Буфер Контроллер шины Управление режимом эмуляции 4> Логика прерываний эмуляции Память логических последовательностей (ОЗУ трассы) -*• Разрабатываемая система Порты t целевого МК Отладочные ^ порты Устройство связи с инструментальной ЭВМ Внутрисхемный эмулятор Таймер временных меток ПЗУ управляющих программ Память микроконтроллера отладочный микроконтроллер Инструментальная ЭВМ Рис. 4.21. Устройство внутрисхемного эмулятора Рис. 4.22. Внешний вид внутрисхемного эмулятора Отладка микроконтроллерных систем 141 Внутрисхемный эмулятор выполняет следующие функции: ? управление ходом вычислительного процесса (выполнение инициализации программно-доступных элементов микроконтроллера, исполнение программы по шагам, по условиям и т. п.); ? сбор информации о ходе вычислительного процесса и ее передача в инструментальную ЭВМ для последующего анализа. Внутрисхемный эмулятор включает в себя следующие блоки: ? функциональный аналог замещаемого МК с дополнительными портами для служебных обращений к внутренним ресурсам МК; ? устройства, повторяющие отдельные внутренние узлы МК, что делает их доступными для управления и контроля со стороны инструментальной ЭВМ; ? схемы распознавания событий в системе; ? память логических последовательностей состояний в системе; ? средства связи с инструментальной ЭВМ. Внутрисхемный эмулятор может работать в следующих трех режимах: ? опроса; ? пошагового исполнения; _ _ ? эмуляции исполнения программы в реальном времени. В режиме опроса отлаживаемая программа остановлена, и оператору системы предоставляется возможность, применяя инструментальную ЭВМ, считать состояние программно-доступных элементов микроконтроллера и занести в них новую информацию. В режиме пошагового выполнения исполняется одна команда отлаживаемой программы, после чего осуществляется переход в режим опроса, при этом происходит передача информации о состоянии вычислительного процесса в инструментальную ЭВМ. Режим пошагового исполнения позволяет проводить отладку выполняемой программы с учетом ее текущего состояния и отлаживать аппаратуру разрабатываемой системы. Недостатком режима является то, что отлаживаемый комплекс не функционирует в реальном времени, г. к. обмен внутрисхемного эмулятора с инструментальной ЭВМ требует дополнительных временных затрат, в связи с чем ошибки, связанные с нарушением временных соотношений между электрическими сигналами (входными, выходными, входными и выходными) могут остаться невыявленными. Для исследования разрабатываемого комплекса в реальном времени применяется третий режим работы внутрисхемного эмулятора, в котором он выполняет программу, не выполняя обмена данными с инструментальной ЭВМ.
142 Гпава 4 Выход из режима осуществляется при достижении заданных событий, аналогичных управляющим событиям логического анализатора (выполнение заданного числа шагов, появление заданной комбинации на шинах системы, появление заданной последовательности таких комбинаций). Так как процесс обнаружения заданных событий осуществляется аппаратными средствами внутрисхемного эмулятора, то скорость этого процесса достаточна для сохранения режима реального времени. Однако сервисные возможности режима невелики. Интерфейс программного обеспечения инструментальной ЭВМ, предназначенного для работы с внутрисхемным эмулятором, близок к интерфейсу программных моделей микроконтроллерных систем (см. рис. 4.9). Внутрисхемные эмуляторы имеют два типа погрешностей: электрофизического замещения (связана с наличием буферов между имитирующим контроллером и магистралью отлаживаемой системы) и управления (связана с необходимостью при возврате в режим опроса выполнения служебных процедур, во время исполнения которых возможны появления внешних прерываний, изменяющих ход выполнения служебных процедур и т. п.). Внутрисхемные эмуляторы выпускаются рядом фирм, в частности Hitex, Nohau и др. 4.3.3. Интегрированные системы разработки Интегрированные системы разработки— программно-аппаратные системы, предоставляющие возможность проведения программного проекта по всем стадиям разработки — от создания исходного текста программы до отладки программно-аппаратного комплекса. В состав программного обеспечения интегрированных сред (рис. 4.23) входят: ? редактор исходных текстов; ? транслятор; ? программная модель; ? размещающая программа; ? средства отладки программного обеспечения в реальных условиях эксплуатации; ? справочная подсистема. С применением интегрированных сред возможно проведение интерактивной отладки программы, функционирующей на микроконтроллерной системе. При этом на инструментальной ЭВМ формируется управляющее воздейст- Отладка микроконтроллерных систем 143 вие, выдаваемое в микроконтроллер по ходу выполнения пользовательской программы. Использование внешних воздействий позволяет исследовать поведение программно-аппаратного комплекса без внесения каких-либо изменений в текст отлаживаемой программы (задание новых значений при инициализации, запуск управляющих подпрограмм в иной последовательности и т. п.). Редактор Транслятор ~t Размещающая программа Листинг ошибок Память МК Память модели МК Средства отладки и визуализации Справочная подсистема Рис. 4.23. Структура интегрированных средств отладки В состав аппаратного обеспечения интегрированных систем разработки входят так называемые отладочные платы, представляющие собой аппаратные платформы типовой конфигурации (см. главу 3), в ряде случаев дополненные набором периферийных элементов (клавиатура, индикаторы и т. п.) и допускающие возможность установки пользовательских подсистем (устройств сопряжения и т. п.). Интегрированная система разработки позволяет провести полный цикл проектирования системы, в результате которого формируется целевая микроконтроллерная система, способная функционировать в автономном режиме. Интегрированные системы разработки некоторых фирм (в частности, система Visual Micro Lab) позволяют проводить моделирование типовых элементов систем управления (логических элементов, индикаторов, пассивных компонентов), подключенных к микроконтроллеру, тем самым повышая надежность разрабатываемого программного обеспечения. В некоторых интегрированных системах (например, DavE— Digital Application Engineer) справочная подсистема обладает возможностью по командам пользователя, специфицирующим типовые режимы работы блоков микроконтроллера, автоматически генерировать фрагменты текста разрабатываемого программного обеспечения. Следует отметить, что дополнительные сервисные режимы, несмотря на несомненное удобство и привлекательность, носят вспомогательный характер и
предназначены скорее для начинающих разработчиков. Профессиональная разработка МК-систем предполагает наличие глубоких знаний и практических навыков, получить которые можно лишь при кропотливом самостоятельном освоении предметной области. Интегрированные среды разработки выпускаются фирмами Keil, Tasking Software и рядом других. Примечание В приложении 4 приведено описание применяемой в лабораторном практикуме интегрированной среды отладки Shell51. ГЛАВА 5 Диагностирование микроконтроллерных систем 2? 5.1. Основные понятия и определения I !од диагностированием понимается процесс поиска и обнаружения в разработанной и отлаженной системе ошибок, вызванных неисправностями в аппаратном обеспечении. Как уже отмечалось ранее, ненадежность программного обеспечения микроконтроллерных систем объясняется наличием в нем ошибок, внесенных на стадии проектирования. При проведении отладки надежность программного обеспечения повышается. Аппаратура микроконтроллерных систем имеет иную зависимость частоты отказов от времени (рис. 5.1). Время Рис. 5.1. Зависимость надежности аппаратуры микроконтроллерных систем от времени Участок 1 графика характеризуется достаточно высокой частотой отказов, вызванных дефектами производства (некачественное выполнение герметизации корпусов интегральных схем, ненадежность внешних соединений и т. п.). Период приработки длительностью около 100 часов, как правило, вызывает
146 Гпава 5 отказы в критичных элементах, которые успешно прошли стадию выбраковки на производстве. Участок 2 характеризуется относительно малой частотой отказов, вызванных естественным износом элементов. Протяженность участка определяется средним сроком службы изделия. Участок 3 графика характеризуется ростом частоты отказов. Электрические нагрузки на электронные элементы в течение срока службы увеличивают степень износа, а вместе с этим и вероятность отказа изделия. Электрические перегрузки ускоряют темпы износа элемента. Подверженность элемента вибрациям в течение срока службы увеличивает вероятность появления отказов в соединениях. На этапе эксплуатации микроконтроллерных систем для обеспечения возможности реализации ими целевой функции необходимо выявлять факты ошибок в их работе, определять место возникновения ошибки и ее причину и производить ликвидацию ошибки и, возможно, ее последствий. Часто повторяющиеся ошибки, вызванные недостаточно качественным проектированием системы, целесообразно устранять путем перепроектирования системы или ее отдельных узлов. Различают функциональное и тестовое диагностирование систем. Функциональное диагностирование осуществляется в процессе использования системы по ее целевому назначению, при этом на входы системы подаются лишь рабочие воздействия. Тестовое диагностирование проводится путем перевода системы в особый режим, при этом на входы системы подаются специальные тестовые воздействия. На рис. 5.2 и 5.3 показаны схемы подготовки и проведения функционального и тестового диагностирования. Модель функционирования микроконтроллерной системы, сформированная на этапе проектирования на основе технического задания, математической модели решаемой задачи, алгоритма решения задачи, принципиальных схем аппаратного обеспечения, исходных текстов программ и собственных представлений разработчика о системе, служит основой для подготовки и проведения диагностирования. На базе модели функционирования строится модель возможных неисправностей микроконтроллерной системы, отражающая причины неверного функционирования системы и способы их проявления. Для поступающих на систему входных воздействий (рабочих в случае функционального диагностирования и синтетических, построенных на базе указанных моделей в случае тестового диагностирования) строятся эталонные реакции системы, сравниваемые с регистрируемыми выходными реакциями. Диагностирование микроконтроллерных систем 147 Модель функционирования микроконтроллерной системы Построение модели неисправностей микроконтроллерной системы Рабочие входные воздействия Построение эталонных выходных реакций Микроконтроллерная система Регистрация выходных реакций Сравнение реакций, анализ результатов, определение факта наличия ошибки и места ее возникновения Рис. 5.2. Схема подготовки и проведения функционального диагностирования Модель функционирования микроконтроллерной системы I Построение модели неисправностей м и кроконтроллерной системы Подготовка входных воздействий Подготовка эталонных выходных реакций Генерация входных воздействий Микроконтроллерная система Регистрация выходных реакций Сравнение реакций, анализ результатов, определение факта наличия ошибки и места ее возникновения Рис. 5.3. Схема подготовки и проведения тестового диагностирования l lo результатам сравнения и последующего анализа, проводимого на базе модели функционирования микроконтроллерной системы и модели неисправностей, определяется факт отсутствия или наличия ошибок в работе системы и место их возникновения.
148 Гпава 5 5.2. Средства диагностирования микроконтроллерных систем Для проведения диагностирования применяются программные, аппаратные и программно-аппаратные средства (рис. 5.4). Программные тест исполнительного блока МК - T тест ПЗУ-Т тест ОЗУ-Т тест периферийных узлов МК - T коды с обнаружением ошибок - Т,Ф Средства диагностирования Аппаратные общетехнические средства - Т,Ф логические пробники - Т,Ф логические пульсаторы - T индикаторы тока ¦ "1 Т,Ф средства тестирования нагрузками - Т,Ф _| сигнатурные анализаторы - Т Программно- аппаратные системы Н дублирования -Т устройства хранения тестов/эталонов - Т контролирующие I автоматы - Т,Ф Рис. 5.4. Средства диагностирования микроконтроллерных систем Средства, применяемые для проведения функционального диагностирования, помечены на рисунке индексом "Ф", для тестового — индексом "Т". В следующих разделах рассмотрим указанные средства более подробно. 5.2.1. Программные средства диагностирования Программные средства диагностирования, являющиеся частью системного ПО (см. разд. 3.6), представляют собой резидентные программы. При проведении диагностирования программными средствами следует иметь в виду, что достоверность диагностирования зависит от исправности некоторой части микроконтроллерной системы, достаточной для проведения диагностирования. Тест исполнительного блока микроконтроллера предназначен для выявления неисправностей механизмов управления и обработки данных блока выполне- Диагностирование микроконтроллерных систем 149 ния команд. Тест реализуется путем исполнения команд с заранее определенным результатом их выполнения и последующего сравнения вычисленных результатов с эталонными. В качестве результатов в зависимости от типа проверяемой команды могут выступать содержимое ячейки памяти, флаги слова состояния программы, адрес перехода и т. п. Такие тесты могут состоять из детерминированной последовательности команд либо представлять собой псевдослучайные генерируемые последовательности. Одной из проблем при организации тестирования данного блока является проблема выявления чувствительности к определенным последовательностям команд. Тесты памяти (ПЗУ и ОЗУ) предназначены для выявления факта искажения хранимой в памяти информации по причине неисправностей, связанных с дефектами физической структуры элементов памяти (пробои на шины питания, взаимное влияние ячеек и др.). Тест ПЗУ реализуется с помощью определения контрольной суммы его содержимого и ее последующего сравнения с эталонной контрольной суммой, также хранящейся в ПЗУ, полученной перед занесением финальной версии программного обеспечения в память программ. В простейшем случае контрольная сумма может представлять собой сумму по модулю 256 всех байтов памяти программ, расположенных в области памяти, подлежащей контролю. Тест оперативной памяти (ОЗУ) реализуется с помощью записи в каждую из подлежащих контролю ячеек тестового слова, последующего чтения содержимого каждой ячейки и сравнения ее фактического содержимого и значения занесенного в нее тестового слова. В качестве тестирующих комбинаций могут выступать: произвольные данные, шахматный код (чередование в записываемом слове нулей и единиц, например, для ячеек емкостью один байт это коды 55]б и AAi6). коды "бегущий нуль" и "бегущая единица", при проведении которых для ячейки шириной m бит производится m циклов "запись- чтение" (например, для ячейки емкостью один байт тест "бегущий нуль" представляет собой восемь кодов: 11111110, 11111101, 11111011, 10111111, 01111111). Для тестирования ОЗУ применяются и другие, более сложно сформированные последовательности. Гесты периферийных узлов предназначены для выявления неисправностей и специализированных модулях микроконтроллера: портах, аналого-цифровых преобразователях (АЦП) и др. Такие тесты, как правило, требуют использования дополнительных аппаратных средств для фиксации генерируемых тестом выходных сигналов микроконтроллера либо для подачи на него эталонных воздействий. При тестировании портов ввода-вывода используются коммутаторы, позволяющие подать на разряды портов, использующиеся для ввода информации, сигналы с разрядов портов, использующихся для вывода информации. При тестировании аналого-цифровых преобразователей применяются источники опорных напряжений.
150 Гпава 5 Коды с обнаружением ошибок предназначены для повышения надежности функционирования как микроконтроллерной системы в целом, так и ее отдельных частей, например, последовательных каналов связи и оперативной памяти. Основная идея использования таких кодов состоит во введении информационной избыточности, заключающейся в применении дополнительных служебных разрядов, содержание которых зависит от информационных. При записи кода с обнаружением ошибок служебные разряды формируются по определенным правилам как функция от информационных разрядов. При чтении кода происходит повторное формирование служебных разрядов и их сравнение со сформированными ранее. При использовании достаточной информационной избыточности возможно не только обнаружение факта ошибки, но и определение ее местоположения и исправления. В качестве примера использования кода с обнаружением ошибок в микроконтроллерных системах приведем второй и третий режимы работы последовательного порта микроконтроллера МК-51, при использовании которых в дополнение к восьми информационным разрядам передается девятый бит, которому может быть программно поставлено в соответствие значение бита четности количества единиц в передаваемой посылке. I 5.2.2. Аппаратные средства диагностирования Аппаратные средства диагностирования представляют собой технические устройства, позволяющие проводить поиск отказов в вычислительной системе. Общетехнические средства, логические пробники, логические пульсаторы и индикаторы тока, а также способы их применения уже были рассмотрены ранее в разд. 4.1.1—4.1.4. В дополнение необходимо отметить их существенное значение при невозможности применения более удобных в использовании программных средств диагностирования (например, по причине неисправностей ядра микроконтроллерной системы). Указанные аппаратные средства диагностирования позволяют определить параметры питающего напряжения, наличие импульсов системной синхронизации, выдачу сигналов на шины адреса, данных и управления микроконтроллера и диапазон изменения значений этих сигналов, что позволяет сделать некоторые предварительные заключения о причинах неработоспособности ядра системы (неисправности блока питания, блока системной синхронизации, отказ микроконтроллера, искажение программы в памяти и переход в непредусмотренную область памяти и т. п.). Средства тестирования с помощью нагрузок предназначены для преднамеренного изменения параметров окружающей среды с целью анализа влияния этого изменения на работу микроконтроллерной системы. Применяются три Диагностирование микроконтроллерных систем 151 разновидности такого тестирования — механические, температурные и электрические нагрузки. Использование механических нагрузок заключается в оказании на аппаратуру системы воздействий вибрации и деформации (как правило, деформации кручения). Нагрузки такого типа позволяют определить неисправности соединительных контактов и проводников (в частности, тонкий разрыв печатного проводника при скручивании платы исчезает, восстанавливая утраченное соединение). Использование температурных нагрузок заключается в оказании на всю аппаратуру системы либо на ее некоторую часть воздействий повышенных или пониженных температур относительно рабочей температуры эксплуатации изделия. Методика основана на том, что при выработке ресурса у ряда электронных элементов системы сужается диапазон температур, в котором их функционирование является достоверным. Штатное незначительное повышение температуры окружающей среды вследствие прогрева оборудования приводит к отказу таких элементов. Для выявления подобных ситуаций используется искусственное повышение и/или понижение температуры печатной платы, ее отдельных участков, а затем и элементов либо бесконтактным способом (посредством воздухонагнетающих устройств), либо контактным способом (посредством нагреваемых или охлаждаемых пластин). Использование электрических нагрузок заключается в изменении значений параметров подаваемых на систему электрических сигналов. Данный способ позволяет определить рабочий диапазон значений параметров сигналов, а также выявить элементы, работающие на границе допустимого диапазона. Метод, в частности, позволяет определить элементы, функционирующие неверно в связи с недостаточно высоким уровнем напряжения питания. В заключение рассмотрим проведение диагностирования посредством сигнатурных анализаторов. Сигнатурный анализ основан на преобразовании последовательности двоичных сигналов в число (сигнатуру), существенно зависящее от исходной последовательности. Существует несколько способов получения сигнатур: подсчет количества фронтов и срезов в сигнале, подсчет количества единиц, вычисление контрольной суммы, использование сдвиговых регистров с обратными связями и т. п. 1'ассмотрим последний способ как наиболее эффективный. 11ример сдвигового регистра с обратными связями показан на рис. 5.5. Входная последовательность двоичных сигналов объединяется с помощью ячейки "исключающее ИЛИ" с определи .imh разрядами сдвигового регистра п поступает на его вход в следующем такте, сдвигая накопленное значение
752 Гпава 5 на один разряд в сторону старших разрядов. Таким образом, входной двоичный поток делится на порождающий полином с формированием в регистре остатка. Для достаточно длинной входной последовательности остаток будет являться псевдослучайной величиной, неизменной для данной последовательности и данного порождающего полинома. Благодаря запоминающим элементам регистра и обратной связи схема учитывает предыдущие состояния; значительная разрядность регистра и правильно подобранный характеристический полином обеспечивают уникальность сигнатур и, следовательно, высокую достоверность обнаружения искажений входной последовательности. =1 Входная последовательность 1 7 9 12 16 Такты сдвига Рис. 5.5. Устройство регистра с обратной связью Структурная схема сигнатурного анализатора, использующего сдвиговый регистр с обратной связью, показана на рис. 5.6. В состав системы входит устройство управления, формирующее на основе сигналов "Пуск" и "Стоп" временное окно накопления сигнатуры, а также устройство индикации для визуального представления сигнатуры. Внешний вид сигнатурного анализатора приведен на рис. 5.7. "Пуск" "Стоп" Такты Разрешение работы Устройство управления Входная последовательность Входной Схема Сдвиговый регистр искл. буфер ИЛИ i—> Импульс сдвига Обновление индикации Сигнатура Схема индикации Рис. 5.6. Структура сигнатурного анализатора Диагностирование микроконтроллерных систем 153 Рис. 5.7. Внешний вид сигнатурного анализатора В качестве основы для тестовой программы может выступать как специально разработанное программное обеспечение, так и рабочая программа, в достаточной мере использующая устройства микроконтроллерной системы. Сигналы "Пуск" и "Стоп" формируются либо средствами тестовой программы при начале/окончании теста, либо аппаратными средствами при наличии на шине адреса соответствующих комбинаций сигналов. На заведомо исправной микроконтроллерной системе в выбранных контрольных точках производится фиксация эталонных сигнатур. При диагностировании системы используется та же тестовая последовательность и то же временное окно, что и в процессе формирования эталонных сигнатур. Неисправность заключается в участке, для которого все входные сигнатуры совпадают с эталонными, а хотя бы одна выходная сигнатура не совпадает. 5.2.3. Программно-аппаратные средства диагностирования К программно-аппаратным средствам диагностирования относятся дублирующие системы, устройства хранения тестов-эталонов, контролирующие автоматы. Обобщенная структура систем дублирования показана на рис. 5.8. Входные сигналы X поступают на эталонную (МКСэт) и диагностируемую (МКСд) системы. Выходные сигналы УЭт и Уд поступают на вход анализатора А, определяющего соответствие выходных сигналов диагностируемой и эталонной систем. Поскольку входные сигналы обеих систем одинаковы, а система МКСуг считается заведомо исправной, факт несовпадения Уд с Ууг свидетельствует о неисправности диагностируемой системы.
154 Гпава 5 МКСд Уд "Ошибка" > МКС, Рис. 5.8. Структура системы дублирования В связи с тем, что эксплуатация резервированных микроконтроллерных систем в большинстве случаев неоправданна (в связи с ухудшением массогаба- ритных, стоимостных и других характеристик), системы дублирования применяются лишь при проведении тестового диагностирования. Одним из вариантов построения системы дублирования является применение специального запоминающего устройства для хранения неизбыточных тестовых последовательностей. Структура подобных систем изображена на рис. 5.9. Память тестов МКСд Уд "Ошибка" > МКСЯ- Устройство управления щ 1 I "Режим" Рис. 5.9. Вариант структуры системы дублирования В данном варианте порядок следования тестовых сигналов определяется устройством управления исходя из выбранного пользователем режима тестирования и результатов сравнения реакций эталонной и диагностируемой систем на предыдущих шагах теста (например, проведение расширенного тестирования для более точного определения характера неисправности при несовпадении результатов). Второй класс программно-аппаратных средств диагностирования — системы хранения тестов-эталонов (рис. 5.10), являющиеся логическим развитием описанной выше структуры. Диагностирование микроконтроллерных систем 155 Память тестов- эталонов мкс„ "Ошибка" Устройство управления I "Режим" Рис. 5.10. Структура системы "память тестов-эталонов" В данном случае эталонные выходные сигналы генерируются не эталонной системой, а хранятся в памяти наряду с входными тестовыми сигналами. Такие системы по сравнению с системами дублирования обладают лучшими стоимостными и массогабаритными характеристиками, а также снимают проблему возможных появлений неисправностей в эталонной системе. К третьему классу программно-аппаратных средств диагностирования относятся контролирующие автоматы. Контролирующие автоматы строятся для контролируемого автомата А и известного класса ошибок в нем, подлежащих обнаружению в виде автомата АЕ (рис. 5.11). А(МКСД) о "Ошибка" Рис. 5.11. Структура контролирующего автомата Ошибкой в автомате А является искажение его выходных сигналов У, а также его внутреннего состояния Q (следует отметить, что искажение Q может не влиять на сигнал У в течение некоторого времени, т. е. для внешнего наблюдателя диагностируемая система может продолжать функционировать достоверно). Задачей контролирующего автомата является обнаружение любой ошибки в контролируемом автомате в момент ее возникновения, в связи с чем на вход автомата АЕ подаются не только входные сигналы X и выходные сигналы У автомата А, но и его внутренние состояния Q.
756 Гпава 5 5.3. Процедура проведения диагностирования В режим диагностирования система переводится либо в случае аварийной ситуации (обнаружении на ее выходах неверных сигналов), либо в случае проведения плановой проверки. При применении тестового диагностирования входы системы переводятся в режим приема воздействий системы тестирования; при применении функционального диагностирования на входы системы продолжают поступать рабочие воздействия. Выходные реакции системы сравниваются с эталонными реакциями, построенными на основе модели функционирования системы (см. рис. 5.2 и 5.3). В случае их несовпадения производится диагностика модулей. Модули системы диагностируются последовательно в соответствии с планом диагностирования. Выявленная отказовая ситуация не всегда позволяет точно определить неисправный модуль, в связи с чем при восстановлении системы проводится последовательная замена всех подозреваемых модулей. CZZD Примеры разработок программного обеспечения микроконтроллерных систем Все множество задач, решаемых микроконтроллерными системами, можно разделить на три подгруппы: задачи ввода информации, задачи арифметико- логических преобразований информации и задачи вывода информации. 6.1. Арифметико-логические вычисления на микроконтроллере В качестве иллюстрирующего примера рассмотрим подпрограмму, реализующую упорядочение содержимого массива данных (например, результатов серии измерений) по возрастанию значений. Схема программы приведена на рис. 6.1. 11рограмма производит определение максимального элемента и помещает его в последнюю позицию, меняя местами с элементом, стоявшим последним. После этого производится сдвиг границы массива так, чтобы в анализируемой части остались еще не отсортированные элементы, и процедура повторяется до исчерпания массива. Текст программы на языке ассемблера для микроконтроллера МК-51 приведен в листинге 6.1. ГЛАВА 6
158 Гпава 6 sorting объявить максимум первый элемент массива Нет объявить максимумом текущий элемент считаны все .элементы? Нет Да переставить местами максимальный и последний уменьшить анализируемую часть массива на один элемент Нет end sorting Рис. 6.1. Схема программы сортировки массива Листинг 6.1. Текст программы сортировки массива start_adr: num_data: tmp_max: adr_hi: adr lo: org 8100h equ 8200h equ 30h equ 31h equ 32h equ 33h ;адрес начала массива /количество элементов в нем ;локальный максимум ;его адрес: старший байт ; младшим |'мй'г Примеры разработок программного обеспечения микроконтроллерных систем 159 sorting: $step: $chck len: $ok len: $search: $cmp: $max: ?no max: mov num_data, #15 lcall sorting ret push psw push a push 0 push 1 push dph push dpi mov rO,num data /выполнение сортировки /пятнадцати элементов /сохранение используемых /ресурсов МК /изначально неотсортирован весь массив cjne r0,#2,$chck len /в массиве должно быть -rid sort: jnc $ok_len ljmp end_sort mov rl,0 mov dptr,#start_adr movx a,@dptr mov tmp_max, a mov adr_hi,dph mov adr_lo,dpl dec rl inc dptr movx a,@dptr cjne a,tmp_max,$cmp j с $no_max mov tmpjnax, a mov adr_hi,dph mov adr_lo,dpl djnz rl,$search movx a,@dptr xch a,tmp_max movx @dptr, a mov dph,adr_hi mov dpl,adr_lo mov a,tmp_max movx @dptr, a djnz rO,$step pop dpi pop . I| ,h /больше одного элемента /определение количества /несортированных элементов /чтение первого из них /объявление первого /элемента максимальным /поиск максимального /среди оставшихся /обновление максимума /перестановка последнего /элемента в анализируемом /участке массива /и максимального элемента /в этом участке ;сдвиг границы /неотсортированной части /массива ; III iг -е -• г¦ - 111f >I-..ГI. -1 Г11. - /используемых ресурсов МК
760 Гпава 6 pop 1 pop О pop а pop psw ret org 8200h ;данные, подлежащие сортировке data: db 12h,0,33h,41h,42h,43h,OFFh, 0, 0,1,2,OABh,5,0C5h,87h Из основной программы main производится вызов подпрограммы sorting, в качестве параметров для которой сформированы начальный адрес массива и количество элементов в нем. Массив определен в области внешней памяти. Примечание Следует отметить, что данный способ выявления окончания очередного прохода сортировки имеет ограничение на объем массива, определяемое разрядностью переменной num_data, а также способом организации циклов на основе команды djnz — в массиве может быть не более 255 элементов. Снять данное ограничение возможно, например, введением двухбайтных счетчиков элементов массива и использованием команд cjne при выявлении ситуации выхода за пределы анализируемой области массива. 6.2. Ввод информации в микроконтроллерную систему К задачам ввода относятся как задачи получения от оператора информации о требуемых режимах и настройках системы, так и задачи выделения информации, поступающей в виде сигналов (амплитудных, частотных и др.) с датчиков объекта управления. 6.2.1. Опрос пользовательского пульта В большинстве встраиваемых систем управления необходимо организовывать связь с оператором для указания параметров работы системы. Рассмотрим задачу определения нажатой клавиши на шестнадцатиклавиш- ном пульте, схема подключения которого к микроконтроллеру 80С515 показана на рис. 6.2. Клавиши объединены попарно в матрицу размерности 8x2. Столбцы матрицы клавиатуры соединены с линиями порта Р4. В реализованной схеме низкий уровень на одной из выходных линий порта Р4 обеспечивает опрос соответствующего столбца матрицы. Строки матрицы подключены к выводам РЗ.З и Примеры разработок программного обеспечения микроконтроллерных систем 161 Р3.2 порта РЗ. Низкий уровень на этих линиях идентифицирует включенные клавиши, опрашиваемые в текущий момент времени. Р4.7 о «Ь Р4.6 О- о о Р4.0 о К г—i/f -о Р3.2 -о РЗ.З Рис. 6J.2. Схема подключения пользовательского пульта ){пя определения состояния клавиатуры необходимо сформировать входные сигналы опроса клавиатуры и считать ее состояние. Опрос клавиатуры удобно выполнять, организовав выдачу последовательности "бегущий нуль" по столбцам клавиатуры, считывая при этом значение строк клавиатуры в каждый такт формирования нового входного воздействия. Совокупность значений строк матрицы клавиатуры назовем картой состояния. ( хема программы приведена на рис. 6.3, а ее текст — в листинге 6.2. 11омер нажатой клавиши определяется как (X - start)*2 + 1 для клавиш, ото- оражаемых на разряд РЗ.З, и как (X - start)*2 + 2 для клавиш, отображаемых на разряд Р3.2, где X— номер нулевого элемента карты состояния, start — адрес начала карты. Пистинг 6.2. Текст программы опроса пульта mm: nap start: equ 4Oh equ 30h /номер нажатой клавиши /начало области хранения карты клавиатуры push psw push 0 push а mov a,#07Fh mov rO,#map_start /сохранение используемых /ресурсов МК /чтение карты в память МК /подготовка "бегущего нуля'1 /адрес начала карты ;состояния клавиатуры 1301
162 Гпава 6 /чтение ответа из порта 3 ;в очередную позицию карты $scan:. mov 0E8h,a ;выдача сигнала в порт 4 setb рЗ.3 setb рЗ.2 mov @R0,P3 inc rO setb с rrc а /подготовка нового опроса cjne a,#llllllllb,$scan /дешифрация карты mov г 0,#map_s tart $check: mov a,@rO jnb acc.3,$odd /выявление нажатой клавиши /с нечетным номером jnb acc.2,$even /выявление нажатой клавиши /с четным¦номером inc rO /просмотр карты далее cjne rO,#(map_start+8),$check mov а,#0 ljmp klav_end /нажатых клавиш нет $odd: $even: mov a, г0 /вычисление номера clr с /нажатой клавиши subb a,#map_start /для нечетных позиций mov b,#2 mul ab add a,#l ljmp klav_end mov a,r0 /вычисление номера clr с /нажатой клавиши subb a, #map__start /для четных позиций mov b,#2 mul ab add a,#2 klav end: mov num,a pop a pop 0 pop psw ret /запись в результирующую ячейку /восстановление /используемых ресурсов МК Примеры разработок программного обеспечения микроконтроллерных систем 163 klav num подготовить "бегущий О", инициализировать карту выдать сигнал в выходной порт на клавиатуру принять ответ клавиатуры через входной порт и сохранить в карте сдвинуть код "бегущий 0" и позицию в карте состояния опрос завершен? Нет Да установить указатель карты на начало считать очередной элемент карты состояния сформировать номер элемента end klav num Нет Рис. 6.3. Схема программы опроса пульта
164 Гпава 6 6.2.2. Опрос датчиков аналоговых величин В системах управления одной из типовых задач является задача определения показаний датчиков объекта, представляющих информацию в виде аналогового сигнала — уровня напряжения. Перед разработчиком в данном случае возникают две задачи: масштабирования сигналов и аналого-цифрового преобразования. Первая задача решается применением схемотехнических решений (внешних по отношению к микроконтроллеру узлов масштабирования, выполненных, например, на базе операционных усилителей). Вторая задача решается либо схемотехнически (в случае отсутствия встроенного в микроконтроллер АЦП), либо программно (при наличии данного периферийного узла). Рассмотрим подсистему измерения уровня освещенности, использующую в качестве датчика фотодиод. Принципиальная схема устройства сопряжения с МК 80С515 показана на рис. 6.4. ; 1М2 ЮОк ФД265 +5В 8 Ко входу 20 LM358 (AchO)MK Рис. 6.4. Сопряжение датчика с МК Блок-схема программы приведена на рис. 6.5, а ее текст — в листинге 6.3. Листинг 6.3. Текст программы опроса датчиков аналоговых сигналов equ 4Oh Ul: Ul read: push 0 mov'rO,#0 lcall adc_switch /канала mov 0DAh,#0h lcall adc_delay mov Ul,0D9h pop 0 ret /напряжение с датчика /процедура'опроса датчиков /выбор нулевого /задание диапазона /задержка /сохранение в U1 adc_switch: mov a,0D8h /настройка АЦП: anl a,#11111000b /непрерывное orl a, ttOOOOlOOOb ; преобразований Примеры разработок программного обеспечения микроконтроллерных систем 165 orl a,r0 mov 0D8h,a ret /выбор канала adc_delay: push 0 mov r0,#20 djnz r0,$ pop 0 ret /выдержка паузы /для преобразования /в АЦП В данном случае проводится опрос датчика, подключенного к нулевому каналу АЦП. Диапазон масштабированных операционным усилителем входных сигналов составляет 0...5 В. adc-read выбрать требуемый канал АЦП выждать время преобразования сигнала передать результат по адресу назначения Рис. 6.5. Схема программы опроса датчиков аналоговых сигналов Примечание В подпрограмме применяется выдержка времени, заведомо большего необхо димого для выполнения аналого-цифрового преобразования на данном микроконтроллере. Другими вариантами взаимодействия с АЦП являются опрос флага готовности и применение прерываний.
Гпава 6 6.2.3. Определение длительности временных интервалов Важной задачей при построении управляющих систем является задача определения времени продолжительности события, представленного двоичным сигналом или совокупностью двоичных сигналов на входах микроконтроллера. Рассмотрим задачу определения времени продолжительности события, начало которого характеризуется переходом из состояния логической единицы в состояние логического нуля двоичного сигнала У1, а конец— переходом из состояния логической единицы в состояние логического нуля двоичного сигнала У2. Для удобства решения задачи подадим сигнал У1 на вход первого запроса прерывания МК, а сигнал У2— на вход нулевого запроса прерывания (рис. 6.6). INT1 INTO начало окончание длительность время -*> время Рис. 6.6. Сигналы начала и окончания события Для снижения влияния подпрограмм определения времени события на прочие процессы, реализуемые в системе, следует решать задачу с использованием системы прерываний. По срезу сигнала на входе INT1 возникает прерывание, обработчик которого запускает таймер, отсчитывающий кванты времени протяженности события, по срезу сигнала на входе INTO возникает прерывание, обработчик которого прекращает счет, блокируя таймер. Для повышения точности определения времени в ситуации возможных многократных смен состояний входов последующие прерывания от источников стартового и стопового импульсов блокируются до завершения текущего цикла подсчета времени. Примеры разработок программного обеспечения микроконтроллерных систем 167 Схема программного комплекса в виде совокупности трех подпрограмм- обработчиков прерываний приведена на рис. 6.7, а их текст в листинге 6.4. обнулить счетчик времени запустить таймер 0 заблок прерь in кровать шание И инкре счет врел мент чика «ени | end timerO остаь тайн гавить дер 0 сохранить показания счетчика заблею прерь in ровать вание Ю разрешить прерывание into end Int1 разрешить прерывание int1 end Into Рис. 6.7. Схема программ определения длительности событий Листинг 6.4. Текст программы определения длительности события cnt_hi: equ 30h cnt_lo: equ 31h last_tim_h: equ 40h last_tim 1: equ 41h ;счетчик текущего ;времени ;длительность ;предыдущего цикла mam: loop: lcall init sjmp loop .•основная программа
168 init: mov cnt_hi,#0 mov cnt_lo,#0 mov last_tim_h,#0 mov last_tim_l,#0 mov a,TMOD anl a,#11110000b orl a,#00000010b mov TMOD,a mov TH0,#155 mov TL0,#155 setb etO setb exl setb ea ret Гпава 6 ;таймер ТО в режиме ;перезагрузки ;будет отмерять /интервалы времени ;в 100 мкс /разрешение работы обработчиков /необходимых /типов прерываний intl: mov cnt_hi,#0 mov cnt_lo,#0 mov TL0,#155 setb trO setb exO clr exl /обработка события /старт-импульса: /начало нового цикла /измерений /запуск таймера /подготовка /к распознаванию • - /стоп-импульса /блокировка прерывания /данного типа reti intO: into ex: clr trO clr exO mov 1ast_t im_h,cnt_hi mov last_tim_l,cnt_lo setb exl reti /обработка события /стоп-импульса: /запрет дальнейшего счета /блокировка прерывания /данного типа /сохранение измеренного /времени /подготовка /к распознаванию /очередного старт-импульса timO: push psw push a Примеры разработок программного обеспечения микроконтроллерных систем 169 inc cnt_lo /увеличение значения mov a,cnt_lo /длительности импульса jnz tim0_ex inc cnt_hi tim0_ex: pop a pop psw reti org 0003h ljinp intO org OOObh ljmp timO org 0013h ljmp intl В переменных last_tim_h и last_tim_l хранятся соответственно старший и младший байты длительности последнего завершившегося события в квантах времени по 100 мкс. 6.3. Вывод информации из микроконтроллерной системы В номенклатуру задач вывода информации входят как задачи вывода управляющей информации, поступающей в виде различных сигналов (амплитудных, частотных и др.), на объект управления, так и организация вывода информации на пульт оператора. 6.3.1. Вывод цифровых кодовых последовательностей В большинстве встраиваемых систем управления необходимо организовывать связь с оператором для вывода информации о параметрах работы системы. Рассмотрим задачу вывода алфавитно-цифровой информации на жидкокристаллический алфавитно-цифровой индикатор (ЖКИ) модели DM2021 фирмы Sanyo. Данная модель ЖКИ имеет поле вывода информации размером две сiроки по двадцать символов в каждой. ЖКИ содержит видеопамять, в которой хранятся отображаемые символы, а также обладает собственной сиего- /переходы к обработчикам /необходимых типов прерываний /инициализация переменных и устройств: ;обнуление ;счетчиков
170 Гпава 6 мой управления жидкокристаллической панелью. Наличие указанных узлов существенно упрощает работу с ЖКИ, т. к. собственно управление отображением точек — элементов изображения — производится автоматически в соответствии с поданной на ЖКИ командой. ЖКИ содержит восьмиразрядную шину команд-данных и шину управления, в состав которой входят одноразрядные линии разрешения программирования (Е), выбора типа посылки "команда-данные" (RS) и выбора направления передачи данных "чтение-запись" (RW). Подключение ЖКИ к МК 80С515 показано на рис. 6.8. Порт Р4 предназначен для организации шины команд- данных, а старшие три бита порта Р1 предназначены для организации шины управления. Переменный резистор необходим для регулировки контрастности изображения. МК-51 Р4.7 Р4.6 Р4.5 Р4.4 Р4.3 Р4.2 Р4.1 Р4.0 Р1.7 Р1.6 Р1 S 14 13 12 11 10 9 8 7 DB.7 ЖКИ DB.6 DB.5 DB.4 DB.3 DB.2 DB.1 DB.0 Е RW V0 RS +5V R1 5К Рис. 6.8. Сопряжение ЖКИ с МК-51 Процедура записи в ЖКИ выполняется в три этапа: на шине DB устанавливается информация, отражающая подаваемые в ЖКИ команды-данные, затем устанавливаются необходимые значения на линиях RW и RS и, наконец, на входе Е формируется переход от высокого логического уровня к низкому. Для возврата системы управления ЖКИ в исходное состояние следует перевести вход Е в состояние логической единицы. Не приводя всей системы команд ЖКИ, остановимся на следующих из них: 38h — установка восьмибитного режима обмена с ЖКИ, использование для вывода обеих строк с размером символа 5x7 точек; ОСЬ — активизация всех знакомест ЖКИ в режиме погашенного курсора; 80h — установка адреса, начиная с которого записываемые в ЖКИ данные будут последовательно располагаться в видеопамяти. Схема и текст программы, осуществляющей вывод на ЖКИ сорока символов, коды которых расположены во внешней памяти данных микроконтроллера, начиная с адреса OFFDOh, приведены соответственно на рис. 6.9 и в листинге 6.5. Примеры разработок программного обеспечения микроконтроллерных систем 171 инициализировать ЖКИ настроить адрес строки ЖКИ считать очередной код из памяти МК и выдать на ЖКИ ^¦^^-"•^ Нет „символы?^. Да Рис. 6.9. Схема программы вывода информации на ЖКИ Листинг 6.5. Текст программы вывода данных на ЖКИ indie: indie init: i ndic data wr 1 mov indic_wl,#0 /инициализация ЖКИ mov indic_w0,#38h lcall indic_wr mov indic_w0,#0Ch lcall indic_wr mov indic_w0,#80h lcall indic_wr mov indic_wl,#l mov dptr,#0FFD0h movx a,@dptr mov indic_wO, a lcall indic_wr inc dptr mov a, dpi cjne a,#0E4h, indic_data_wr_l mov indic_wl,#0 mov indic_w0, #0C0h /установка адреса первого символа lcall indic_wr /второй строки mov indie w I, II I /установка адреса первого символа /первой строки ; вывод символов первой строки s ч Icd-write
172 Гпава 6 indie data wr 2: /вывод символов второй строки indic_exit: indie wr: indie delay: data: db db movx a,Sdptr mov indic__wO,a lcall indic_wr inc dptr mov a, dpi cjne a,#0F8h, indic_data_wr__2 ret mov 0e8h, indic_wO /процедура записи в ЖКИ setb pi.7 clr pi.6 mov a,indic_wl mov c,acc.O mov pi.5,с lcall indic_delay clr pi.7 lcall indic_delay setb pi.7 ret nop /процедура программной задержка nop nop nop nop nop ^ nop nop ret org O.FFDOh 'It is test examlpe. '' /пример организации выводимых '0123456789ABCDEF!@#$' /данных Примечание Требуемое производителем время выдержки сигналов RW и RS относительно Е составляет доли микросекунды, в связи с чем задержка в процедуре записи в ЖКИ необязательна. Однако время отработки каждой из используемых в программе команд в ЖКИ составляет 40 мкс, в связи с чем между подаваемыми командами должна выдерживаться соответствующая пауза. В данной программе в процедуру выдачи команд indicwr включены задержки, обеспечивающие суммарное время выполнения процедуры 36 мкс, а с учетом времени подготовки данных и времени вызова — требуемые 40 мкс. Примеры разработок программного обеспечения микроконтроллерных систем 173 6.3.2. Вывод ШИМ-сигналов В ряде задач управления возникает необходимость выдачи на объект управляющих сигналов определенной интенсивности (либо заданной мощности за некоторый период). Как правило, для объектов с аналоговым управлением применяется формирование управляющих сигналов с изменяемой амплитудой. Один из вариантов реализации такого управления заключается в использовании широтно-импульсной модуляции (ШИМ). В данном варианте на одном из разрядов выходного порта микроконтроллера формируются периодические импульсные сигналы с постоянной частотой следования и изменяемым отношением времени длительности импульса ко времени длительности паузы, которое определяет интенсивность управляющего сигнала. Рассмотрим реализацию ШИМ на примере управления частотой вращения двигателя постоянного тока. Схема устройства сопряжения МК 80С515 с двигателем показана на рис. 6.10. Схема программы формирования ШИМ- сигналов приведена на рис. 6.11, а ее текст — в листинге 6.6. +15В 1\ Д226Б Рис. 6.10. Схема устройства сопряжения Пистинг 6 5. Текст программы ШИМ-управления lcall init pwm /инициализация ШИМ main: Loop: lcall pwm_con.tr sjmp loop : /задание ШИМ Lnitjowm: mov old_pwm,#255 orl pi,#00001000b mov cbh,#0e0h mov c?h,#090h /предьщущая константа перезагрузки ;вывод через третий регистр меток / — через разряд Р1.3 /константа перезагрузки соответствует /частоте ШИМ в 124 Гц
774 Гпава 6 mov c8h,#00010001b ;таймер 2 в режиме неуправляемого счета, ;с выводом ШИМ и автоперезагрузкой mov clh,#10000000b /разрешен вывод через третий регистр меток mov c6h,#80h /младший байт третьего регистра меток ret pwm_contr: mov a,pwm var /прием управления pwm ch: pwm exit: /расчет константы времени cpl a mov b, #8 div ab' сj ne a,old_pwm,pwm_ch ljmp pwm_exit mov old_pwm,a ;в случае изменившегося управления add а,#224 mov c7h,a /вывод в старший байт регистра ret pwm настроить таймер и блок быстрого ввода-вывода принять переменную управления сформировать новую константу перегрузки Нет end pwm Рис. 6.11. Схема программы ШИМ-управления Примечания Примечание 1. В данной программе реализуется частота ШИМ-сигналов в 124 Гц. Для этого используется режим автоперезагрузки таймера, позволяющий начинать счет с наперед заданного в регистре перезагрузки значения. В регистр Примеры разработок программного обеспечения микроконтроллерных систем 175 следует занести константу, определяемую как N = 65536 — 10 Яшим, где fmnM — желаемая частота ШИМ-сигналов в герцах. Начав с константы N и считая тактовые импульсы с частотой 1 МГц, таймер сформирует очередной период ШИМ за 106Яшим мкс. Для данного примера N = E080h. Примечание 2. Для корректной реализации ШИМ с усеченным периодом необходимо масштабировать помещаемую в регистр меток константу ШИМ так, чтобы возрастающий с величины N код таймера обладал возможностью ее превысить (т. е. константа ШИМ должна быть не меньше N). В данном случае диапазон кода управления pwm_var 0...255 масштабируется в диапазон 224..255. Примечание 3. Использование схем внешних интеграторов позволяет получить сигнал с амплитудой, пропорциональной константе ШИМ (см. главу 3). 6.3.3. Вывод сигналов с временным сдвигом В заключение рассмотрим задачу формирования временного интервала с управляемой длительностью, начало которого определяется внешним старт- сигналом (задача синхронизации). Требуемая временная диаграмма показана на рис. 6.12. INT1 начало окончание РХ.у изменяемая длительность фиксированная ц длительность Рис. 6.12. Формируемый временной интервал Для возможности гибкого использования программного комплекса, реализующего данный вариант управления, целесообразно организовать его с использованием возможностей, предоставляемых системой прерываний. При иозникновении запускающего события обработчик прерывания INTO запускает таймер 0, отсчитывающий заданный основной программой временной интервал, по истечении которого обработчик прерывания таймера 0 на определенном разряде выходного порта формирует высокий логический уровень. После этого обработчик перезапускает таймер с такими настройками, чтобы
176 Гпава 6 выдержать фиксированный интервал длительности импульса. Выполняясь вторично, обработчик прерывания таймера 0 на заданной выходной линии формирует низкий логический уровень. Схема управляющей программы приведена на рис. 6.13, а текст программы в листинге 6.7. сформировать данные счетчика запустить таймер 0 заблокировать прерывание into f > end IntO Нет первый вызов? Да выдать в порт высокий логический уровень сформировать исходные данные счетчика запустить таймер 0 выдать в порт низкий логический уровень заблокировать прерывание ТО разрешить прерывание into end timerO Рис. 6.13. Схема программы выдержки временного интервала 1мы выдержки временного интервала kupr: main: loop: equ 30h lcall init sjmp loop Примеры разработок программного обеспечения микроконтроллерных систем 177 init: mov a,tmod anl a,#11110000b orl a,#00000001b mov tmod,a clr PI.2 clr FO setb itO setb exO clr etO clr trO setb ea ret ;таймер.0 — 16-битный счетчик /обнуление выходной линии ;номер прохода: 0 — первый, 1 ;настройка системы прерываний второй sync_impulse: push О push асе push b push psw /подпрограмма обработки прерывания INTO ;синхронизация по старт-импульсу mov a,kupr mov b,#8 div ab add a, #7 mov rO,a mov a,#255 clr с subb a,rO mov thO,a mov tl0,#030h setb etO setb trO clr exO ;определение временной выдержки /максимальное время — 10 мс ;минимальное время 2 мс /установка начальных показании ;таймера ;настройка системы прерываний pop psw pop b pop acc pop 0 reti •iwi tch: jb FO, off /подпрограмма обработки прерывания TO /анализ номера вхождения в обработчик
778 Гпава 6 ;выдать импульс на 240 мкс off: setb F0 setb PI.2 mov th0,#255 mov tl0,#15 sjmp switch_exit clr F0 clr PI.2 setb exO clr etO clr trO ;завершить импульс ;подготовка к новому циклу switch exit: reti ;переход к обработчикам прерываний org 0003h ljmp sync_impulse org OOObh ljmp switch Программный комплекс формирует импульс длительностью 240 мкс, выда ваемый спустя 2... 10 мс относительно начала запускающего перепада на вхо де INTO в зависимости от величины кода kupr. ГЛАВА 7 Реализация встраиваемых систем управления электромеханическими объектами 7.1. Структура системы управления Применительно к встраиваемым системам управления электромеханическими объектами, структуру, рассмотренную в разд. 3.2 (см. рис. 3.4), содержащую электромеханическую и электронную (вычислительную) части и потому называемую электромеханотронной системой, можно представить более подробно (рис. 7.1). Пульт оператора включает в свой состав подсистему ввода и подсистему вывода. Подсистема ввода реализуется на дискретных (кнопки, переключатели и др.) и аналоговых (потенциометры) элементах, что позволяет удобно работать с различными вариантами представления вводимой информации: некоторые уставки (т. е. режимы и параметры функционирования, задаваемые системой более высокого иерархического уровня, в частности, оператором) следует выбирать из заданного множества (например, задавать один из нескольких режимов работы), некоторые— плавно регулировать (например, величину управляющего воздействия). Подсистема вывода, также исходя из удобства восприятия оператором информации, реализуется на различного рода индикаторах (сигнальные, мнемонические, шкальные, символьные и графические индикаторы). Простота восприятия обеспечивается мнемоническими индикаторами, разнообразие выводимой информации— многоразрядными символьными и графическими индикаторами. Помимо собственно объекта управления— исполнительного двигателя, в •псктромеханический блок входят датчики, измеряющие значения параметров функционирования системы. К ним относятся датчик частоты вращения и читчик углового положения объекта, ('шпалы управления объектом и неко-
182 Гпава 7 плавной установки. Таким образом, должен быть реализован гибридный пульт, позволяющий задавать как дискретные, так и непрерывные величины. Так как количество дискретных состояний невелико (5 программ и 1 режим), то организовывать клавиатурную матрицу нецелесообразно, поэтому положим, что код программы работы задается с помощью переключателя, а код режима — с помощью тумблера. Значения плавно изменяемых уставок задаются с помощью потенциометров. Аппаратная реализация такого пульта показана на рис. 7.2. Программное обеспечение микроконтроллера производит опрос разрядов порта 5 и перевод кодов "1 из N" в двоичные коды программы и режима; затем оцифровываются входные сигналы младших четырех каналов АЦП, к которым подключены потенциометры. Схема и текст программы приведены соответственно на рис. 7.3 и в листинге 7.1. После выполнения этой подпрограммы другим программам будут доступны численные значения уставок пользователя. Сохранение используемых ресурсов, чтение битов 0..5 порта 5 Код режима=1 Код режима=2 =3= Код программы=5 Уменьшение значения кода программы Настройка счетчика каналов АЦП: 4 измерения Настроить канал i, дождаться готовности, оцифровать, занести в Купр, Восстановление ресурсов Рис. 7.3. Схема подпрограммы опроса пользовательского пульта Реализация встраиваемых систем управления электромеханическими объектами 183 эдпрограммы опроса пользовательского пульта ;подпрограмма scan - опрос пульта управления ; Символические определения Kprog: Kreg: Kuprl: Kupr2: КиргЗ: Kupr4: $scan_reg: $scan_regl: $scan_prog: $scan_progl: $scan_prog2: $scan_adc: $scan adcl: $adc switch: scan end: equ 30h equ 31h equ 32h equ 33h equ 34h equ 35h push 0 push 1 orl OF8h,#00111111b mov a,0F8h mov rO, #1 rrc a jc $scan_regl mov r0,#2 mov Kreg,rO mov rO, #5 rrc a jnc $scan_prog2 djnz rO, $scan_progl mov Kprog,rO mov rl,#Kuprl mov r0,#0 call $adc_swltch jb 0d8h.4,$ mov @rl,0D9h inc rl inc rO cjne r0,#4, $scan_adcl pop 1 pop 0 ret mov a,0d8h anl a,#11111000b orl a, #00001000b orl a,rO mov 0d8h,a mov Odah,#0 ;код программы ;код режима ;код управления 1 (уставка № 1) ;код управления 2 (уставка № 2) ;код управления 3 (уставка № 3) ;код управления 4 (уставка № 4) ;сохранение значений регистров ;настройка на ввод битов 0—5 порта 5 ;чтение порта ;обработка кода режима ;сдвиг в сторону младших разрядов /фиксация кода режима в памяти ;обработка кода программы ;сдвиг в сторону младших разрядов ;по разрядам 1—5 порта 5 «•фиксация кода программы в памяти /настройка указателя на уставки /настройка счетчика каналов /установка канала /ожидание готовности АЦП /фиксация кода управления в памяти /переход к следующей уставке /для всех каналов /восстановление значений регистров /процедура настройки канала АЦП /номер канала хранится в R0 /запуск преобразования
784 Гпава 7 7.3. Отображение алфавитно-цифровой информации на пульте Рассмотрим достаточно типичный вариант реализации пользовательского пульта, в котором необходимо предоставлять пользователю для визуального контроля значения ряда параметров процесса управления, возможно, снабженные некоторыми текстовыми пояснениями (например, для явного указания наименования отображаемого параметра). Для этих целей необходимо устройство индикации, позволяющее выводить цифровую и символическую информацию, при этом, как правило, многоразрядную. Практически стандартным, экономичным и легко реализуемым решением является использование для этих целей жидкокристаллических индикаторов — ЖКИ (к исключениям следует отнести условия эксплуатации с широким диапазоном изменения освещенности, для которых предпочтительнее использование све- тоизлучающих мнемосхем). В силу широты круга задач отображения информации во встраиваемых системах, покрываемых алфавитно-цифровыми ЖКИ, рассмотрим именно такой вариант реализации (применение графических ЖКИ, несколько более громоздкое схемотехнически и программно, принципиально мало отличается по решению от описываемого далее примера). Схемотехническая, алгоритмическая и программная реализации данной задачи рассмотрены в разд. 6.3.1, здесь лишь отметим, что для использования данной подпрограммы в составе некоторого программного комплекса необходимо занести в область вывода FFDOh—FFF7h (своеобразный "видеобуфер") ASCII-представление информации, подлежащей выводу, после чего передать управление на данную подпрограмму. Пример подобного взаимодействия рассмотрен далее в разд. 7.5. 7.4. Опрос датчиков аналоговых величин При построении замкнутых систем управления электромеханическими объектами, позволяющих отработать уставки оператора путем определения величины управляющего воздействия как функции от заданного и текущего состояния объекта, необходимо измерение этого состояния путем использования датчиков обратной связи: по частоте вращения, по моменту сопротивления, по положению и др. Рассмотрим подсистему измерения значений первых двух из указанных параметров. Аппаратная реализация подсистемы вывода показана на рис. 7.4. В качестве датчика частоты вращения использован тахогенератор (здесь будем говорить о некотором абстрактном тахогенсраторе; в каждом конкретном случае целесообразно выбирать наиболее полно соответствующий параметрам электрШ Реализация встраиваемых систем управления электромеханическими объектами 185 механической системы, в частности, по значению максимальной частоты вращения). В простейших случаях в качестве тахогенератора может быть использован двигатель постоянного тока, включенный в режиме генератора. В качестве датчика момента используется образцовый резистор, падение напряжения на котором пропорционально току якорной обмотки двигателя (исполнительного или нагрузочного); сила этого тока, в свою очередь, пропорциональна величине момента на валу ротора. В связи с тем, что значения уровней выходных напряжений этих датчиков достаточно велики, необходимое масштабирование сигналов, как правило, сводится к пропорциональному снижению их амплитуды резистивными делителями до диапазона 0...5 В, применяемого в АЦП. Датчик частоты вращения - тахогенератор i О ПЭВ7.5 П Датчик 1 Ом U момента в цепи якоря двигателя +5В ADC.5 ADC.4 MCU Vcc GND Infineon 80515 Рис. 7.4. Схема устройства сопряжения сдатчиками Требуемый коэффициент деления определяется при настройке подбором положения ползунка реостата (в случае необходимости сужения диапазона измерений можно применить соответствующие настройки АЦП). Так как ротор исполнительного двигателя может вращаться в обоих направлениях, выходное напряжение тахогенератора в штатном режиме может быть отрицательным, что недопустимо для входов АЦП МК. В схеме обработки сигналов канала АЦП № 5 применен пассивный сумматор, "поднимающий" масштабированное напряжение тахогенератора на величину +2,5 В (половина полного диапазона измеряемых напряжений), точно задаваемую с помощью потенциометра. Напряжение тахогенератора должно быть смасштабировано так, чтобы в рабочем диапазоне частот-Wmax...+Wmax оно находилось в пределе 2,5... 1-2,5 В. При этом Ubx АЦП будет находиться в диапазоне 0...5 В. Для защиты микроконтроллера от повреждений при возможных аварийных ре-
186 Глава 7 жимах (резкие увеличения значений частоты и/или тока, приводящие к превышению выхода напряжения Ubx АЦП за границы диапазона 0...+5 В) используются диоды, открывающиеся при снижении входного напряжения ниже величины -0,4 В (нижний диод пары) и при превышении входным напряжением величины +5,4 В (верхний диод пары). Возможные помехи, наводимые электромагнитными полями электрических машин, отфильтровываются RC-цепями. Схема и текст программы, выполняющей обслуживание АЦП, приведены на рис. 7.5 и в листинге 7.2. Для определенности примера положим, что Ubx5 находится в диапазоне 0...5 В, a Ubx4—- в диапазоне 0...1 В (т. е. 1я— ток якоря двигателя, который лежит в диапазоне 0... 1 А). Настроить АЦП на обработку сигнала по каналу № 4 Нет Сохранить значение кода тока якоря в зарезервированной ячейке памяти Настроить АЦП на обработку сигнала по каналу № 5 Сохранить значение кода частоты в зарезервированной ячейке памяти Рис. 7.5. Схема подпрограммы опроса датчиков частоты и момента Листинг 7.2. Текст подпрограммы опроса датчиков /подпрограмма wm_read — опрос датчиков частоты вращения и момента ; Символические определения W: equ 36h ;код частоты вращения I: equ 37h ;код тока якоря "Я wm read: push О mov r0,#4 .•сохранение значения регистра Реализация встраиваемых систем управления электромеханическими объектами 187 $adc switch: wm read end: call $adc_switch mov ODAh,#040h jb 0d8h.4,$ mov I,0D9h inc rO call $adc_switch mov 0DAh,#0h jb 0d8h.4,$ mov W,0D9h pop 0 ret mov a,0d8h anl a,#11111000b orl a, #00001000b orl.a,rO mov 0d8h,a ret /активизация канала 4. (ток якоря) /диапазон измерения 0...1,25 В — это /ближайший больший для диапазона 0... 1 В /ожидание готовности АЦП /сохранение кода тока якоря /активизация канала 5 (частота вращения) /полный диапазон измерения /ожидание готовности АЦП /сохранение кода частоты вращения /восстановление значения регистра /процедура настройки канала АЦП /номер канала хранится в R0 7.5. Организация межмодульного программного взаимодействия Для иллюстрации возможностей организации взаимодействия описанных ранее программно-аппаратных решений рассмотрим совместную работу подсистемы опроса пользовательского пульта, подсистемы измерения показаний датчиков и подсистемы вывода информации на пользовательский пулы с отображением на ЖКИ информации в формате, показанном на рис. 7.6. Р* R* rj= N = К= 1 = Рис. 7.6. Формат вывода информации на ЖКИ Введем следующие обозначения: Р*— код заданной пользователем программы работы (например, Р2), R* — код заданного пользователем режима работы (например, Rl), U— код заданной пользователем уставки № 1 (например, U = 140), N, К, F — значения уставок № 2, № 3 и № 4 соответственно, W — код измеренной частоты вращения, I — код измеренного тока якоря. Чадача совместной схемотехнической реализации данных подсистем не представляет сложности, т. к. является простой композицией рассмотренных рапсе решений, и н<; приводится по причине ее тривиальности.
788 Глава 7 Рассмотрим задачу объединения соответствующих подпрограмм. Так как считывать информацию с источников и выводить ее в указанном формате на ЖКИ предполагается неограниченно долго, то программу, выполняющую данные действия, целесообразно реализовать в виде двух фрагментов: в подготовительной части целесообразно сформировать во внешней памяти данных МК заданный шаблон отображения и вывести его на ЖКИ, а в циклической — считывать коды соответствующих величин, преобразовывать их в ASCII-представление и записывать в соответствующие позиции относительно начала буфера, хранящего шаблон. Суть ASCII-преобразования информации сводится к разбиению байта данных на цифры и замене каждой цифры кодом соответствующего символа цифры. В соответствии с кодировкой ASCII, цифра 0 имеет код 30h, цифра 1 — 31 h и т. д., т. е. для осуществления такого преобразования необходимо к значению кода цифры добавить код 30h. Схема программного комплекса приведена на рис. 7.7, а его текст— в листинге 7.3. Настройка буфера вывода для ЖКИ, его заполнение строками шаблона Опросить пользовательский пульт Опросить датчики частоты и момента Преобразовать коды в строки символов и занести их в буфер вывода Отобразить содержимое буфера вывода на ЖКИ Настройка буфера вывода для ЖКИ Обнулить указатель Считать символ из шаблона (пам. программ), занести его в буфер (пам. данных) Преобразование и запись кодов Считать коды программы и режима, преобразов. в ASCII, занести в буфер Считать коды управляющих параметров, преобр. в ASCII, занести в буфер Считать коды частоты и момента, преобразовать в ASCII, занести в буфер Рис. 7.7. Схема взаимодействия программного комплекса Реализация встраиваемых систем управления электромеханическими объектами 189 Листинг 7.3. Текст программного комплекса /Демонстрация взаимодействия программных компонент org OOOOh ljmp main org 0300h main: lcall init main_cycle: lcall scan lcall wm_read lcall prep_data lcall indie ljmp main_cycle /подключаемые процедуры библиотеки include asms\su\init.asm include asms\su\scan.asm include asms\su\wm_read.asm include asms\su\prep_dat.asm include asms\su\decimal.asm include asms\su\indie.asm /подпрограмма настройки программного комплекса init: $init 1: $init 2: push 0 mov r0,#0 mov dptr,#init_stringl mov a,dpi add a,rO mov dpi,a jnc $init_2 inc dph clr a move a,@a+dptr mov dph,a mov a,#OD0h add a,rO mov dpi,a mov a,dph mov dph,#0FFh movx Sdptr,a inc rO cjne rO,#40,$init_l pop 0 ret init_stringl: db 'P* U= N= K= Init_string2: db»'R* F- V= I- init end: /вычисление смещения /и чтение очередного символа строки, /расположенной в памяти программ /с занесением его в буфер для /вывода на ЖКИ с тем же смещением /объем буфера равен сорока символам /строка-шаблон
790 Гпава 7 /подпрограмма преобразования кодов параметров в их /строковое представление prep_data: mov dptr,#0FFDlh /адресация знакоместа цифры /кода программы (0...5), чтение /и преобразование этой цифры в символ /занесение символа в буфер для вывода /аналогичные преобразования /для кода режима mov a,Kprog add a,#30h movx @dptr,a mov dptr,#0FEE5h mov a,Kreg add a,#30h movx @dptr,a mov dptr,#0FFD5h mov a,Kuprl call decimal mov dptr,#OFFDBh mov a, Kupr2 call decimal mov dptr,#OFFElh mov a, Kupr3 call decimal mov dptr,#0FFE9h mov a, Kupr4 call decimal mov dptr,#0FFEFh mov a,W call decimal mov a,I mov dptr,#0FFF5h call decimal ret /подпрограмма преобразования байта, хранящегося в аккумуляторе, /в трехсимвольную строку, с ее записью во внешнюю память, /начиная с адреса из DPTR. decimal: mov b,#100 div ab add a,#30h movx @dptr,a inc dptr mov a,b mov b,#10 div ab add a,#30h movx @dpt;r, a /т. к. коды управления — байты, то для /выполняется процедура преобразования /в три символа и запись этих символов /аналогично для Kupr2 /аналогично для КиргЗ /аналогично для Kupr4 /аналогично для частоты вращения /аналогично для тока якоря /выделение цифры сотен /ее преобразование в символ цифры /и запись во внешнюю память данных /перемещение указателя /аналогично для цифры десятков Реализация встраиваемых систем управления электромеханическими объектами 191 inc dptr mov a,b add a,#30h movx @dptr,a inc dptr ret 7.6. Обработка сигналов фотоимпульсного датчика И разд. 7.4 в качестве примера системы измерения параметров электромеханической системы была рассмотрена система определения частоты вращения и нагрузки. Другим часто используемым в управлении параметром является угловое положение вала двигателя. В качестве средств измерения наиболее широко применяются многооборотные потенциометры, фотоимпульсные датчики и синусно-косинусные вращающиеся трансформаторы (СКВТ); более экзотические способы ввиду узости сферы их применения рассматриваться не будут. 11ервый способ достаточно тривиален (в связи с чем его реализация не при- Юдится): с валом двигателя жестко связывается движок потенциометра, на Выходе которого измеряется уровень делимого напряжения, изменяющийся (при поворотах вала от некоторого минимального угла cpm;n до максимального ф|„„х) в пределах от Umin до Umax. Зависимость U = f(cp) практически линейна, в связи с чем программно определить значение угла ф не представляет Груда. (Основу фотоимпульсных датчиков (ФИД) составляют два или более дисков с прирезями, каждый из которых прерывает световой поток оптопары, формируя тем самым импульсную последовательность. За счет взаимного сдвига прорезей выходные импульсные последовательности также оказываются сдвинутыми, благодаря чему можно установить направление вращения вала, цк показано на рис. 7.8. шесь для примера на каждом из дисков показаны 8 прорезей угловой шириной 22,5°, расположенных с шагом 45°. Угловой сдвиг между дисками со- епшляет 11,25°. Для наглядности взаимное наложение дисков показано на mi \ икс справа. Срез очередного импульса фазы 1 информирует о повороте ни очередные 45°. Освещенность фотодиода 2 в этот момент свидетельствует н иращепии вала против часовой стрелки, затемненность— о вращении по •им омой стрелке. Отметим, что анализ каждого изменения (и фронта, и среза) им палов обеих фаз обеспечит четырехкратное увеличение разрешающей 1-обиости системы измерения угловою положения. /аналогично для цифры единиц /указатель — на следующую ячейку
192 Глава 7 Рис. 7.8. Иллюстрация принципа обработки сигналов фотоимпульсного датчика Рассмотрим подсистему обработки сигналов такого типа на примере датчика BE-178Z3 00. Полный оборот вала соответствует ста выходным импульсам фазы. Схемотехническая реализация системы показана на рис. 7.9. К561ЛА8 +5В 14 ВЕ-178 1к8 CD V1 /V1 V2 Л/2 +U Vcc -и Gnd -EZD-2 Ш +12В ,56 Ом +5В 1 Й2В 1к8 h Infineon 80515 13 17 Рис. 7.9. Схемотехническая реализация подсистемы опроса ФИД +5В Vcc Р3.2 мси РЗ.З Gnd Микросхема K561JIA8 используется в качестве преобразователя уровней сигналов амплитудой 12 В в сигналы амплитудой 5 В. Последовательности фаз 1 и 2 поступают на второй и третий разряды третьего порта микроконтроллера. Схема программы-драйвера ФИД представлена на рис. 7.10. Реализация встраиваемых систем управления электромеханическими объектами 193 Обработчик запросов прерывания типа INTO Определить значение сигнала фазы 2 Увеличить код угла на Д шага Уменьшить код угла на А шага Привести значение кода угла в соответствие с диапазоном разрядной сетки Рис. 7.10. Схема подпрограммы обслуживания ФИД Текст программы, обслуживающей ФИД, представлен в листинге 7.4. ¦ Листинг 7.4. Текст подпрограммы обслуживания ФИД ;подпрограмма phase_drv — опрос ФИД phase: equ 38h ;значение текущего угла поворота вала phase_drv: push psw /сохранение используемых ресурсов push а Зок -I so i
194 Гпава 7 mov a,phase incs_corr: incs_ok: decs: decs_corr: ph_ex: jnb p3.3,decs ;анализ направления вращения по уровню фазы 2 add а,#2 ;вращение "вперед" cjne а,#200,incs_corr j с incs_ok clr а sjmp ph_ex clr с subb a,#2 jnc ph_ex mov a,#198 mov phase,a ;вращение "назад" ;обновление значения угла pop а pop psw reti ;восстановление используемых ресурсов ;используемые точки входа в обработчики прерываний org 0003h ljmp phase_drv Передача управления на подпрограмму осуществляется контроллером прерываний при обнаружении среза на входе Р3.2 (INTO). По уровню сигнала на входе РЗ.З определяется направление вращения и соответствующим образом изменяется значение кода текущего измеряемого угла вала. Так как в полный оборот входит 100 шагов (нумеруемых от 0 до 99), а в 8-битной ячейке памяти хранятся значения от 0 до 255, то вводится следующая процедура масштабирования: квант поворота вала изменяет значение кода угла на 2 единицы, при этом область допустимых значений этого кода лежит в диапазоне от 0 до 198. Для использования значения кода угла в фоновой программе достаточно просто обратиться к ячейке phase. Следует отметить, что в процедуре инициализации основной программы следует разрешить обработку запросов прерывания этого типа (например, инструкцией setb exO). С незначительными изменениями схема может быть использована и для обслуживания фотоимпульсных датчиков иных типов (необходимо лишь учитывать принятый для них диапазон кодирования углов). Реализация встраиваемых систем управления электромеханическими объектами 195 7.7. Обработка сигналов синусно-косинусных вращающихся трансформаторов Помимо рассмотренного в предыдущем разделе способа измерения углового положения с применением ФИД, в автоматике широко применяются синусно- косинусные вращающиеся трансформаторы (СКВТ). СКВТ имеют три обмотки: две из них расположены на статоре и подключены к двум источникам напряжений, изменяющихся по гармоническому закону, со взаимным сдвигом фаз в 90°, что позволяет условно именовать одну обмотку "синусной", а другую — "косинусной". Таким образом, во внутреннем пространстве СКВТ образуется круговое электромагнитное поле, индуцирующее в выходной обмотке, расположенной на роторе СКВТ, напряжение, также изменяющееся по гармоническому закону, и имеющее сдвиг фаз относительно опорного напряжения, зависящий от угла поворота ротора. Как правило, фазу измеряют относительно "синусной" обмотки (рис. 7.11). Схемотехническая реализация устройства сопряжения микроконтроллера с СКВТ показана на рис. 7.12. На выходах Р1.1 и Р1.2 порта Р1 микроконтроллера MCU формируются ШИМ-сигналы со скважностью, пропорциональной соответственно модулю мгновенного значения "синусного" и "косинусного" питающих сигналов, а на разрядах 5 и 4 порта РЗ формируются коды их знаков, обеспечивающие протекание тока через питающие обмотки СКВТ в нужных направлениях. Вентили "2-И" микросхемы К555ЛИ1 обеспечиваю! знакопеременную модуляцию, а усилитель КР1128КТ4 обеспечивает необходимые уровни токов и напряжений: Каждый полупериод гармонического сигнала, снимаемого с выходной обмотки СКВТ, отмечается переключением разряда РЗ.З (INT1), обеспечиваемого формирователем на основе триггера Шмитта К555ТЛ2 и RC-цепочки, фильтрующей шумовые выбросы в сигнале; таким образом, один раз за период будет сформирован срез сигнала на входе РЗ.З, приводящий к активизации запроса прерывания INT1. Схема подпрограммы, обслуживающей СКВТ, представлена на рис. 7.13, а ее текст— в листинге 7.5. По приходу запроса прерывания от таймера ТО программа-обработчик обеспечивает генерацию на выходах усилителя очередного мгновенного значения гармонических сигналов sin и cos, обращаясь к таблице, хранящей образ гармонического сигнала в виде констант ШИМ; знаки сигналов программно изменяются каждые 0,5 периода их следования. Значение указателя на таблицу "sin" в момент срабатывания INT1 и будет являться кодом углового сдвига. В программе генерируются гармонические сигналы с частотой 65 Гц, поэтому формирование очередной точки (длина периода 256 точек) должно проис-
Реализация встраиваемых систем управления электромеханическими объектами 197 Infineon 80515 К555ЛН1 Vcc Р1.1 мси Р3.5 Р3.4 Р1.2 Gnd РЗ.З КД507А ЗЗООм Ф 1 КД507А. 2i 14 К555ЛИ1 14 J3 — i 1 12 10 [Л] 4 5 +5В КР1128КТ4 т 11 ю 15 К555ТЛ2 • +5В +20В 8 Ж |Т 9 нФ^: L и 12 13 14 Up Ucc Е1 Е2 Q1 Q2 Q3 Q4 Gnd Gnd Gnd Gnd 11 14_ С КВТ Usin iYYYl U cos J_ Увых Рис. 7.12. Схемотехническая реализация устройства сопряжения с CKBT Обработчик прерывания ТО Сдвиг указателя на таблицу SIN Чтение таблицы SIN, выдача константы ШИМ в канал 1 Инверсия знака SIN (разряд Р3.5) Сдвиг указателя на таблицу COS Чтение таблицы COS, выдача константы ШИМ в канал 2 Инверсия знака COS (разряд Р3.4) Обработчик прерывания INT1 Чтение значения указателя на таблицу SIN Занесение значения указателя в переменную сдвига фаз Г V ) Рис. 7.13 . Схема подпрограммы обслуживания CKBT
198 Гпава 7 ходить каждые 106/(65 *256) мкс, т. е. через 60 мкс (погрешность 0,16%). Перечислим необходимые для этого настройки системы. Таймер ТО должен быть настроен в 8-битный режим с константой перезагрузки C4h. Указатели фаз sin и cos должны быть инициализированы кодами, сдвинутыми на 1/4 периода: в sin_ptr— 0, в cos_ptr— 64. Запросы прерываний ТО и INT1 должны быть разрешены. Блок быстрого ввода-вывода должен быть настроен в режим вывода ШИМ-сигналов по каналам. 1 и 2; код автоперезагрузки таймера-счетчика Т2 должен равняться FFOOh. Отметим, что при отсутствии жестких ограничений на точность и стабильность измерения угла в данной системе можно применять СКВТ, рассчитанные на более высокие значения частоты опорных сигналов, в частности, широко распространенный СКВТ 8МВТ-Е-10П. ; Листинг 7.5. Текст подпрограммы обслуживания СКВТ ;подпрограмма skvt_drv — обслуживание СКВТ sin_j?tr: equ 39h ;значение указателя на таблицу sin cos_ptr: equ 3ah ;значение указателя на таблицу cos delta: equ 3bh ;результат: сдвиг выходного сигнала ;относительно sin /таблица описания гармонического сигнала: ;25б точек — 2 положительных полупериода sig: db 000, 006, 013, 019, 025, 032, 038, 044, 050 db 057, 063, 069, 075, 081, 087, 093, 099, 105 db 110, 116, 122, 127, 133, 138, 143, 149, 154 db 159, 164, 168, 173, 178, 182, 187, 191, 195 db 199, 203, 207, 210, 214, 217, 220, 223, 226 db 229, 232, 234, 237, 239, 241, 243, 245, 246 db 248, 249, 250, 251, 252, 253, 253, 254, 254 db 254, 254, 254, 254, 254, 253, 253, 252, 251 db 250, 249, 247, 246, 244, 242, 240, 238, 236 db 234, 231, 228, 225, 222, 219, 216, 213, 209 db 205, 202, 198, 194, 189, 185, 181, 176, 172 db 167, 162, 157, 152, 147, 142, 136, 131, 125 db 120, 114, 109, 103, 097, 091, 085, 079, 073 db 067, 061, 055, 048, 042, 036, 030, 023, 017 db 011, 004, 002, 008, 015, 021, 027, 034, 040 db 046, 053, 059, 065, 071, 077, 083, 089, 095 db 101, 107, 112, 118, 124, 129, 135, 140, 145 db 150, 155, 160, 165, 170, 175, 179, 184, 188 Реализация встраиваемых систем управления электромеханическими объектами 199 db 192, 196, 200, 204, 208, 211, 215, 218, 221 db 224, 227, 230, 233, 235, 238, 240, 242, 244 db 245, 247, 248, 250, 251, 252, 252, 253, 254 db 254, 254, 254, 254, 254, 254, 254, 253, 252 db 252, 251, 250, 248, 247, 245, 244, 242, 240 db 237, 235, 233, 230, 227, 224, 221, 218, 215 db 211, 208, 204, 200, 196, 192, 188, 184, 179 db 175, 170, 165, 160, 155, 150, 145, 140, 135 db 129, 124, 118, 112, 107, 101, 095, 089, 083 db 077, 071, 065, 059, 052, 046, 040, 034, 027 db 021, 015, 008, 002 ;обработчик запросов прерывания таймера ТО — выдача очередного /мгновенного значения опорных сигналов 1 раз в 60 мкс timO: push psw push a push dph. push dpi mov dptr, #sig ;сохранение используемых ресурсов ;адресация указателя базы на таблицу ;гармонического сигнала /подготовка к формированию очередной точки ;изменение знака каждый полупериод mc sinjptr mov a, sinjptr cjne а, #128, nxt__ch cpl рЗ.5 nxt_ch: cjne a, #0, tim_con2 cpl p3.5 tim_con2: move a, @a+dptr cpl a mov c2h, а /выдача константы ШИМ в канал 1 HSIO inc cos_ptr ;подготовка к формированию очередной точки mov a, cos_ptr cjne а, #128, nxt_chl ,-изменение знака каждый полупериод cpl р3.4 nxt_chl: cjne а, #0, tim_conl cpl р3.4 tim_conl: move a, @a+dptr cpl a mov c4h, а /выдача константы ШИМ в канал 2 HSIO pop dpi ;восстановление используемых ресурсов pop dph pop a pop psw ' • reti cos
200 Гпава 7 ; обработчик запросов прерывания INT1 — фиксация величины сдвига фаз /выходного сигнала относительно опорного sin-сигнала intl: mov delta, sin_ptr reti ;используемые точки входа в обработчики прерываний org 0013h ljmp intl org OOObh с ljmp timO 7.8. Управление двигателями постоянного тока Одним из наиболее применяемых в автоматике типов электродвигателей является двигатель постоянного тока (ДПТ), характеризующийся простотой управления, удобством аналитической модели, линейностью характеристик в широком диапазоне условий эксплуатации. Рассмотрим реализацию управления ДПТ, обеспечивающую управление частотой вращения двигателя с возможностью смены направления вращения (реверсом). Достаточно высокая (по сравнению с быстродействием управляющего микроконтроллера) инерционность электродвигателей, в основном определяемая механическими и конструктивными особенностями и составляющая, как правило, десятки (и более) миллисекунд, позволяет использовать для управления не аналоговый сигнал, от амплитуды которого линейно зависит желаемая частота вращения со, а широтно-импульсно-модулированный сигнал, в котором для изменения со соответствующим образом изменяется соотношение Тимпульса/Тг,аузы- В сущности, изменение этого соотношения (соответственно и мощности, передаваемой на двигатель за период действия ШИМ-сигнала) эквивалентно изменению уровня аналогового напряжения управления (рис. 7.14). Сглаживание импульсов ШИМ происходит за счет инерционности объекта управления. Схемотехническая реализация устройства сопряжения микроконтроллера с ДПТ показана на рис .7.15. ШИМ-сигнал необходимой скважности снимается с контакта Р1.1, представляющего собой выход канала блока быстрого ввода-вывода, обсспечивающе- Реализация встраиваемых систем управления электромеханическими объектами 201 ШИМ, Рис. 7.14. Сигналы ШИМ-управления С Vcc Р1.1 Р3.5 мси Gnd J4 13 14 .12 10 +5В _10 15 +15В8 _ . +5В~Тб" К555ЛН1 К555ЛИ1 -g 11 KP1128KT3A И 12 13 14 Up Ucc Е1 Е2 Q1 Q2 Q3 Q4 Gnd r|-i Gnd ?, Gnd Gnd 3 6 11_ 14 12 Из. Infineon 80515 +15B VD1-VD4 Ж КД507А Ж ДПМ-25Н1-02 Рис. 7.15. Схемотехническая реализация устройства сопряжения с ДПТ
202 Гпава 7 го при соответствующей программной настройке формирование ШИМ. Знак, определяющий направление протекания тока через обмотку ДПТ, задается контактом Р3.5 микроконтроллера MCU. На вентилях "НЕ" и "2И" реализован узел, обеспечивающий наложение знака на ШИМ-сигнал, а микросхема КР1128КТЗА предназначена для усиления мощности управляющих сигналов. Временные диаграммы работы узла показаны на рис. 7.16. из Знак = 1 ШИМ>0 Включен верхний ключ Знак = х ШИМ=0 Оба ключа выключены Знак = 0ШИМ>0 Включен нижний ключ U6 11 Направление протекания тока через двигатель: Вращение по часовой стрелке Ток через обмотку не течет Двигатель неподвижен 11 Направление протекания тока через двигатель: Вращение против часовой стрелки Рис. 7.16. Временные диаграммы работы устройства сопряжения с ДТП Микросхема КР1128КТЗА идентична по цоколевке и параметрам рассмотренной в предыдущем разделе микросхеме КР1128КТ4, но, в отличие от нее, коммутирует большие токи (до 1 А постоянного тока на фазу) и требует при подключении индуктивной нагрузки применения внешних диодов, что и выполнено в примере. Отметим, что возможен вариант аппаратной реализации, в котором для управления используются не один, а два канала ШИМ, при этом операции наложения знака на ШИМ-сигнал выполняются программно: на одном канале осуществляется генерация ШИМ, на другом такая генерация блокируется (формируется логический ноль). Такая организация позволяет исключить из схемы вентили "НЕ" и "2И", однако расходует важный ресурс МК— каналы ШИМ. Степень оптимальности вариантов решений должна определяться в каждом случае применения индивидуально. Реализация встраиваемых систем управления электромеханическими объектами 203 Схема программы-драйвера ДПТ представлена на рис. 7.17, а ее текст- в листинге 7.6. Настройка ШИМ Установка нового кода задания Настройка таймера Т2 в режим автоперезагрузки Прием кода управления, выделение бита знака, его запись в разряд Р3.5 Установка альтернативной функции разряда 1 порта Р1 Изменение диапазона разрядов, кодирующих интенсивность ШИМ Настройка канала 1 HSIO в режим ШИМ Выдача сформированного кода в регистр данных канала 1 Рис. 7.17. Схема подпрограммы управления ДПТ ! Листинг 7,6, Текст подпрограммы управления ДПТ /подпрограмма dpt_drv — управление ДПТ k_upr: equ 30h main: lcall init cycle: ;... lcall pwm sjmp cycle ;величина кода управления: 7-й разряд — знак, ;разряды 6... О — модуль ;настройка переменных и устройств /действия, предусмотренные в главном цикле ;фоновой программы, в их числе - ;выдача управления на ДПТ ¦ init: mov c8h,#00010001b ;3адать режим Т2: неуправл. счет ; с автрперезаг'рузкой
204 Гпава 7 mov cbh,#FFh mov cah,#8Oh orl pl,#00000010b mov clh,#00001000b mov c3h,cbh mov c2h,cah mov k_upr, #0 ret Константа перезагрузки: старший байт младший байт (f vm 1 Л Вывод через канал №1 (разряд' Р1.1) тип сигналов — сигналы ШИМ Установка минимального кода ШИМ кГц) mov a, k upr /прием кода управления mov с,acc.7 /выделение знака mov p3.5, с /и выдача его на соответствующий контакт cpl a /больше код — шире импульс orl. a,#80h /учет диапазона изменения кода mov c2h, a /выдача в младший байт регистра канала ret Положим, что переменная управления, формируемая извне (например, подпрограммой-регулятором), определена в следующем формате: младшие 7 бит переменной управления кодируют интенсивность ШИМ-сигнала, а старший —- его знак. Поскольку ограничение сверху на частоту ШИМ-сигнала не накладывается (имеется лишь ограничение снизу: важно, чтобы она была на порядок выше собственный частоты объекта управления), выберем частоту максимальной из удобных. Для этого проинициализируем регистр перезагрузки таймера кодом FF80h. Таким образом, для корректной отработки ШИМ-сигналов регистр данных канала должен содержать значения в диапазоне FF80h—FFFFh, т. е., управление скважностью производится значениями младшими семью битами младшего байта регистра данных (и только ими). Удобство реализации очевидно — отделив из кода управления знаковый разряд и передав его на разряд Р3.5, оставшиеся 7 бит (кодируют диапазон 00—7Fh) необходимо добавить к коду 80h (минимальное значение младшего байта регистра канала) и занести результирующее значение в младший байт регистра данных канала. 7.9. Управление вентильными двигателями Вентильные двигатели (ВД)— иное название "бесконтактные ДПТ" — принципиально отличаются от последних отсутствием механического устройства распределения токов по частям обмоток ротора (коллектора): его роль выполняют транзисторные ключи соответствующей мощности, пере- Реализация встраиваемых систем управления электромеханическими объектами 205 ключающиеся по командам' устройства управления, определяющего текущее положение ротора. Достоинства данного решения очевидны: увеличиваются надежность и долговечность работы двигателя за счет уменьшения количества трущихся деталей, снижаются взрыво- и пожароопасность за счет отсутствия искрения при коммутации (в ДПТ больших мощностей искрение на щетках весьма велико, что исключает их применение в атмосфере, насыщенной кислородом, водородом и другими взрывоопасными газами и парами без громоздких приспособлений, снижающих риск взрыва). Рассмотрим вариант построения системы управления ВД с ротором в виде восьмиполюсного постоянного магнита, оборудованного фотоэлектрическим датчиком положения (рис. 7.18). Обмотки А, В, С расположены на статоре со сдвигом на 30°. Выходной код, считываемый с датчика положения ротора, однозначно определяет для внешнего наблюдателя номер текущей фазы — положения ротора ВД. Фотоэлементы датчика положения ротора к Показана укладка обмоток А, В, С с указанием начала и конца каждой обмотки Крыльчатка датчика положения ротора Фаза k I m 1 101 2 100 3 110 4 010 5 011 6 001 Рис. 7.18. Конструкция вентильного двигателя Для формирования магнитного поля, обеспечивающего вращение ВД, сигналы датчиков k, l, m в парафазном виде поступают на коммутатор, состоящий из шести транзисторных ключей. Каждый цикл работы коммутатора обеспечивает поворот ротора на 90° и состоит из шести фаз, в каждую из которых включены два параллельных и один последовательный ключ. Временные
206 Гпава 7 диаграммы работы ключей и результирующие фазные напряжения обмоток показаны на рис. 7.19. Ыпит Сн Рис. 7.19. Структура и временные диаграммы работы транзисторного коммутатора К1 К2 КЗ К4 К5 Кб Uao Ubo Uco 0° |2ипит/3; ипит/З! 3 F 60° 120° 1180° 240° | 300° Прототип схемотехнической реализации устройства сопряжения с ВД показан на рис. 7.20. В качестве усилителя используется аналог коммутатора КР1128КТ4— микросхема L298N, обладающая более высокими порогами переключения по входным сигналам, что позволяет использовать сигналы, непосредственно сформированные выходами оптопар фотоэлектрического датчика. Коммутация производится так, чтобы угол между потоками якоря и возбуждения составлял 15°. В результате взаимодействия них потоков создается Реализация встраиваемых систем управления электромеханическими объектами 207 вращающий момент, стремящийся развернуть ротор в согласованное положение, но при повороте ротора коммутатор по сигналам с фотоэлементов выполняет переключение обмоток, и поток якоря поворачивается на следующий шаг. О _+5В Vcc Р1.1 MCU Gnd L298N If 5 I 7 m — 10 Ж +27B 4 +5B 9 to 11 11 0 Q1 12 Q2 I3 Q3 14 0.4 Up Gnd Ucc Gnd E1 Gnd E2 21 21 21 +27b _/vw\ _ЛЛЛЛ yvw\ 2\ li 21 VD1-VD6 КД507А infineon 80515 Рис. 7.20. Схемотехническая реализация устройства сопряжения с ВД Изменением амплитуды Шит обеспечивается различная скорость движения ротора к очередному согласованному положению. Таким образом, используя широтную модуляцию, можно управлять частотой вращения двигателя. Схема программы-драйвера и ее текст аналогичны рассмотренным для двигателя постоянного тока; отличие заключается лишь в отсутствии задания и анализа направления вращения, т. к. этот параметр системы в данной схеме задан аппаратно и не изменяется. 7.10. Управление асинхронными трехфазными двигателями Асинхронные трехфазные двигатели (АТД) обладают высоким КПД и низкой стоимостью, а также высокой надежностью, что позволяет рекомендовать их в ряде задач автоматики в качестве исполнительных двигателей. При управлении АТД, как правило, применяется амплитудно-частотное управление, характеризующееся пропорциональной зависимостью амплитуды питающего напряжения от частоты его изменения. Как и в случае управления ВД, для АТД необходимо сформировать вращающееся электромагнитное поле, управляя набором ключей Kl—Кб, преобразующих постоянное напряжение Ииит в трехфазное напряжение переменного
208 Гпава 7 тока (рис. 7.21). В отличие от диаграммы для ВД, здесь показаны уровни напряжений между началами обмоток. Сн К1 КЗ К5 К2 К4 Кб Uab Ubc Uca Рис. 7.21. Структура и временные диаграммы работы блока ключей 1 2 3 4 5 6 1)пит ! ^ 180° 240° 300° 0° 60° 120° Изменение частоты вращения ротора АТД достигается изменением частоты коммутации ключей К1—Кб с одновременным изменением Шит так, чтобы соотношение между амплитудой и частотой напряжения оставалось постоянным. Изменение амплитуды Unnr обеспечивается с помощью ШИМ (рис. 7.22). Схема и текст программы-драйвера АТД показаны на рис. 7.23 и в листинге 7.7. Реализация встраиваемых систем управления электромеханическими объектами +5В +27В +27В T1...T3 TA-30 Рис. 7.22. Схемотехническая реализация устройства сопряжения с АТД
210 Гпава 7 Драйвер АТД (фоновая часть) Обработчик прерывания ТО по коду управления рассчитать значение делителя частоты меток таймера ТО Инкрементировать счетчик вызовов по значению делителя частоты рассчитать код ШИМ для 11пит Нет Считать новый код фазы, выдать в порт Обновить значение делителей Рис. 7.23. Схемы программ управления АТД Листинг 7.7. Текст подпрограммы управления АТД подпрограмма atd_drv — управление АТД atd_cntr: oldatd: n_cycle: count_sec: newcntsec: num_sec: main: cycle: equ 3Ah equ 39h equ 42h equ 43h equ 44h equ 45h lcall init atd ;код управления АТД ;значение ШИМ предыдущего цикла ;счетчик фаз ;делители частоты ;настройка переменных и устройств, ;в частности — подсистемы управления АТД lcall main_count_sec /расчет амплитуды Опит lcall atdcontr /формирование Опит посредством ШИМ sjmp cycle Реализация встраиваемых систем управления электромеханическими объектами 211 ;настройка таймера в 16-битный режим ;частота перезагрузок таймера 1 кГц :начальное положение фаз lnit_atd: mov a,tmod anl a,#11110000b . orl a,#00000001b mov tmod,a mov thO,#FCh mov tlO,#18h mov newcntsec, #18 mov n_cycle,#0 mov oldatd,#255 mov num_sec, #0 setb PI.7 clr PI.6 setb PI.5 setb trO mov 0c8h,#00010001b mov 0clh,#00001000b orl pl,#00000010b mov cah,#00h mov cbh,#0feh mov c2h,#00h mov c3h,#0feh setb etO setb ea ret int_tO: mov tl0,#18h mov th0,#FCh push acc push psw push dph push dpi inc num_sec ;АТД переключается на очередную фазу mov a,num_sec ;через каждые newcntsec миллисекунд cjne a,newcntsec,not_eqv mov newcntsec,count_sec ;обновление значения делителя частой lcall key mov num_sec,#0 not_eqv: pop dpi pop dph pop psw pop acc reti ;пуск таймера 0 ;настройка T2 для обеспечения ШИМ ;для ШИМ выделяется канал 1 — через Р1. ;f ШИМ 2 кГц /начальное задание ШИМ ;разрешение прерываний от ТО ;обработчик запросов прерывания от ТО 1
272 Гпава 7 /подпрограмма формирования импульсов для управления ключами /переход на очередную фазу /нумерация фаз от 0 до 5 key: inc n_cycle mov a,n_cycle cjne a,#6, not_6 mov n_cycle,#0 mov a,n_cycle not_6: mov dptr, #table move a,@a + dptr anl pl,#0Fh orl pi,a ret table: db 160, 32, 96, 64, 192, 128 /таблица кодов коммутаций в /разрядах 5-7 содержит триады: /101 - 100 - 110 - 010 - 011 - 001 /считать код коммутации ключей К1-К6 /и выдать их в старшие разряды порта Р1 main_count_sec: mov a,atd_cntr cpl a mov b,#3h div ab . add a,#19h mov b,#6 div ab mov count_sec,a ret /по коду управления рассчитывается частота /при максимальном коде управления /count_sec' равен 4 /при минимальном коде управления /count_sec равен 18 atdcontr: mov a,newcntsec /по частоте управления рассчитывается код ШИМ mov b,#14 mul ab /Кшим изменяется от 56 до 252 cjne a, oldatd, ch_atd /прямо пропорционально частоте вращения jmp exit_atd ch_atd: mov oldatd,а /в случае изменившегося управления - mov c2h,a • /обновление младш. байта per. меток канала 1 exit_atd: ret /размещение точек входа /в обработчики соответствующих запросов прерываний org 000bh ljmp tO int /по отсчету временных интервалов Реализация встраиваемых систем управления электромеханическими объектами 213 7.11. Управление асинхронными двухфазными двигателями Особенностью управления двигателями данного типа является необходимость привязки начала периода управляющего напряжения к началу периода питающего; при этом оба напряжения изменяются по гармоническому закону. Типовым методом организации управления асинхронными двухфазными двигателями (АДД) является использование тиристорного ключа, открываемого на заданную долю периода и коммутирующего тем самым на обмотку управления заданную долю мощности от максимальной. Таким образом, задача программы управления АДД состоит в расчете величины временного сдвига относительно начала каждого очередного периода, обеспечивающей требуемую мощность (частоту вращения), определении начала очередного периода, выдержке рассчитанного интервала времени и генерации сигнала, управляющего тиристорным ключом. Идеальные временные диаграммы, характеризующие такое тиристорное управление, показаны на рис. 7.24. исети исинхр. имп. Uynp. тир. иобм. упр. V I - ; 1 /~\ ' / 1 , 1 i ' i у 1 ' 1 / ч 1 ! \ I ! Y ' j l ! i | ' I 1 ll I il 111 l\ 1 / 1 \ ! /1 I \y | II 1 n i\ I 1 \ ,| j И i i, И i ; 1 ' ' 1 1 1 1 1 1 1 1 I 1 i /I i 1r н=Ф(Купр,) Купр,<Купрг г2=Ф(Купрг) Рис. 7.24. Организация тиристорного управления Учитывая принцип работы тиристора, выдача на пего открывающего импульса производится дважды за период (т. е. расчет временных сдвигов ведется
214 Глава 7 относительно начала каждого полупериода напряжения обмотки возбуждения). Схема устройства сопряжения микроконтроллерной системы с АДД показана на рис. 7.25. Рис. 7.25. Схемотехническая реализация устройства сопряжения с АДД В схеме можно выделить две подсистемы. Цепь формирования синхросигналов начала очередного периода питающего напряжения, которая образована выпрямителем на диодном мосте, сглажи- микросхемы KI55TJI1. Эти сип- напряжения, которая обр вающим фильтром и триггером Шмитга Реализация встраиваемых систем управления электромеханическими объектами 215 хросигналы поступают на вход Р3.2 микроконтроллера MCU (выпрямитель формирует однополярное напряжение, резистивный делитель снижает его амплитуду, конденсатор формирует "плато" импульса, а триггер Шмитта обеспечивает необходимую крутизну фронтов, пригодную для дальнейшего восприятия цифровыми цепями микроконтроллера). Цепь управления образована тиристором, оптопарой и буферным инвертором. Напряжение на обмотку управления АДД коммутируется посредством тиристора, управляемого от контакта Р1.2 микроконтроллера через оптоэлек- тронную развязку (для дополнительной безопасности цепей микроконтроллера открываемую через буферный инвертор). Короткие импульсы управления тиристором формируются дифференцирующей цепочкой на основе мощных конденсатора и резистора. Сдвиг фаз напряжений обмотки возбуждения и обмотки управления достигается применением конденсатора емкостью ЮмкФ, включенного в цепь обмотки возбуждения. Рассмотрим реальную временную диаграмму, иллюстрирующую работу формирователя синхроимпульсов (рис. 7.26), наблюдаемую в схеме с учетом приведенных значений параметров элементов. Как следует из приведенных графиков, сигнал начала очередного полу периода питающего напряжения (срез импульса) в силу запаздывания сигнала на RC-звене, а также гистерезиса микросхемы KI55TJII оказывается смещенным на 3,4 мс относительно истинного момента начала полупериода, что не-
216 Гпава 7 обходимо учесть в программной реализации системы, введя соответствующие поправочные коэффициенты. Интервал времени задержки включения тиристора должен составлять от 5 мс (при выдаче максимальной мощности) до 10 мс (при выдаче минимальной мощности) относительно начала полупериода или от 1,6 мс (5 мс - 3,4 мс) до 6,6 мс относительно момента обнаружения среза на входе Р3.2 микроконтроллера. Для программной реализации системы управления следует разработать программные обработчики прерываний двух типов. В первом, активизирующемся сигналом INTO (срез импульса на входе Р3.2), проводится расчет длительности паузы, выдерживаемой перед включением тиристора, и запускается отсчет этого интервала с помощью таймера ТО. Во втором, активизирующемся сигналом переполнения таймера ТО, генерируется импульс управления (отметим, что для этого должна быть соблюдена следующая процедура действий: сформирован фронт импульса, произведен перезапуск таймера для отсчета времени длительности импульса, и при следующем выполнении обработчика сформирован срез импульса). Схемы программ-обработчиков показаны на рис. 7.27, а их текст приведен в листинге 7.8. Обработчик прерывания INTO Обработчик прерывания ТО рассчитать значение времени счета и загрузить его в регистр данных таймера ТО активизировать счет таймера ТО заблокировать обработку •запросов INTO - Выдать на разряд Р1.2 высокий логический уровень загрузить в регистр данных таймера ТО время длительности импульса I активизировать счет таймера ТО Выдать на разряд Р1.2 низкий логический уровень I заблокировать счет таймера ТО I разрешить обработку запросов INTO I Рис. 7.27. Схемы программ управления АДД Реализация встраиваемых систем управления электромеханическими объектами 217 Листинг 7.8. Текст подпрограммы управления АДД /подпрограмма add_drv — управление АДД k_upr: main: cycle: equ 30h /величина кода управления скоростью АДД /настройка переменных и устройств, lcall init_add ;в частности - подсистемы управления АДД }.••- /действия, предусмотренные sjmp cycle ;в главном цикле фоновой программы init_add: mov a,tmod anl a,#F0h orl a, #01b mov a,tmod setb etO setb exO setb itO clr FO clr pi.2 setb ea ret , ,-установка режима таймера счетчика ТО ;16-разрядный таймер ;разрешение обработки запросов прерываний от ТО ;и INTO ;от INTO — срезом сигнала ;флаг состояния импульса /разряд порта, управляющий тиристором ;разрешение обработки запросов прерываний sync: push а push b push psw push 0 /обработчик запросов INTO - действия, связанные ;c началом очередного полупериода Псети ;сохранение ресурсов фоновой программы mov а,k_upr cpl а mov b,#19 mul ab . add a,#40h mov r0,a полупериода mov a,b addc a,#06h mov b,a /чем больше код управления — тем меньше сдвиг /относительно максимума полупериода /масштабирование интервала 0...255 /в интервал 0...5000 (точно: 4845) /сдвиг до максимума исети - /т. е. на 5000 мкс от истинного начала /или на 1600 мкс относительно среза сигнала INTO clr с mov а,#255 subb а,г0 /загрузка интервала счета в таймер ТО /счет идет до кода FFFFh
278 Гпава 7 tO int: off: mov tlO,a mov a,#255 subb a,b mov thO,a setb trO clr exO pop 0 pop psw pop b pop a reti jb F0,off setb pi.2 mov th0,#255 mov tlO,#0 setb FO sjmp ex clr pi.2 clr FO clr trO setb exO reti org 0003h ljmp sync org OOObh ljmp tO_int /активизация таймера TO для отсчета интервала /блокировка запросов INTO /восстановление ресурсов фоновой программы /обработчик запросов ТО /определение текущего состояния импульса: /фронт/срез /формирование фронта /задание времени выдержки (255 мкс) /формирование среза /блокировка таймера до следующего отсчета /размещение в памяти точек входа в обработчики /соответствующих запросов прерываний /по обнаружению полупериода /по отсчету временных интервалов Примечание . .— Целочисленные вычисления на микроконтроллере приводят к необходимости округления масштабных коэффициентов; в данном случае расширение интервала (0...255) до интервала (0...5000) требует коэффициента 19.6, округленного отбрасыванием дробной части до 19.0. Погрешность масштабирования составит (255*19— 5000)/5000, т. е. около 3%, что вполне приемлемо для систем данного вида. В случае потребности более точных вычислений следует использовать подпрограммы многобайтных вычислений. Реализация встраиваемых систем управления электромеханическими объектами 219 7.12. Управление шаговыми двигателями Особенностью систем на основе шаговых двигателей является дискретная форма представления управляющих сигналов. При подаче на обмотки двигателя кодовой комбинации напряжений вал двигателя смещается на шаг, определенный конструкцией привода. Это позволяет применять такие приводы в системах позиционирования, т. к. до выдачи новой кодовой комбинации угол поворота ротора не меняется (при воздействии на вал нагрузок в допустимом диапазоне значений). При управлении шаговым двигателем по скорости необходимо переключать кодовые комбинации с частотой, зависящей от требуемой частоты вращения вала, а при управлении по положению — переключать комбинации на заданное количество шагов. Кодовые комбинации должны меняться в строго определенной последовательности для обеспечения правильного изменения электромагнитного поля, при этом между их сменами должен выдерживаться интервал, определяемый механической и электромагнитной инерционностью двигателя. Схема аппаратуры системы управления шаговым двигателем (ШД) показана на рис. 7.28. Двоичные коды, определяющие коммутируемые обмотки, по которым будет протекать ток, поступают с четырех (по числу фазных обмоток) старших разрядов порта Р1 на схему сопряжения, состоящую из интегрального усилителя КР1128КТ4, обеспечивающего усиление мощности выходных сигналов порта до уровня, способного уверенно управлять транзисторными ключами КТ827А. Код логической "1" обеспечивает протекание тока через обмотку двигателя, код логического "0" блокирует протекание тока. Для быстрого гашения переходных процессов, возникающих в силу индуктивности обмотки при выключении транзисторного ключа, в схему введены демпфирующие диоды. Наиболее распространенным способом переключения обмоток является так называемая парная коммутация, при использовании которой в каждый момент времени ток протекает через две фазные обмотки. Разрешенными комбинациями парных обмоток являются две соседние по номеру обмотки: 1-я и 2-я, 2-я и 3-я, 3-я и 4-я, 4-я и 1-я. Переключение между ними должно происходить строго последовательно, от комбинации к комбинации; этим достигается необходимое для вращения двигателя вращение электромагнитного ноля. Таким образом, для вращения в одном направлении на обмотки должны поступать последовательности кодов: "0011, 0110, 1100, 1001, 001 1" и т. д., а для вращения в противоположном направлении комбинациями должны быть "001 1, 1001, 1 100, 01 10, 001 1" и г. д. Алгоритмически это означает выполпе-
ние операции "циклический сдвиг влево" или "циклический сдвиг вправо" над тетрадой с исходным значением "ООН" (рис. 7.29). +20В VD1..VD4 -Д226 R1,R4,R7,R10 -МЛТ1 1кОм R2,R5,R8,R11 - МЛТ0.25 5.1кОм R3,R6,R9,R12 -ПЭВ10 10 Ом VT1..VT4 -KT827A +5В Vcc Р1.7 Р1.6 Р1.5 мси Р1.4 Gnd Infineon 80515 Рис. 7.28. Схемотехническая реализация устройства сопряжения с ШД Схема программы частотного управления ШД с таблично программируемыми изменениями частоты вращения показана на рис. 7.30, а ее текст — в лис тинге 7.9. Реализация встраиваемых систем управления электромеханическими объектами 221 ЗЗЬ ¦ , — — — I ( ( 1 — — — — — —1 — — — 1-22-ЗВ-414-1!1-2 III! ¦ 1 1 1 Вращен частота кс •4 2-3!3-4!4-1!1-2 ¦ 1 1 ле "вправо" ммутации F 2-3 :1 3-4 Fi>F2 4-3 ¦4 3-2 ча 2-1 Вращ стота 1-4 ение' комм 4-3 влевс даци1 3-2 1 F2 2-1 1 Рис. 7.29. Временные диаграммы смены фаз ШД С ч Обработчик прерывания Т1 определить требуемое направление вращения ШД циклический сдвиг кода коммутации обмоток в заданную сторону > считать из базы траектории код длительности текущего шага загрузить в регистр данных таймера Т1 код длительности Рис. 7.30. Схема программы управлении ШД
222 Гпава 7 Листинг 7.9. Текст подпрограммы управления ШД /подпрограмма управления ПЩ /обработчик запросов Т1 step: push а push psw push b push dph push dpi djnz div_step,timlex mov divjstep,#3 jnb, rsd_en, timlex jb pos_done,timlex lcall step djnz n step,timlex действия, связанные /с окончанием очередного интервала между шагами ШД /сохранение ресурсов фоновой программы /программный делитель частоты запросов на 3 setb pos_done /проверка разрешения вращения ШД /проверка завершенности траектории /вызов подпрограммы выполнения одного шага /декремент счетчика шагов/ в случае /отработки заданного числа шагов - /фиксация завершения траектории mov dptr, #step_freq /определение интервала времени /до очередного шага mov a,n step /вычисление смещения rl а /в базе данных траектории по номеру шага add a,dpi /в каждой записи — 2 байта mov dpi,а jnz $exl inc dph movx a,@dptr mov tl_hi,a inc dptr movx a,@dptr mov tl_lo,a mov thl,tl_hi mov tll,tl_lo pop dpi pop dph pop b pop psw pop a rett /возврат из обработчика в фоновую программу /подпрограмма выполнения шага mov a,kupr /направление вращения задается старшим битом Купр jb acc.7,$left /задание длительности времени двухбайтным кодом: /старший байт /младший байт /занесение в старший байт Т/С1 /и в младший байт Т/С1 /восстановление ресурсов фоновой программы Реализация встраиваемых систем управления электромеханическими объектами 223 $right: mov a, step_phase /поворот на шаг "вправо" rr а jmp $contin $left: mov a, step_phase /поворот на шаг "влево" ' - rl а $contin: mov step_phase, a mov b, a mov a, pi /выдача кодовой комбинации в старшую тетраду порта 1 anl а, #00001111Ь anl b, #11110000b orl a, b mov pi, a ret Для придания примеру достаточной общности положим, что управление ШД должно происходить таким образом, чтобы во времени развертывалась некоторая заранее заданная траектория изменения частоты (рис. 7.3 1). О 1 2 34 ... N-2 N-1 N Рис. 7.31. Изменение Atm в режиме разгона-останова ШД В данном случае график иллюстрирует режим работы ШД с разгоном и торможением (отметим, чю подобное плавное изменение частоты применяется на практике в случаях необходимое™ работы на больших частотах под
224 Глава 7 большой нагрузкой с целью предотвращения выпадения из синхронизма, вполне возможного при скачкообразных изменениях частоты). Очевидно, что мгновенное значение угла поворота ротора определяется интегрированием w3 по времени; при этом, т. к. ШД отрабатывает поворот ротора на определенный конструкцией двигателя квант (ступенчатый график на рис. 7.31), то интервал времени, выдерживаемый между шагами, будет меняться нелинейным образом: на участке I интервал времени сокращается (шаги ускоряются); интервал, достигнутый в конце участка I, выдерживается на участке II (движение с постоянной скоростью); наконец, на участке III интервал времени между шагами увеличивается (шаги замедляются). В данном примере ускорения разгона и торможения различны. Таким образом, траектория движения будет однозначно определена заданием начального положения ротора, количества шагов и набора значений Дтщ для всех шагов траектории. Расчет интервала следующего шага может осуществляться как после выполнения предшествующего шага, так и заранее. В последнем случае в памяти управляющего, контроллера можно хранить совокупность (возможно, пополняемую) таблиц длительностей и по мере надобности переключаться между различными траекториями (типами) движения. В приведенном программном примере имеется одна таблица, расположенная в памяти с адреса метки step_freq, описывающая траекторию, состоящую из 128 шагов. В таблице хранятся коды длительностей интервалов, отмеряемых таймером Т1. Вопрос согласования необходимого диапазона выдерживаемых интервалов между шагами (иными словами, диапазона частот wMlN... wMAx) с квантом счета таймера Т1 решается следующим образом. Потребная частота коммутации обмоток ШД лежит в диапазоне от десятков герц до долей герца, а интервалы, отмеряемые таймером, лежат в диапазоне от десятков микросекунд до десятков миллисекунд. В связи с этим необходимо увеличивать интервалы, генерируемые таймером, в некоторое количество раз (в данном примере коэффициент "растяжки", исходя из заданного диапазона частот, равен 3): Такой прием сокращает размер таблицы, т. к. уменьшается длина кодового слова, задающего интервал выдержки времени. Необходимое направление вращения задается старшим битом кода управления kupr. В байте step_phase хранится код коммутации обмоток (изначально 99h). Флаг rsden позволяет программе верхнего уровня "включать" и "выключать" ШД. Генерируемый программой управления ШД признак pos done информирует программу верхнего уровня о достижении конца траектории. Для корректной работы таймер Т1 должен быть настроен в режим 16-битного счета И разрешена обработка запросов прерываний от него, передающая управление на адрес метки i im ]. Реализация встраиваемых систем управления электромеханическими объектами 225 Использование таблично заданных траекторий движения открывает широкие возможности для управления двигателями любых типов. Так, например, для случая управления ДПТ по частоте, в таблице будут храниться коды ШИМ (определяющие частоту вращения двигателя), извлекаемые из нее через равные интервалы времени, задающие квант скорости изменения частоты вращения. В более сложных случаях в таблице можно хранить и код ШИМ, и код интервала времени действия этого кода. 7.13» Моделирование объектов в системах управления В ряде случаев объекты управления являются не полностью наблюдаемыми, например, в случае недоступности для измерения некоторого параметра объекта или его некоторой переменной состояния. В то же время, для решения задачи управления с заданными критериями качества использование значений таких параметров или переменных состояния в вычислениях может быть принципиально необходимым. В таких случаях производится их косвенное определение. Наиболее просто оно выполняется, когда искомое значение однозначно определяется значениями доступных прямому измерению параметров, однако такая связь скорее исключение; в большом числе практических случаев значение искомого параметра обладает собственным динамическим поведением. В качестве базовых методов для расчета моделей динамических объектов применяются алгоритмические (вычисления по найденным аналитическим соотношениям) и неалгоритмические (нейро- и нечеткие модели) методы. Во втором случае собственно расчет модели выполняется универсальными программами-эмуляторами и не представляет сложности; основной проблемой является получение описания модели в терминах нечеткой логики или нейро- сетей. В связи с этим далее рассмотрен пример алгоритмического расчета модели. В качестве примера рассмотрим задачу моделирования динамического объекта; не теряя общности, для снижения громоздкости описания выберем объект первого порядка— интегрирующее RC-звено. Математическое описание объекта: I (ередаточная функция W(t) = 1/(т-р +1) ; 1'сшение: y(t) = Y0 ¦ е"/т + f-¦ e"(t"t)/T ¦ x(t')dt'. 11ример физического представления объекта показан па рис. 7.32. к 1«к. 4501
226 Гпава 7 Ubx=Ur+Uc ивых=ис UR=IRR [R =IC =C-dUc/dt Обозначим x = Ubx у = Ubmx t = RC Отсюда dy/dt = (x -y)/x Приняв dt за один квант счета, получим разностное уравнение: y[k + I] - у[к] = х[к]/х - у[к]/х, или у[к +1 ] = х[к]/х + (1 - 1 /х)-у[к] 0 > С Ubx 0 "с "ис -0 ивых -0 Рис. 7.32. Пример физического представления объекта Рассмотрим программную реализацию системы. Приняв интервал dt в производной за один квант счета программной модели, зададимся величиной т, как минимум на порядок большей интервала счета, для обеспечения адекватности дискретных преобразований моделируемым непрерывным. Положим х= 10dt. Таким образом, на каждом очередном шаге расчета модели необходимо определить значение слагаемых х[к]/х и (1 - 1/х)-у[к] (при заданном х они равны 0.1*х[к] и 0.9*у[к] соответственно), результат их суммирования присвоить переменной у[к+1], а затем обновить нумерацию индексов шагов на единицу (т.е. перенести величину у[к+1] ву[к]). Говоря о программной реализации таких моделей, необходимо уделить соответствующее внимание способу кодирования переменных. Примем для определенности, что модель объекта обрабатывается на 8-битном вычислителе; входы и выходы модели для удобства наблюдения соотносятся с диапазоном байтовых переменных [0...255] следующим образом: [0...127]— отрицательные числа, [128...255]— положительные числа. Во внутреннем же формате числа будут представлены в виде бита знака и отдельного байта, хранящего 7-битный модуль числа (это удобно с точки зрения выполнения операций умножения на масштабные коэффициенты). Числа будут переводиться в дополнительный код лишь для выполнения операций алгебраического сложения. Повышение точности моделирования обеспечивается увеличением длины кодового слова обрабатываемых данных. Схема подпрограммы моделирования указанного объекта дана на рис. 7.33, а ее текст — в листинге 7.10. Реализация встраиваемых систем управления электромеханическими объектами 227 Моделирование RC-звена Прием с модели з^ о входа ачения X Перес во "внут предсташ метХ реннее" 1ение х[к] Сдви у[к]:= ¦ шага: y[k+1] Вычисление А=0.1*х[к] B=0.5*y[k]+0.4*y[k] y[k+1]:=A+B Пересчет "внеи представ у[к+1] во нее" ление Y Выдача н модели зн а выход ачения Y Рис. 7.33. Схема подпрограммы расчета модели RC-звена Листинг 7.10. Текст подпрограммы моделирования объекта ;подпрограмма моделирования объекта первого порядка in: equ 4 Oh /входное воздействие на объект out: equ 41h /выходная реакция объекта xk: equ 30h /модуль входного воздействия на k-м шаге: х[к] s xk: equ 7fh /знак входного воздействия на k-м шаге yk: equ 31h /модуль выходной реакции объекта на [к]-м шаге: у[к s yk: equ 7 eh /знак выходной реакции объекта на [к]-м шаге ykl: equ 32h /модуль выходной реакции объекта /на [к+1]-мшаге: у[к+1] s ykl: equ 7dh /знак выходной реакции объекта на [к+1]-м шаге addl: equ 33h /первое слагаемое для расчета у[к+1] add2 t: equ 34h /второе слагаемое для расчета у[к+1] — часть 1 add2: equ 35h /второе слагаемое для расчета у[к+1] — часть 2 /подпрограмма инициализации модели: /установка нулевых начальных условий mov ykl,а anl 2fh,#lfh ret rc_init: clr a mov xk,a mov yk,a
228 Глава 7 rc_step: /подпрограмма расчета очередного шага моделирования mov а,in ;прием Хк со входа модели lcall signed /перевод его в знаковое представление: /модуль — в хк /знак — в s_xk /новый шаг: к+1 /обновление модуля у[к] /и знака у[к] /вычисление величины 0.1*Х[к] /преобразование величины в доп. /вычисление 0.9*Y[k] код, запись в addl 5*Y[k] mov хк,а mov s_xk,с mov ук,ykl mov с, s_ykl mov s_yk,с mov b,#10 div ab mov c,s_xk lcall c_cod mov addl,a mov а,ук mov b,#2 div ab mov add2_t,a /сначала 0 mov а,ук mov b,#5 div ab clr с rlc a add a,add2_t mov c,s_yk lcall c_cod mov add2,a add a, addl mov c,acc.7 mov s_ykl,с lcall c_cod mov ykl, a mov с,s_ykl lcall unsigned /преобразов. для беззнакового представления /затем 0.4*Y[k] /преобразование величины в доп. код, запись в add2 /суммирование двух слагаемых /получение знака у[k+1] /получение модуля у[к+1] mov out, а ret /запись в переменную "выход модели" signed: clr с /получение "раздельнознакового" представления числа subb а,#128 /относительно условного нулевого отсчета: кода 128 mov с,асе.7 /исходное значение в аккумуляторе jnc $pos /числа, большие 128, считаются положительными $neg: cpl а /меньшие — отрицательными inc а /сформировать модуль числа $pos: ret /модуль в аккумуляторе, знак в бите переноса Реализация встраиваемых систем управления электромеханическими объектами 229 unsigned: $pos: $ok: push b jnc $pos push a mov a,#128 pop b clr с subb a,b sjmp $ok add a,#128 pop b ret /формирование "знакового" представления числа /модуль в аккумуляторе, знак в бите переноса /модуль отрицательного числа вычитается из кода 128 ;к модулю положительного числа добавляется код 128 /на выходе в аккумуляторе код, "центрированный" /относительно условного нулевого отсчета: кода 128 c_cod: jnc $ok $ok: cpl a inc a ret подпрограмма преобразования "прямой код" — "доп.код" в бите с — знак в аккумуляторе - модуль на выходе в аккумуляторе доп. код числа Некоторые результаты испытаний модели, отражающие ее адекватность моделируемым физическим процессам, даны на рис. 7.34. Исследования проводились встроенными средствами системы Shell51, позволяющими фиксировать происходящие в реальном микроконтроллере (не симуляторе!) процессы. На графиках показаны входные воздействия, которым подвергалась программа-модель, исполняемая на МК, и ее выход (т. е. приведена развертка во времени содержимого ячеек in и out). В первом случае на вход подавались импульсы с изменяемой амплитудой (как положительные, так и отрицательные). Хорошо наблюдается характерный для RC-звена "завал" фронтов и срезов импульсов, а также сглаживание импульсов малой мощности (первые в обеих сериях из трех импульсов). Во втором случае на вход подавались импульсы с изменяемой длительностью и частотой. При подаче продолжительного импульса (второй по счету) модель правильно отрабатывала ситуацию насыщения сигнала. Смоделирован также случай интегрирования ШИМ-сигнала (две пачки импульсов). В третьем случае на вход поступал гармонический сигнал. Налицо сохранение формы сиг- пала при уменьшении амплитуды, а также сдвиг его фазы, определяемый ПОСТОЯННОЙ времени т.
230 Гпава 7 а) Реакция модели на изменение амплитуды импульсного сигнала: входное воздействие У; II -1! ¦л лт ми 20о выход модели ' к ¦ .11 . ш 15» 20» КО б) Реакция модели на изменение длительности импульсного сигнала. входное воздействие выход модели да 1Я) /1 : Н::: 1: /; 111 ; '„i im 14 ао» zso so me j$o : a>o г« в) Реакция модели на гармоническое воздействие, входное воздействие выход модели •И >0СР 110 :::::: ,* .у Л; I I- / \ / \ :1 V ' ЯШ •.о IW г.» .•'!» 40 100 1S8 гоо 25» Рис. 7.34. Демонстрация возможностей программной модели Реализация встраиваемых систем управления электромеханическими объектами 231 7.14. Разработка типовых регуляторов В реальных технических системах отработка объектом выдаваемых на него управляющих воздействий выполняется принципиально неидеально вследствие действия ряда возмущающих факторов. В электромеханических системах к таким факторам относятся непостоянство нагрузки (момента сопротивления) во времени, искажения управляющих сигналов под воздействием электромагнитных помех и др. В связи с этим обеспечение качественного выполнения системой заданных эволюции возможно лишь при наблюдении за состоянием объекта и определении степени отклонения значений наблюдаемых параметров от заданных значений (уставок) с целью коррекции подаваемых на объект управляющих воздействий для обеспечения требуемого качества отработки заданной траектории. Решение задач такого рода возлагается на регуляторы. Типовой вариант организации программных компонентов встраиваемой системы управления с применением программных регуляторов показан на рис. 7.35. Цель функционирования Код состояния Подсистема задания траектории X заданн.. Подсистема регулирования управляющих воздействий Код управления Код состояния X измерч Подсистема формирования управляющих сигналов Подсистема измерения состояния объекта Микроконтроллерная система управления Сигналы управления Объект объектом управления Датчики Сигналы состояния объекта Рис. 7.35. Использование программных регуляторов в МК-системе В данной схеме подсистема задания траектории, в соответствии со сформированной извне (на более высоком иерархическом уровне управления) целью функционирования системы в целом, через каждый очередной квант времени
232 Гпава 7 генерирует требуемый вектор состояния объекта ХЗАДАНН (в виде соответствующей кодовой комбинации). Подсистема измерения выделяет из физических сигналов, поступающих с датчиков, информацию о векторе состояния объекта ХИЗМЕР (также в виде кодовой комбинации). Задачей регулятора является вычисление такого управления Y (в виде кодового слова, преобразуемого далее формирователем в физические управляющие сигналы U ), которое бы переводило объект в новое состояние X с наперед заданной степенью близости к ХЗАДАНН . Следует отметить, что это управляющее воздействие объект также отработает неидеально. Таким образом, функционирование такой системы управления заключается в постоянном слежении за состоянием объекта в целях минимизации отклонения от заданной траектории. Итак, регулятор вычисляет некоторую функцию У(ХЗАДАНН, ХИЗМЕР, где, помимо информации, описывающей текущую ситуацию (это аргументы ХЗАДАНН и ХИЗМЕР), в качестве дополнительных параметров могут присутствовать аргументы, описывающие поведение системы на некотором отрезке времени — это либо значение системного времени t, либо производные и/или интегралы мгновенных значений ХЗЛДАНН, ХИЗМЕР и соотношений между ними. Определение критериев качества управления производится при подаче в виде уставок определенных тестовых значений. Зачастую рассматривается реакция системы на ступенчатое входное воздействие и оцениваются ее статические (установившаяся ошибка рассогласования) и динамические (время переходного процесса, колебательность) параметры (рис. 7.36). пирях."р<;и.. Рис. 7.36. Пример реакции объекта на тестовое воздействие Реализация встраиваемых систем управления электромеханическими объектами 233 Множество функций F(X3AflAHH, ХИЗМЕР, t, ...), определяющих принцип действия регуляторов, довольно разнообразно: от простейших пропорциональных регуляторов ("П-регуляторов") до так называемых "неаналитических", например, нечетких регуляторов. Рассмотрим программную реализацию широко применяемого в классической теории управления обобщенного пропорционально-интегрально-дифференциального регулятора (ПИД-регулятора) описываемой зависимостью вида: Y(t) = k,c(t) + k2 ¦ Jo's(t)dt + k3 •—E(t) s(t) = ХЗАДАНН — ХИЗМЕР Преобразуем приведенную зависимость в разностное уравнение, учитывая необходимость реализации указанной функции на вычислительной системе, обладающей дискретностью по времени с периодом квантования т, так что время в системе отсчитывается величинами т, 2т, Зт ... пт, ... (в записи удобнее пользоваться номером п кванта). п у[п] = к, • e[n] + к2?s[i] + к3 ¦ (e[n]-s[n -1]) • i=l s[n] = хЗАДАНН [n] - хИЗМЕР [n] Приведенная зависимость называется зависимостью в "полных переменных", поскольку задает абсолютное значение у[п]. В ряде случаев удобнее использовать эквивалентную зависимость "в приращениях" следующего вида: у[п] = у[п-1] + Ду[п] Ау[п] = к, • Де[п] + к,в[п] + к3(Де[п] - Де[п -1]) Таким образом, в программе на каждом шаге следует вычислять е[п] = Х3-Хи, ДЕ[п] = е[п]-е[п-1] и величину Де[п]- Де[п -1]. Полученные значения после домножения на соответствующие коэффициенты суммируются (с учетом знаков), после чего производится обновленце величины У[п]. 11,елевое функционирование регулятора имеет смысл только в системе с объектом, в качестве которого воспользуемся рассмотренной в предыдущем разделе моделью объекта первого порядка, а также реальным объектом — двигателем постоянного тока. Способ кодирования переменных — тот же, что и в предыдущем разделе. Граф организации вычислений и схема подпрограммы регулятора показаны па рис. 7.37 и 7.38, а ее текст в листинге 7.1 I.
234 Гпава 7 XJn] Рис. 7.37. Граф организации вычислений в подпрограмме регулятора Расчет ПИД- регулятора Сдвиг mat перемс Ф[к]:= а по всем энным: J>[k+1] Прием и пере "внутр знач уставки счет во еннее" ение Вычисле deps, ние eps, d2eps Вычисле dL dl ние dUn, и, Вычисли Вычис U[k+1]=l !ние dU, ление J[k]:+dU Выдача i резул вычис \а выход ьтата пений Рис. 7.38. Схема подпрограммы регулятора подпрограммы расчета регулятора /подпрограмма расчета регулятора х in: equ 60h /входное значение y_out: equ 61h /выходное значение en: equ 62h /модуль значения ошибки на шаге п yn: equ 63h /модуль выходного значения на шаге п en 1: equ 64h /модуль значения ошибки на шаге п-1 en 2: equ 65h /модуль значения ошибки на шаге п-2 yn 1: equ 66h /модуль выходного значения на шаге п-1 den: equ 67h /модуль разности значений ошибок на шаге п Реализация встраиваемых систем управления электромеханическими объектами 235 den_l: dyn: si: s2: s3: kp: ki: kd: sy: sen: syn: sen_l: sen_2: syn_l: sden: sden_l: sdyn: ssl: ss2: ss3: ssl2: ssl23: pid init: $initl: pid reg: equ 68h equ 69h equ 6ah equ 6bh equ 6ch equ 6dh equ 6eh equ 6fh equ 7Oh equ 77h equ 76h equ 75h equ 74h equ 73h equ 72h equ 71h equ 7Oh equ 6fh equ.6eh equ 6dh equ 6ch equ 6bh clr a mov 2eh,a anl 2dh,#07h mov rO,#y_out mov @rO,a inc rO cjne r0,#(s3+l ret mov yn_l,yn mov c,syn mov syn_l,c mov en_2,en_l mov c,sen_l mov sen_2,c mov en__l, en mov c,sen mov sen_l,c mov den_l,den mov c,sden mov sden l,c /модуль разности значений ошибок на шаге п-1 /модуль разности выходных значений на шаге п /первое слагаемое — П-составляющая /второе слагаемое — И-составляющая /третье слагаемое — Д-составляющая /значение коэффициента усиления П-составляющей /значение коэффициента усиления И-составляющей /значение коэффициента усиления Д-составляющей /общая сумма управляющих воздействий /знак ошибки на шаге п /знак выходного значения на шаге п /знак ошибки на шаге п-1 /знак ошибки на шаге п-2 /знак выходного значения на шаге п-1 /знак разности ошибок на шаге п /знак разности ошибок на шаге п-1 /знак разности выходных значений на шаге п /знак текущей П-составляющей /знак текущей И-составляющей /знак текущей Д-составляющей /знаки текущих частичных / сумм /инициализация регулятора /обнуление знаков /и модулей переменных ),$initl /новый шаг: N /сдвиг во времени на 1 шаг
236 Гпава 7 mov a,out ;Хизм считывается lcall signed ;с выхода модели lcall c_cod mov b,a mov a,x_in ;перевод принятого Хз lcall signed ;в знаковое представление mov sen,с lcall c_cod clr с subb a,b jnb psw.2,$ookl mov a,#127 mov c,sen sjmp $ook2 $ookl: mov c,acc.7 lcall c_cod $ook2: mov en,a mov sen,с lcall с cod mov a,en_l /вычисление de[n]=e[n]-e[n-1] mov c,sen_l lcall c_cod mov b,a mov a,en mov c,sen lcall c_cod clr с subb a,b jnb psw.2,$ok0 mov a,#127 mov c,sen sjmp $ncdnx $ok0: mov c,acc.7 lcall c_cod $ncdnx: mov den,a mov sden,с mov a, den /вычисление Kn*d.e[n] mov b,kp mul ab push a mov a,b cjne a,#l,$okl_l Реализация встраиваемых систем управления электромеханическими объектам,, 237 $okl_l: cpl с pop а orl с,асе.7 jnc $okl mov а,#127 $okl: mov с,sden mov ssl,c lcall c_cod mov si,a lcall c_cod lcall unsigned mov a,en mov b,ki mul ab push a mov a,b cjne a,#l,$ok2_l $ok2_l: cpl с pop a orl c,acc.7 jnc $ok2 mov a,#127 $ok2: mov c,sen lcall c_cod mov ss2,c mov s2,a /вычисление Ки*е[п] lcall c_cod lcall unsigned mov a,den_l mov c,sden_l lcall c_cod mov b,a mov a,den mov c,sden lcall c_cod clr с subb a,b jnb psw.2,$ok3 mov a,#127 mov с,sden sjmp $ncdx ok3: mov c,acc.7 lcall ccod
238 Гпава 7 $ncdx: $ок4: $ок5: $окб: $conv: mov ss3,c mov b,kd mul ab mov c,psw.2 orl c,acc.7 jnc $ok4 mov a,#127 mov c,ss3 lcall c_cod mov s3,a ,-вычисление Кд* (de [n] -de [n-1] lcall c_cod lcall unsigned mov a,yn_l mov c,syn_l lcall c_cod mov sy,a clr с /вычисление суммы mov a,si /Kn*de[n] add a,s2 /+Ки*е[n] jnb psw.2,$ok5 mov a,#127 mov c,ssl lcall c_cod mov c,acc.7 mov ssl2,с add a,s3 /+Кд*(de[n]-de[n-1]) jnb psw.2,$ok6 mov a,#127 mov c,ssl2 lcall c_cod mov c,acc.7 mov ssl23,c add a,sy jnb psw.2,$conv mov a,#127 mov c,ssl23 sjmp $ok7 mov c,acc.7 lcall с cod Реализация встраиваемых систем управления электромеханическими объектами 239 $okl: mov syn,с mov yn,a /суммирование частичных сумм lcall unsigned mov y_out,a /перевод в "отображаемое" представление ret signed: $neg: $pos: unsigned: $pos: $ok: с cod: $ok: clr с subb a,#128 mov c,acc.7 jnc $pos cpl a inc a ret /разделение знака и модуля числа push b jnc $pos push a mov a,#128 pop b clr с subb a,b sjmp $ok add a,#128 pop b ret jnc $ok cpl a inc a ret /объединение знака и модуля числа /преобразование "прямой код" доп.код" Схема и текст программы, реализующей взаимодействие модели и регулятора, представлены на рис. 7.39 и в листинге 7.12. ?™ТИНГ 7-12- Текст программы исследования регулятора /пример организации взаимодействия регулятора и модели объекта org 8100h lcall rc_init ;инициализация объекта lcall pid_init /инициализация регулятора
240 Гпава 7 cycle: lcall rc_step lcall pid_reg mov in,y_out lcall 128h end ccl: sjmp cycle ;шаг модели /шаг регулятора ;выдача управления на' модель /подпрограмма обмена с инструментальной ЭВМ include asms\pid_reg\pid_1011.asm /подключение п/пр. регулятора include asms\pid_reg\rc_inc.asm /подключение п/пр. модели- /рования Расчет ПИД- регулятора Ипициа] мод 1ИЗЭЦИЯ ели Инициа регул пизация ятора Выполнение очередного шага моделирования Вычисление регулирующих воздействий Выдача управления на модель Обмен с инструментальной ЭВМ i Рис. 7.39. Схема программы "регулятор — модель объекта" На рис. 7.40 показаны результаты испытаний системы. Из графиков хорошо видно, что разомкнутая (без регулятора) система не в состоянии обеспечить требуемую реакцию на управление. Попытка добиться совпадения уставки и выхода объекта (модели) путем использования лишь П-составляющей не устраняет установившуюся ошибку; дальнейшее увеличение Кп переводит управляющие воздействия в состояние насыщения с последующим неадекватным поведением регулятора. В то же время, при использовании И-составляющей возможно обеспечение практически нулевой установившейся ошибки, а применение Д-составляющей позволит обеспечить форсированное стремление выхода объекта к уставке при ее резких изменениях. В заключение рассмотрим систему регулирования скорости вращения ДПТ на основе предлагаемого регулятора. Схема программы представлена на рис. 7.41, ее текст— в листинге 7.13. Реализация встраиваемых систем управления электромеханическими объектами 241 а) входное воздействие б) поведение разомкнутой системы mi mu ;ъя ,w , л в) выход модели при Кп=5, Ки=0, Кд=0 г» ¦ • . . . . . . . г) выход регулятора ¦И ¦ 1М д) выход модели при Кп=1, Ки=1, Кд=2 е) выход регулятора SO lull Ш }М Ш а» юн ise гон не Рис. 7.40. Демонстрация возможностей регулятора ¦I |.и< I
242 Гпава 7 Регулирование частоты выражения ДПТ Инициаз системы у двига" 1ИЗЭЦИЯ правления гелем Инициа регул пизация ятора Опрос датчика частоты вращения *Ч- Вычис регулиг. воздеС ление >ующих ютвий Выдача у г на 1 равнения цтг Рис. 7.41. Схема программы "регулятор — объект (ДПТ)" I Листинг 7.13. Текст программы исследования регулятора org 8100h W__ind: equ 71h out: equ 72h flag: equ 6ah lcall init mov knag,#0 lcall dpt_r_ctrl lcall pid_init mov tmod,#1 setb etO setb trO setb es setb ea ;код отображаемой на графике частоты ;ячейка для связи регулятора и драйвера ДПТ ;признак начала нового счета регулятора /инициализация электромеханотронной системы /инициализация регулятора /настройка таймера cycle: lcall wm_read mov a,#255 clr с subb a,W mov W_ind,a jnb flag,end_ccl clr flag mov out,W_ind mov x_in,kupr /опрос датчика частоты вращения ДПТ /масштабирование кодов ;начался новый интервал времени: /если да Реализация встраиваемых систем управления электромеханическими объектами 243 lcall pid_reg /рассчитать управляющее воздействие mov a,y_out cjne a,#129,$cmpl $cmpl: jnc $ok mov a,#129 $ok: mov dptc_cntr,a /и передать его драйверу ДПТ ICall dpt_C_Ctrl . end_ccl: sjmp cycle include asms\names.asm /файл списка библиотечных подпрограмм include asms\pid__1011.asm /файл драйвера регулятора rs232: $ех: timO: jnb ri,$ex push a push psw push 0 lcall 128h pop 0 pop psw pop a reti mov thO,#ECh mov tl0,#78h setb flag reti /процедура обмена с инструментальной ЭВМ /по запросам на прерывания от приемопередатчика /вызов библиотечной подпрограммы связи /обработчик запросов от таймера /квант регулятора — 5 мс org OOObh /точки входа в обработчики запросов прерываний ljmp timO org 0023h ljmp rs232 В случае использования реального объекта, для обеспечения шага счета регулятора, согласованного с собственными постоянными времени объекта, применяется таймер, выставляющий в обработчике запроса прерывания по переполнению флаг, означающий наступление очередного момента расчета (на схеме программы не показан). Обмен данными с инструментальной ЭВМ также ведется по запросам на прерывание. Приоритет подпрограммы- обработчика запросов таймера должен быть выше приоритета подпрограммы обслуживания обмена с ЭВМ. Графики функционирования системы представлены на рис. 7.42. В случае необходимости введения для составляющих регулятора масштабирующих коэффициентов, меньших 1, достичь этого можно, заменив команду mul на div при вычислении соответствующей составляющей; на рис. 7.42, д, е приведены результаты подобною изменения для интегральной составляющей, коэффициент при которой назначен равным 1/6.
244 Гпава 7 а) входное воздействие 6) поведение разомкнутой системы в) частота при Кп=2, Ки=0, Кд=0 гт ¦ ¦ ¦ ¦ • г) частота при Кл=5, Ки=0, Кд=0 и Ml ; '.'J 1Ы) <Ы1 .'ill д) частота при Кп=1, Ки=1/6, Кд=0 е) частота при Кп=1, Ки=1/6, Кд=5 'С ¦ Рис. 7.42. Демонстрация возможностей регулятора ГЛАВА 8 1 1 Лабораторный практикум 8.1. Организация учебного исследовательского комплекса Основной задачей лабораторного практикума является формирование навыков разработки встраиваемых вычислительных систем на базе МК. В рамках данного лабораторного практикума рассматриваются следующие вопросы: ? разработка аппаратуры: аспекты сопряжения и организации физического взаимодействия МК и объекта управления; ? разработка программного обеспечения: организация вычислений, программная поддержка ввода-вывода, решение задач реального времени и мультипроцессное (мультизадачное) программирование, организация межпроцессорного обмена и др. Для этих целей используется автоматизированное рабочее место (рис. 8.1), включающее: ? инструментальную ЭВМ для разработки программного обеспечения микроконтроллера; ? набор контрольно-измерительных приборов (осциллограф, вольтметр) для регистрации физических сигналов, отражающих функционирование МК; ? лабораторный стенд для изучения встраиваемых систем. В состав лабораторного стенда входят: П плата микроконтроллера (рис. 8.2), включающая микроконтроллер 80C5I5, внешнюю память программ ПЗУ объемом 32 Кбайт, ипешнюю память программ/данных ОЗУ объемом 32 Кбайт, а также средства связи с инструментальной ')ВМ (порты); I
246 Гпава 8 Контрольно- измерительные приборы Инструментальная ЭВМ Амплитуда U Частота F Частота F_ Скважность К Лабораторный стенд Плата микроконтроллера МК 80С515 ПЗУ 32Кх8 ОЗУ 32Кх8 порты Генераторы тестовых воздействий Гармонический сигнал Импульсный сигнал Коммутационное поле Объект управления: клавиатура 4x4 Объект управления (датчик): потенциометр Объект управления (датчик): микрофон Объект управления: динамик Объект управления: ЖКИ 20x2 Объект управления: RC-звено Рис. 8.1. Структура рабочего места ? совокупность объектов управления/датчиков: клавиатура 4x4 и ЖКИ для изучения дискретного, ввода-вывода, потенциометр и интегрирующее RC-звено для изучения аналогового ввода-вывода, микрофон и динамик (опционально); ? совокупность генераторов тестовых воздействий: источник гармонического сигнала "С" с регулируемыми пользователем частотой и амплитудой, а также источник импульсных сигналов "П" с регулируемыми пользователем частотой и скважностью; ? коммутационное поле, позволяющее задавать структуру аппаратного взаимодействия элементов стенда между собой и портами ввода-вывода МК. Внешний вид стенда приведен на рис. 8.3. Взаимодействие с инструментальной ЭВМ осуществляется через последовательный интерфейс RS-232. Лабораторный практикум 247 <DR DT •в с: О / о: 2 сч Р7 сп to г- со 01 O — CNCD^iOCDt^ OQDOQOOO S & С <. С < с<<<<<<<<<<<<< се со ш < см < A3 5 А5 55 < ¦о с + о 05 ю СП о о *" *~ сч О V* ГЧ <<< < < O"-<N00viiOU)r- оооооооо (_> с > са о о; OQQOOQGQ О о ОООООООО о. й q. а о. с и а 2 и ? о О О + . v-OJf-Pit-.- CNCN и-аг- ¦ i »- СМ СП П СГ> CD Г- tn DOOOOOOQ Q-Q-CLQ.CLCLCLQ. 12* Щ о о н н н енн 11 I Ог-СЧГО^ЮШг- со а"> S3 Z ^ ^ ^ А10 А11 СМ < со < XT < да < P4Q j Р41 | CN 2 то О. 2 2 со хг СО ч го ч см со ш ад г*. а г; CN П ^ If) СО N Ч Ч Ч Ч ч" Ч: %у 47 CN СО 3 < ач- ем аэ xf (Л со г~ CLCl Q_ Q. Cl CL й- Q. ш со О О ?етсог-.<о)сл;чс<>?!й гмйНсмЫ O^NCO^tflCON а!ас1ас1а5!5й I СП *J о-аисТанаа. Q а Р т- птттпттп _j -j си с-а л о tn р-.|со сс СО S н s ев CN '¦—-1 -=—i-i I «- сч m О W 1Л tL LL iX гпттттргттттттштттт i ID CD a? 2 . Q. (I (I Q. CD в a i s 2 3 a. и CL
248 Гпава 8 Ручка регулировки амплитуды гармонических сигналов Ручка регулировки .частоты гармонических сигналов Гнездо выхода генератора гармонических сигналов Гнездо выхода генератора импульсов Гнездо U Вь1Х Гнездо микрофона Гнездо динамика Окно для наблюдения платы МК Ручка регулировки частоты генератора импульсов Ручка регулировки скважности генератора импульсов Ручка регулировки UBblx ЖКИ экран . Гнезда шины команд/данных ЖКИ Гнезда шины управления ЖКИ Гнезда входов клавиатуры Кнопки клавиатуры Клавиша RESET Гнезда выходов клавиатуры RC-звеио Гнездо входа Рис. 8.3. Внешний вид стенда Коммутационное поле (гнезда портов МК) Гнездо выхода Ручка регулировки т При выполнении лабораторных заданий студент разрабатывает и документирует схему соединений портов МК с линиями ввода-вывода объектов стенда, разрабатывает и документирует программное обеспечение, решающее поставленную задачу, документирует и анализирует полученные результаты. В качестве инструментальной среды разработки применяется система Shell51, описанная в приложении 4. Применяемый в стенде ЖКИ Sanyo 20x2 описан в разд. 6.3.1, схема используемой клавиатуры показана на рис. 8.4. 8.2. Программа первого посещения: "Изучение вычислительных возможностей МК" 1. Ознакомиться с программно-аппаратным комплексом поддержки разработки микроконтроллсрных систем на базе МК 80C5I5. Изучить состав п назначение основных устройств и блоков лабораторного стенда. Лабораторный практикум 249 о д ы Рис. 8.4. Схема организации клавиатуры лабораторного стенда Пункты 2—3 выполнить в программной модели МК (симуляторе) и на реальном МК. Сравнить результаты. При загрузке, трансляции и чтении результатов выполнения программы использовать правила-рекомендации, приведенные в информационном окне рабочего поля экрана инструментальной ЭВМ. 2. Выполнить полный цикл создания прикладного программного обеспечения на примере тестовой программы proba.asm, которая осуществляет заполнение ячеек заданной области внутренней памяти данных МК. Выполнить модификацию программы proba.asm, обеспечив изменение диапазона адресации ячеек внутренней памяти при заполнении их требуемыми значениями, например, линейно возрастающими или линейно уменьшающимися значениями. 3. Ознакомиться с системой команд МК семейства MCS5 1 на примере разработки простейших программ (номер варианта задания совпадает с номером рабочего места): • разработать программу вычисления арифметического выражения Y I (X I, Х2, ХЗ) заданною вида. Исходные данные байтовые переменные;
250 Гпава 8 • разработать и выполнить программу вычисления логического выражения Y = F(X1, Х2, ХЗ, Х4) заданного вида с использованием команд битовой обработки данных. Исходные данные — битовые переменные; • разработать и выполнить программу формирования кодовой последовательности заданного вида. Результаты выполнения разместить в ячейках внешней памяти данных с применением косвенной адресации ячеек памяти через регистр DPTR; • разработать программу функциональной обработки данных. Если по заданию необходимо работать с массивами, они должны быть расположены во внешней памяти данных по адресам, задаваемым в программе. Арифметические выражения 1 F = XI * [0,5 * (Х2 + ХЗ) — 2*Х2/Х3], где Х2 <= 127; 0,5 * (Х2 + ХЗ) > > 2Х2/ХЗ 2. F = 1/2 (XI + Х2)*(ХЗ —Х1/Х2),гдеХЗ>Х1/Х2 3. F- 1/4 (XI + 2*Х2) * (Х2 — Х2/Х1), где Х2 <= 127 4. F = (XI *Х2 — Х2)/Х1 * (2*Х1 + Х2), где XI о 0 5. F = 2*Х1 * [(Х2 — ХЗ) + Х2/2*ХЗ], где XI <= 127; Х2 > ХЗ 6. F = XI + Х2, где XI и Х2— 4-разрядные 2/10 числа. Команду da а не применять. 7. F = [(XI — Х2)/(ХЗ + 1) + 12h] * ХЗ, где XI > Х2; ХЗ + 1 <= 127 8. F = XI + [(Х2 + ХЗ) + Х1*ХЗ] 9. F = XI * [(Х2/ХЗ) + Х2*ХЗ]/2, где ХЗ о 0 10. F = [(X1*X3) + X2 —ХЗ]/Х1,гдеХ1 о0 Логические выражения 1. Y = (X1 AND (NOT Х2)) XOR (ХЗ OR Х4) 2. Y = ((NOT XI) XOR (Х2 AND ХЗ)) OR Х4 3. Y = (XI AND (NOT Х2)) XOR (ХЗ AND Х4) 4. Y = ((NOT XI) AND ХЗ) XOR (X2 AND X4) 5. Y = (XI AND (NOT X2)) XOR (X3 AND X4) 6. Y = (X1 XOR X2) AND (X3 AND X4) Лабораторный практикум 251 7. Y = (XI AND (NOT X2)) OR (X3 XOR X4) 8. Y = (XI OR (NOT X2)) XOR (X3 OR X4) 9. Y = (X1 AND (NOT X3)) XOR (X1 AND X4) 10. Y = ((NOT X1) AND (NOT X2)) OR (X3 XOR X4) Описания кодовых последовательностей 1. 0 — 10h — 0 2. 1 Oh — 0 — 1 Oh 3. 20h —30h-20h 4. 30h —20h —30h 5. 40h — 30h — 50h 6. F8h — FFh — FOh — F8h 7. EOh —DOh —EOh 8. 0— I Oh — 0— lOh —0 9. 70h —60h —80h 10. I0h —20h— 18h— lOh Описание задач функциональной обработки 1. Поиск минимального, максимального и среднего арифметического в массиве. 2. Определение общих элементов двух массивов и занесение их в новый массив. 3. Выбор из массива элементов, делящихся нацело на К, и занесение их в новый массив. 4. Подсчет числа вхождений заданной константы в массив. 5. Определение наибольшего общего делителя двух чисел. 6. Определение наименьшего общего кратного двух чисел. 7. Вычисление К-го элемента ряда Фибоначчи. 8. Целочисленное вычисление квадратного корня. Учесть, что k**2 = 1 + 3 + I 5 + ... (к сложений). •>. Вычисление произведения двух 16-битных операндов. 10. Целочисленное вычисление частого двух 16-битиых операндов.
252 Гпава 8 8.3. Программа второго посещения: "Работа с портами МК" При выполнении работ второго посещения предварительно необходимо разработать структуру информационных связей контроллера с объектом и реализовать их, соединив разъемы портов МК с разъемами исследуемого объекта. 1 1. Разработать программу, реализующую опрос клавиатуры и запись в ячейки памяти с адресами ЗОН—33h кодов состояния клавиш. 2. Модифицировать программу п. 1, дополнив ее модулем, формирующим номер нажатой клавиши в памяти данных микроконтроллера. 3. Ознакомиться с организацией и принципом работы модуля жидкокристаллических индикаторов (ЖК-модуля). Описание ЖК-модуля приведено в разделе Аппаратура контроллеров семейства MCS-51 вкладки Справочник оболочки Shell51. Разработать программу, реализующую вывод на ЖКИ двух 20-байтных строк, содержание которых предопределено в программе. 4. Разработать программу, отображающую на ЖКИ номер нажатой клавиши, используя программы п. 2 и 3, подключив их к разрабатываемой программе директивой INCLUDE. 5. Ознакомиться со структурой АЦП и особенностями программирования режимов его работы. Разработать программу вывода на ЖКИ цифровых кодов аналоговых сигналов параллельно с двух источников: потенциометра и выхода интегратора, подключенного к генератору периодического сигнала. При анализе результатов сопоставить коду сигнала величину на пряжения, поступающего на соответствующий вход АЦП, пояснить результаты. 6. Модифицировать программу п. 5 для организации отображения цифровые кодов аналоговых сигналов и одновременного представления выбранною пользователем аналогового сигнала на экране инструментальной ЭВМ При демонстрации результатов выполнения программы использовать вкладку Окна управления оболочки ShellSl. Снятый график приложим, к отчету. 7. Разработать программу, генерирующую ШИМ-сигнал переменной скважности, задаваемой с инструментальной ЭВМ, с частотой N* 100 Гц, где N— номер рабочего места. Результаты следует наблюдать на осцилло*] графе, показания которого необходимо задокументировать. Лабораторный практикум 253 8.4. Программа третьего посещения: "Изучение таймеров и системы прерываний" При выполнении работ третьего посещения предварительно необходимо разработать структуру информационных связей контроллера с объектом и реализовать их, соединив разъемы портов МК с разъемами исследуемого объекта. 1. Изучить работу таймеров-счетчиков микроконтроллера и принципы организации системы прерываний. 2. Разработать программу, генерирующую на выбранном вами разряде порта МК меандр с частотой N*100 Гц (где N— номер вашего рабочего места). Работ)' с линией порта проводить в обработчике прерываний, генерируемых таймером ТО. Результаты следует наблюдать на осциллографе, показания которого необходимо задокументировать. 3. Модифицировать программу п. 2 для управления генерируемой частотой с клавиатуры. Результаты следует наблюдать на осциллографе, показания которого необходимо задокументировать. 4. Разработать программу, определяющую интервал времени между прерываниями INTO и INT1, генерируемыми с клавиатуры. 5. Реализовать на микроконтроллере счетчик времени с отображением на ЖКИ минут и секунд работы. В качестве опорного программного генератора использовать прерывания таймера, следующие с частотой 2 кГц. 6. Организовать взаимодействие оболочки с микроконтроллером по прерываниям от приемопередатчика. При этом в качестве прерываемого процесса использовать программу п. 5. С использованием вкладки Окна управления следует наблюдать за изменением значений опорного программного генератора. Определить влияние уровней приоритетов запросов прерываний на точность подсчета реального времени в данной системе. | inn ые графики приложить к отчету. I 7. Разработать простейшую систему обеспечения многозадачности со структурой, изображенной на рис. 3.19 и 3.20. Система должна выполнять диспетчеризацию трех взаимодействующих между собой отдельных про- i рамм: для определения номера нажатой клавиши, для преобразования его 1 символьный эквивалент, для индикации на ЖКИ. Формат дескрипторов процессов (адрес точки входа, квант времени выполнения, буфер обмена и i и.) определить самостоятельно.
254 Гпава 8 8.5. Программа четвертого посещения: "Организация и исследование межпроцессорного обмена" 1. Изучить текст и исследовать работу программы sendrec.asm, применяя вкладку Терминал (см. рис. П4.1). 2. Создать программу, реализующую вывод на экран ЖКИ текста, передаваемого с инструментальной ЭВМ. 3. Реализовать на МК сервисную программу статистической обработки данных: с инструментальной ЭВМ в МК передается последовательность чисел с завершающим символом в ответ на которую МК в зависимости от запрашивающего кода (протокол сформировать самостоятельно) передает в ЭВМ: максимальное из чисел, минимальное из чисел, среднее арифметическое и дублирует информацию на ЖКИ. Количество чисел и формат их представления заранее неизвестны. 4. Реализовать взаимодействие двух стендов: в верхней строке ЖКИ стенда N отображается посылаемая на стенд N - 1 + 2*(N mod 2) информация о номере очередной нажатой клавиши, в нижней — принимаемая от него. 8.6. Варианты индивидуальных заданий 1. Многофункциональный генератор. Формирует в зависимости от комбинации нажатых клавиш 6 видов периодических сигналов: гармонический, прямоугольный, треугольный, пилообразный, колоколообразный, трапецеидальный; для любого сигнала возможно формирование нескольких (не менее 5) значений периода. Выход генератора— ШИМ-сигнал, модулирующий, заданный периодический сигнал. 2. Модель динамического объекта первого порядка: • интегрирующее RC-звено; • дифференцирующее RC-звено. Требуется сформировать и программно реализовать разностные уравнения, реализующие указанные звенья. Входные сигналы поступают с инструментальной ЭВМ; там же отображаются результаты. Тип звена и его параметры задавать с клавиатуры стенда. 3. Статистическая обработка сигналов. Программа должна реализовать накопление входного сигнала с аналогового входа АЦП, провести вычисления, необходимые для построения гисто- Лабораторный практикум 255 граммы, и предоставить инструментальной ЭВМ возможность приема полученной информации. Сведения о максимуме, минимуме и среднем арифметическом значении сигнала за время наблюдения должны отображаться на ЖКИ. Команда запуска очередного измерения должна формироваться с клавиатурного пульта МК. 4. Сжатие-восстановление информации. Программа должна реализовать накопление входного сигнала с аналогового входа АЦП, провести вычисления, необходимые для компрессии полученного набора данных, и предоставить инструментальной ЭВМ возможность приема информации до сжатия, после сжатия и после восстановления. Сведения о работе программы и качестве сжатия должны отображаться на ЖКИ. Команда запуска очередного цикла работы должна формироваться с клавиатуры МК. 5. Модель системы автоматического управления. Программа должна реализовать: • разомкнутую неустойчивую систему; • звено, "зажимающее" неустойчивую систему в наперед заданной области, применяя алгоритмы релейного, П-, ПИ-регулирования. Режимы работы программы задаются с клавиатурного блока МК, сведения о работе отображаются на ЖКИ. Программа должна допускать интерактивное наблюдение работы САУ с инструментальной ЭВМ. 6. Музыкальный синтезатор. Программа должна реализовать следующие режимы работы: • ввод мелодии с клавиатуры стенда и ее отработку динамиком платы МК; • переключение октав; • отображение названия ноты на ЖКИ; • режим записи мелодии в память МК; • режим воспроизведения ранее записанной мелодии; • режим доступа инструментальной ЭВМ к мелодии. 7. Калькулятор. Программа должна реализовать арифметическое вычислительное устройство с вводом цифровой информации с клавиатурного блока стенда, вывода исходных данных и результатов вычислений на ЖКИ. Формат представления чисел — знаковый, с фиксированной точкой. Диапазон: -32768...+32 767.
256 Гпава 8 Дополнительные функции: занесение в память, округление, логические функции, взаимное преобразование кодов в 2, 8, 10, 16-ричной системах счисления. 8. Частотомер. Программа должна определять частоту периодического сигнала, подаваемого на вход АЦП. Предусмотреть возможность измерения высокочастотного и низкочастотного сигналов наиболее точными методами. Режимы работы и результат вычислений отображается на ЖКИ. 9. Электронная записная книга. Программа должна поддерживать следующие режимы: • Часы-календарь с возможностью установки даты и времени (с отображением на ЖКИ); • звуковой оповещатель о наступлении указанного пользователем момента времени с выводом на ЖКИ заданной пользователем однострочной записи-подсказки (на русском языке, для каждого момента времени своя); • телефонная база данных формата: "телефон— текстовая строка". Режимы работы базы данных — просмотр, поиск, ввод новых, удаление. 10. Электронный экзаменатор. Программа предлагает пользователю ответить на ряд вопросов с вариантами ответа, отображаемыми на ЖКИ. Проводится подсчет времени каждого ответа, количество правильных и неправильных ответов. Результаты теста отображаются на ЖКИ. По окончании теста возможен просмотр данных с инструментальной ЭВМ. 11. Игровой тренажер внимания. По экрану ЖКИ слева направо перемещаются символы, соответствующие определенным клавишам. Задача игрока— отреагировать на очередной символ нажатием соответствующей ему клавиши. По ходу игры темп перемещения ускоряется. Предусмотреть вывод статистики и музыкального оформления тренажера. 8.7. Отчетность по лабораторному практикуму Допуск к работе производится на основании рабочего протокола, составленного учащимся при самостоятельной домашней подготовке и содержащего следующие разделы: Лабораторный практикум 257 ? Титульный лист с наименованием работы; ? Содержательная часть: • цель работы; • программа работы; • теоретические сведения; • задание № 1: 0 название; п анализ задания; 0 принципиальная схема и схема соединений; D схема программы; ° текст программы; D план испытаний; • задание №2: (далее все задания главы оформляются по аналогии с заданием № 1); • ? Выводы по работе. В ходе работы над предлагаемым лабораторным практикумом студенты в обязательном порядке документируют свою работу и демонстрируют преподавателю результаты испытаний для каждого задания. По окончании лабораторной работы студент предъявляет преподавателю следующие документы: П принципиальные схемы и схемы соединений аппаратуры; ? схемы разработанных программ и их тексты; П результаты исполнения программ (графики, полученные средствами ShellS 1, осциллограммы и др.). В отчет должны входить следующие разделы: П Титульный лист; П Содержание; П Введение; П I лава I. "Изучение вычислительных возможностей МК": • цель работы; • программа работы;
258 Гпава 8 • теоретические сведения; • задание № 1: п название; D анализ задания; D принципиальная схема и схема соединений (скорректированные по результатам выполнения работы); а схема программы (скорректированная по результатам выполнения работы); ? текст программы (скорректированный по результатам выполнения работы); D план испытаний и результаты испытаний программы; п обсуждение результатов; • задание № 2: (далее все задания главы оформляются по аналогии с заданием № 1); • ... • выводы по главе; ? Глава 2. "Работа с портами МК": (далее все главы оформляются по аналогии с главой 1); ? ... ? общее заключение по отчету. ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1 Сравнительные характеристики некоторых моделей микроконтроллеров В табл. П1.1 приводятся некоторые представители микроконтроллеров ведущих фирм-производителей МК. Обновленную и более подробную информацию по представленным микроконтроллерам, а также обзор выпускаемых МК можно найти на сетевых ре- сурсах фирм: Infineon: http://www.infineon.com Cygnal: http://www.silabs.com Microchip: http://www.microchip.com Atmel: http://www.atmel.com Fujitsu: http://www.fujitsu.com Scenix: http://www.ubicom.com Motorola: http://www.motorola.com Intel: http://www.intel.com Winbond: http://www.winbond.com
262 Приложение 1 и >. с а. о . о срз II X S а г— со < lira о ф га 5 5 1 - э о ш Ю га О . га 5 га ц 5 о ш s ш •% <5 и Й с 3 га О г- О- с со см X см ю о "О см is §5 м- со 0_ LL о см 5 СО СМ со csj S3 со см СО см пз О) ф | < < со со о о со X со см LO 0. LL а 0. С Ю О т- Ф ю J У с ° — СО см CD см о о а X СО с см ф в от от со 0_ I а 2 0. от от ь or < от 3 < о о см V— I о. II. а о см со см со со" со х х Л ^ ^ со со со X CD ю см см °? с ОТ о О ф h- С CD t т- ? о со X о CD in CM N. LO :=TCQ см со со 3= со ПРИЛОЖЕНИЕ 2 Совокупность команд микроконтроллера распределена по трем группам: группа команд пересылок (табл. П2.1), группа команд передачи управления (табл. П2.2), группа команд арифметических и логических операций (табл. П2.3). Приведены мнемокоды команд, кодировка первого байта — кода операции (КОП), размер команды в байтах (Б), продолжительность выполнения в машинных циклах (Ц) и необходимые пояснения функции, выполняемой командой. Воздействие команд на флаги регистра состояния PSW указано в табл. П2.4. Таблица П2.1. Гоуппа команд пересылок Мнемокод КОП Б Ц Функция MOV A, Rn июlrrr 1 1 (A) := (Rn) MOV A, direct ню 0101 2 1 (A) := (direct) MOV A, @Ri 1110 Olli 1 1 (A) := ((Ri)) MOV A, #data 0111 0100 2 1 (A) := #data MOV Rn, A 1111 lrrr 1 1 (Rn) := (A) MOV Rn, direct 1010 lrrr 2 2 (Rn) := (direct) MOV Rn, #data 0111 lrrr 2 1 (Rn) := #data MOV direct, A 1111 0101 2 1 (direct) := (A) MOV direct, Rn 1000 lrrr 2 2 (direct) := (Rn) MOV directl, direct2 1000 0101 3 2 Пересылка во внутренней памяти данных из ячейки 2 в ячейку 1 (directl) := (direct2) Система команд микроконтроллеров МК-51
264 Приложение 2 Таблица П2.1 (продолжение) ' Мнемокод КОП Б Ц Функция MOV direct, @Ri 1000 Dili 2 2 (direct) := ((Ri)) MOV direct, #data 0111 0101 3 2 (direct) := #data MOV @Ri, A 1111 Olli 1 1 ((Ri)) := (A) MOV @Ri, direct 1010 Olli 2 2 ((Ri)) := (direct) MOV @Ri, #data 0111 Olli 2 1 ((Ri)) :=#data MOV DPTR, #datal6 1001 0000 3 2 (DPTR) :=#data16 MOVC A, SA+DPTR 1001 0011 1 2 Чтение из памяти программ (А) := ((A)+(DPTR)) MOVC A, 0A+PC 1000 0011 1 2 Чтение из памяти программ (А) := ((А)+(РС)) MOVX A, @Ri 1110 OOli 1 2 Чтение из внешней памяти данных (А) := ((Ri)) MOVX @Ri, A 1111 OOli 1 2 Запись во внешнюю память данных ((Ri)) := (А) MOVX A, SDPTR 1110 0000 ' 1 2 Чтение из внешней памяти данных (А) := ((DPTR)) MOVX SDPTR, A 1111 0000 1 2 Запись во внешнюю память данных ((DPTR)) := (А) PUSH direct 1100 0000 2 2 Запись ячейки памяти в стек (SP) := (SP) + 1 ((SP)) := (direct) POP direct ' 1101 0000 2 2 Чтение в ячейку памяти из стека (direct) := ((SP)) (SP):=(SP)-1 XCH A, Rn 1100 lrrr 1 1 Обмен (А) и (Rn) XCH A, direct 1100 0101 2 1 Обмен (А) и (direct) XCH A, @Ri 1100 Olli 1 1 Обмен (А) и ((Ri)) XCHD A, SRi 1101 Olli 1 1 Обмен (А3-о) и ((Ri)3-о) Система команд микроконтроллеров МК-51 26Ь Таблица П2.1 (окончание) Мнемокод КОП Б Ц Функция SWAP А 1100 0100 1 1 Обмен тетрад аккумулятора MOV С, bit 1010 0010 . 2 1 (С) := bit MOV bit, С 1001 0010 2 2 (bit) := (С) CLR С 1100 0011 1 1 (С) := 0 CLR bit 1100 0010 2 1 (bit) := 0 •SETB С 1101 0011 1 1 (С) := 1 SETB bit 1101 0010 2 1 (bit) := 1 Таблица П2.2. Группа команд передачи управления Мнемокод КОП Б Ц Функции LJMP addrl6 0000 0010 3 2 Безусловный переход (PC) := addris-o AJMP addrll 0001 2 2 Безусловный переход в пределах 2 К адресов (PC) := (PC) + 2 (РС)ю-о := addr10-0 SJMP rel 1000 0000 2 2 Короткий переход (-128..+127 адресов) относительно текущего адреса (PC) := (PC) + 2 (РС):= (PC) + rel JMP @A + DPTR 0111 0011 1 2 "Табличный" переход (PC) := (А) + (DPTR) LCALL addrl6 0001 0010 3 2 Вызов подпрограммы (PC) := (PC) + 3 INC(SP) ((SP)) := (PC7.o) INC(SP) ((SP)):» (PCim) (PC) := addriB.o
266 Приложение 2 Таблица П2.2 (продолжение) Мнемокод КОП Б Ц Функции ACALL addr11 0001 2 Вызов подпрограммы в пределах 2К адресов (PC) := (PC) + 2 INC(SP) ((SP)) := (PC™) INC(SP) ((SP)) := (PCim) (PCio-o) := addno-o RET 0010 0010 1 2 Возврат из подпрограммы (PCiM) := ((SP)) DEC(SP) (PC7.o):=((SP)) DEC(SP) RETI ООН 0010 1 2 Возврат из обработчика запроса прерывания (PC15.8):=((SP)) DEC(SP) (PC™) := ((SP)) DEC(SP) JZ rel оно 0000 2 2 (PC):=(PC) + 2 if (A) = 0 then (PC) := (PC) + rel JNZ rel 0111 0000 CM CM (PC) := (PC) + 2 if (A)<>0 then (PC) := (PC) + rel JC rel 0100 0000 2 2 (PC):=(PC) + 2 if (C) = 1 then (PC) := (PC) + rel JNC rel 0101 0000 CN 2 (PC):=(PC) + 2 if (С) = 0 then (PC) := (PC) + rel Система команд микроконтроллеров МК-51 267 Таблица П2.2 (продолжение) Мнемокод КОП Б Ц Функции DJNZ Rn, rel 1101 lrrr 2 2 (PC) :=(PC) + 2 (Rn) := (Rn) - 1 if (Rn) <> 0 then (PC) := (PC) + rel DJNZ direct, rel 1101 0101 3 2 (PC) := (PC) + 3 (direct) := (direct) - 1 if (direct) <> 0 then (PC) := (PC) + rel CJNE A, direct, rel 1011 0101 3 2 (PC) := (PC) + 3 if (A) <> (direct) then (PC):=(PC) + rel if (A) < (direct) then (C) := 1 else (C): =0 CJNE A, #data, rel 1011 0100 3 2 (PC) := (PC) + 3 if (A) <> #data then (PC) := (PC) + rel if (A) < #data then (C) := 1 else (С) := 0 CJNE Rn, #data, rel 1011 lrrr 3 2 (PC):=(PC) + 3 if (Rn)<>#data then (PC):=(PC) + rel if (Rn) < #data then (C):=1 else (С) := 0 CJNE @Ri, #data, rel 1011 Olli 3 2 (PC) := (PC) + 3 if ((Ri)) <>#data then (PC) := (PC) + rel if ((Ri)) < #data then (C) := 1 else (C) :=0 JB bit, rel 0010 0000 3 2 (PC) :=(PC) + 3 if (bit) = 1 then (PC) := (PC) + rel JBC bit, rel 0001 0000 3 2 (PC) := (PC) + 3 if (bit) = 1 then (bit) := 0 и (PC) := (PC) + rel
268 Приложение 2 Таблица П2.2 (окончание) Мнемокод КОП Б ц Функции JNB bit, rel ООН 0000 3 2 (PC) :=(РС) + 3 if (bit) = 0 then (PC) := (PC) + rel NOP 0000 0000 1 1 (PC) := (PC) + 1 Таблица П2.3. Гоуппа команд арифметических и логических операций Мнемокод КОП Б Ц Функции ADD A, Rn 0010 lrrr 1 1 (A) := (A) + (Rn) ADD A, direct 0010 0101 2 1 (A) := (A) + (direct) ADD A, @Ri 0010 0111 1 1 (A) ;= (A) + ((Ri)) ADD A, #data 0010 0100 2 1 (A) := (A) + #data ADDC A, Rn ООН lrrr 1 1 (A) := (A) + (C) + (Rn) ADDC A, direct ООН 0101 2 1 (A) := (A) + (C) + (direct) ADDC A, @Ri ООН Olli 1 1 (A) := (A) + (C) + ((Ri)) ADDC A, #data ООН ¦ 0100 2 1 (A) := (A) + (C) +#data SUBB A, Rn 1001 lrrr 1 1 (A):=(A)-(C)-(Rn) SUBB A, direct 1001 0101 2 1 (A) := (A)-(C)-(direct) SUBB A, @Ri 1001 Olli 1 1 (A) :=(A)-(C)-((Ri)). SUBB A, #data .1001 0100 2 1 (A) := (A) - (C) - #data DA A 1101 0100 1 1 Десятичная коррекция содержимого аккумулятора INC A 0000 0100 1 1 (А) := (А) + 1 INC Rn 'оооо lrrr 1 1 (Rn) := (Rn) + 1 INC direct 0000 0101 2 1 (direct) := (direct) + 1 INC @Ri 0000 Olli 1 1 ((Ri)) :=((Ri)) + 1 INC DPTR 1010 ООН 1 (DPTR) := (DPTR) + 1 DEC A 0001 0100 1 1 (A):=(A)-1 DEC Rn 0001 lrrr 1 1 (Rn):=(Rn)-1 DEC direct 0001 0101 2 1 (direct) := (direct) - 1 DEC @Ri 0001 Olli 1 1 ((Rl)) := ((Ri)) - 1 Система команд микроконтроллеров МК-51 269 Таблица П2.3 (продолжение) Мнемокод КОП Б Ц Функции MUL АВ 1010 0100 1 4 (В)15-8, (А)7-0:=(А)'(В) DIV АВ 1000 0100 1 4 (А)Цвл, (В)ост := (A)/(li) ANL A, Rn 0101 lrrr 1 1 (A) :=(A)&(Rn) ANL A, direct ¦ 0101 0101 2 1 (А) := (А) & (direct) ANL A, #data 0101 0100 2 1 (A):=(A)&#data ANL A, @Ri 0101 Olli 1 1 (А) := (А) & ((Ri)) ANL direct, A 0101 0010 2 1 (direct) := (direct) & (А) ANL direct, #data 0101 ООН 3 (direct) := (direct) & #data ORL A, Rn 0100 lrrr 1 1 (A) :=(A)V(Rn) ORL A, direct 0100 0101 2 1 (A) := (A) V (direct) ORL A, @Ri 0100 Olli 1 1 (A):=(A)V((Ri)) ORL A, #data 0100 0100 2 1 (A):=(A)V#data ORL direct, A 0100 0010 2 1 (direct) := (direct) V (A) ORL direct, #data 0100 ООН со (direct) := (direct) V#data XRL A, Rn оно lrrr 1 1 (A) := (A) XOR (Rn) XRL A, direct оно 0101 2 1 (A) := (A) XOR (direct) XRL A, @Ri 0110 Olli 1 1 (A) := (A) XOR ((Ri)) XRL A, #data OHO 0100 2 1 (A) := (A) XOR #data XRL direct, A оно 0010 2 1 (direct) := (direct) XOR (A) XRL direct, #data оно ООН 3 (direct) := (direct) XOR #data CLR A 1110 0100 1 1 Обнуление аккумулятора CPL A 1111 0100 1 1 Инверсия аккумулятора RL A 0010 ООН 1 1 Сдвиг аккумулятора влево циклический RLC A ООН ООН 1 1 Сдвиг аккумулятора влево через перенос RR A 0000 ООН 1 1 Сдвиг аккумулятора впрано циклический RRC A 0001 ООН 1 1 Сдвиг аккумулятора вправо через перенос CPL С 1011 оо 1 1 1 1 Инверсия бита переноса CPL bit mil 0010 2 1 Инверсия прямоадресуемого бита
270 Приложение 2 Таблица П2.3 (продолжение) Мнемокод КОП Б ц Функции anl с, bit 1000 0010 см 2 С:= C&bit anl с, /bit 1011 0000 2 2 С:= C&/bit orl с, bit 0111 0010 2 2 С:= С orbit orl с, /bit 1010 oooo' 2 2 С:= С or /bit Таблица П2.4. Список команд, воздействующих на флаги регистра PSW Команда Флаги Команда Флаги С ov AC С OV AC add + + + anl с, bit + — — addc + + + anl c, /bit + — ' — subb + + + orl c, bit + — — mul 0 + — orl c, bit + — — ¦ div 0 + — mov c, bit + — — da + — — clr с 0 — — rrc + — — cpl с + — — rlc + — — cjne + — — setb с 1 — pop psw + + + Примечание к таблице П2.4 В таблице приняты следующие обозначения:"+" — команда изменяет значение флага, "-" — команда не влияет на значение флага, "0" — в результате выполнения команды флаг очищается, "1" — в результате выполнения команды флаг устанавливается. ПРИЛОЖЕНИЕ 3 Часто употребляемые директивы языка ассемблера х8051 Директивы ассемблера предназначены для управления процессами ассемблирования и компоновки, в ходе которых происходит перевод исходного текста программы в формат, пригодный для исполнения на микроконтроллере. Директивы позволяют задавать используемые пользователем переменные, области памяти, организовать секционную структуру исполняемых программ, выполнять вычисления при трансляции программы и др. Директивы управления адресами и файлами программ ? org value Устанавливает адрес программы. По умолчанию адрес устанавливается в 0000. Пример: org 8l00h ? end value Отмечает конец программы или подключенного файла. Выражение, следующее за end, дополнительное, и если существует, то указывает стартовый адрес программы. Этот адрес заносится в выходной файл, если it выходном формате существует тип записи стартового адреса. ? include <имя файла> Директива указывает ассемблеру на необходимость трансляции текста, расположенного в файле <имя файла>, начиная с адреса, следующею за адресом последней команды, расположенной в текущем файле. Пример: include asms\names.asm
272 Приложение 3 Директивы определения символических имен ? LABEL: EQU VALUE Присваивает имени label значение value, value может быть другим символом или разрешенным математическим выражением. Пример: XI: equ 30h ? LABEL: VAR VALUE Присваивает имени label значение value, ho значение может изменяться по тексту программы. Имя, определенное как var, не следует переопределять директивой equ. ? LLCHAR CHARACTER По умолчанию символ $ является символом для обозначения локальной метки. Эта директива изменяет символ-определитель локальной метки. ? GLOBAL LABEL Определив метку как глобальную, можно ссылаться на нее из других программ. GLOBAL SYM1 ;Объявляет символ SYM1 доступным для других программ .ч ? EXTERNAL LABEL Определяет метку как заданную в другой программе. Директивы резервирования памяти ? LABEL: ASCII STRING Запоминает string в памяти, но не включая оба символа окончания строки, а также вертикальную черту ("|", шестнадцатеричное 7С). ASCII Hello ? LABEL: DB VALUE Помещает величины в последовательные ячейки памяти. Выражение db позволяет смешивать операнды различного типа, разделенные запятыми. Строки символов следует заключать в апострофы. Если строка содержит апострофы, то следует поставить два апострофа подряд. Если после директивы не следует выражение, один байт резервируется и обнуляется. Метка не является обязательной. .DB ;Отводит 1 нулевой байт .DB 10 ;Отводит байт = 10 .DB 1,2,3 ;Отводит 3 байта=равные 1,2 и 3 .DB SYMBOL-10 ;Ищет в таблице символов метку SYMBOL, /вычитает из нее 10,и запоминает результат .DB 'HELLO' /запоминает эквивалент символов ASCII слова HELLO Часто употребляемые директивы языка ассемблера х8051 273 ? LABEL: DW VALUE Помещает 16-битные величины в память. Несколько слов могут быть заданы посредством записи нескольких выражений через запятую. Если выражение не дано, резервируется и обнуляется 1 слово. Метка не является обязательной. ? LABEL: LONG VALUE Помещает 32-битные величины в память. Несколько слов могут быть заданы посредством записи нескольких выражений через запятую. Если выражение не дано, резервируются и обнуляются 2 слова. Метка не является обязательной. ? LABEL: BLKB SIZE,VALUE Резервирует число байтов, определяемое size. Если поле value присутствует, величина value запоминается в каждом байте. В противном случае резервируемые байты обнуляются. Метка не является обязательной. BLKB 20 /Запоминает 20 нулевых байт BLKB 20,0 /Запоминает 20 нулевых байт BLKB 20,FFH /Запоминает 20 байт со значением 0FFH ? LABEL: BLKW SIZE,VALUE Резервируется число 16-битных слов, определяемое size. Если поле value присутствует, величина value запоминается в каждом слове. В противном случае резервируемые слова обнуляются. Метка не является обязательной. BLKW 20 /Запоминает 20 нулевых слов BLKW 20,0 /Запоминает 20 нулевых слов BLKW 20,FFFFH /Запоминает 20 слов со значением 0FFFFH ? LABEL: BLKL SIZE,VALUE Резервируется некоторое число 32-битных слов, определяемое size. Если поле value присутствует, величина value запоминается в каждом слове. В противном случае резервируемые слова обнуляются. Метка не является обязательной. BLKL 20 /Запоминает 20 нулевых двойных слов BLKL 20,0 /Запоминает 20 нулевых двойных слов BLKL 20,FFFFH /Запоминает 20 двойных слов со значением 0FFFFH Директивы работы с макросами П LABEL: MACRO ARGS Задаст начало макроопределения. Hi Iiik 4301
274 Приложение 3 ? EN DM Задает конец макроопределения. Пример реализации макроса: org 8100h xl: equ 40h sum3 #1,#2,#3 sum3 50h,55h, 6Oh sum3 xl,#3,35h ret sum3: macro argl,arg2,arg3 mov a,argl add a,arg2 add a,arg3 endm В данном случае в памяти программ микроконтроллера, начиная с адреса 8100h, будут сформированы три группы кодов, каждая из которых соответствует очередному макровызову. org 8100h mov а,#1 add а, #2 add а,#3 mov a,50h add a,55h add a,60h mov a,4Oh add a,#3 add a,35h ret ПРИЛОЖЕНИЕ 4 Описание среды проектирования Shel!51 Система предназначена для проектирования программного обеспечения микропроцессорных систем управления на базе программируемых контроллеров (в том числе семейства MK-5I). Система ориентирована на применение в составе комплекса, включающего инструментальную ЭВМ и микроконтроллер, подключенный к ЭВМ через последовательный интерфейс. Одним из направлений применения среды проектирования ShellSl является ее использование в учебном процессе. После запуска пакета (двойным щелчком левой кнопки манипулятора "мышь" на пиктограмме с названием "Система Shelbl") на экране отобразится окно программы (рис. П4.1). Окно представляет собой набор вкладок-опций, каждая из которых ориентирована на реализацию одного из типовых действий программиста при проектировании программного обеспечения микроконтроллерных систем. Далее приведено более подробное описание вкладок. Вкладка Текст программы Вкладка Текст программы (рис. П4.1) позволяет работать с исходным представлением программы в виде текста на языке ассемблера. Вкладка содержит три независимых области: окна текста (слева), область справки Помощь ПО использованию данной вкладки (справа внизу), набор кнопок, реализующих функции данной вкладки, а также кнопку Выход. Активизация функции, назначенной кнопке, производится путем нажатия левой кнопки манипулятора "мышь" над изображением этой кнопки. Кнопка Открыть активизирует диалоговое окно выбора необходимого пользователю файла текста программы, сохраненного па дисковых накопителях инструментальной ЭВМ, и копирует его содержимое в активное окно текста,
276 Приложение 4 система shell51 I Hi л' „м: mil ] си,1«!.>'^ ij 1 ' -У.-"1 :- :-"i-::-:.':'-:'.':',:v:'::':-"-":;':х:::i :¦:^ L ' On pi , t-5 ! -:p.jmh1 Для создания программы!!! необходимо выполнить сле-щ§ дующие шаги: 1. Создание текстового' представления программы по ее алгоритму. Для это- 1 го следует ввести текст программы в окне с .нередакт - ,,, ж и/г" §] 6'ькрд Рис. П4.1. Окно среды Shell51 Кнопка Сохранить активизирует диалог записи содержимого активного окна текста на диск инструментальной ЭВМ, предоставляя пользователю возможность указания имени файла сохраняемой программы. Кнопка Печать активизирует диалог назначения параметров печати информации, находящейся в поле активного окна текста программы, по окончании назначения которых производится вывод текста программы на печатающее устройство. Кнопка Очистить позволяет удалить из активного окна текста находящуюся в нем информацию. Кнопка Запуск в области Трансляция активизирует выполнение процесса перевода исходного текста программы, находящегося в активном поле текста, в представление, пригодное для загрузки в микроконтроллер. Результат прохождения данного этапа отображается в виде двух диагностических сообщений: "Ок" — при отсутствии ошибок в программе и предупреждений со стороны транслятора и компоновщика, "Внимание"— в противном случае. Де- Описание среды проектирования Shell51 277 тальная информация о результатах трансляции и компоновки расположена на вкладке Листинги, речь о которой пойдет далее. Перед запуском трансляции текст разрабатываемой программы следует сохранить. Пользовательский ввод в окно текста программы производится посредством клавиатуры инструментальной ЭВМ, при этом допускается использование следующих типовых сочетаний клавиш: ? <Shift>+<—>> (а также иные клавиши перемещения курсора) — выделение текста; ? <CtrI>+<C> — копирование текста в буфер обмена; ? <Ctrl>+<V> — вставка текста из буфера обмена; ? <Ctrl>+<X> — вырезание текста в буфер обмена. Для облегчения работы с текстами большого объема (в том числе для поиска строк, указанных транслятором как содержащие ошибки) используются кнопки области Поиск. Система ShellST ¦t «кет программы, j ;т; ::йгиу ,^етёб) - и к> памяти) окна иг:. v -ж ] тррминог. ] ^яищшш рА - control bus: rxf р4.3 txe р4.2 wr рАА rd pA.Q p1 - data bus ;на шинах макета младшие разряды - белые проводники org 8100h num..wr: equ 30h num„rd: equ 31 h setb es setb ea lcall write_arr lcall pause mov p1.#ffh orl e8h.#0fh lcall read_arr sjmp main read arr: movdptr,#rd art mov num_rd.#20 $rd_cycle: lcall read jnc $rd_cycle movx odptr.a inc dptr j , j. Ш ' ' 1 15 ¦ <f йзщлчагг.,,. помйщь Для создания nporpar* необходимо выполнить еле дующие шаги: imbljfcj :ле-"*П 1. Создание текстового представления программы по ее алгоритму. Для это- I го следует ввести текст программы в окне редакто- ШШ Рис. П4.2. Поиск в тексте программы
178 Приложение 4 Гекстовую информацию, подлежащую поиску, следует поместить в поле вво- щ, с помощью кнопки Вверх (или Вниз) задать направление поиска (от начата документа к концу или наоборот). По нажатию кнопки Найти далее в ак- гивном окне текста будет выделена строка, содержащая указанный текст, чаждое следующее нажатие этой кнопки будет продолжать поиск в выбран- юм направлении (рис. П4.2). Зтсутствие выделенной строки означает отсутствие введенного текста в дан- юй программе. Вкладка Листинги Зкладка Листинги предназначена для анализа результатов выполнения этапа грансляции и компоновки. Активизация окна данной вкладки происходит при выполнении пользовате- 1ем двойного щелчка манипулятором "мышь" на строке-сообщении системы ) результате трансляции (рис. П4.3). Внимание Рис. П4.3. Текст с сообщением о результате трансляции изображение окна вкладки Листинги показано на рис. Г14.4. Зкладка содержит поле вывода листинга результатов трансляции (слева шерху), поле вывода листинга результатов компоновки (слева внизу), поле юречня ошибок, обнаруживаемых ассемблером (справа вверху), поле перечтя ошибок, обнаруживаемых компоновщиком (по центру внизу), поле помо- ци по использованию данной вкладки (справа внизу), поле ввода строки кон- екстного поиска, а также три кнопки. J полях листинга отображаются результаты прохождения пользовательской фограммой этапов ассемблирования (т. е. преобразования программы из исходного текста в объектный код) и компоновки (т. е. преобразования про- раммы из объектного кода в шестнадцатеричный исполнимый код). Наличие [нформации в данных окнах свидетельствует о присутствии ошибок в про- рамме пользователя, ошибках объектных библиотек либо присутствии пре- [упреждений со стороны транслятора и/или компоновщика. В подобном слу- iae необходим анализ текста программы, выявление недопустимых элемен- ов пользовательской программы и их исключение. \ля повышения эффективности процесса отладки система Shell51 предостав- яет пользователю возможность просмотра полного перечня ошибок этапов Описание среды проектирования Shells 1 279 \ t «ы Листинги j Симуляти рп (нгтр.а (я . 1 0000 05 ЕЗ inceSh NON-EXISTENT INTERNAL RAM ADDRESS ' j Лисп» Ошибка NON-EXISTENT INTERNAL RAM ADDRESC___ j (Адрес внутренней памяти данных не сушестс! , '¦ Значение Попытка обратиться к адресам 128-25* IF На младших моделях МК - недопустимое дейст ¦ > Для старших моделей может быть проигнорир|| Г , В'г'-Г-оС.'; В окнах "Листинг трансляции" и "Листинг компоновки" приводятся ошибки, обнаруженные на соответствующих этапах ; построения программного; кода. Пояснения ошибок при- | водятся в окнак справа по нажатию кнопок "Вы- .'.if Рис. П4.4. Окно вкладки листингов трансляции компоновки ассемблирования и компоновки, выявляемых средой (с помощью соответствующей кнопки-панели Вывести весь список), а для транслятора с языка ассемблера — дополнительно возможность контекстного поиска информации но данной ошибке. Проведение контекстного поиска требует занесения текста сообщения об ошибке в поле строки поиска, что производится следующим образом; ? с помощью манипулятора "мышь" либо с использованием комбинации клавиш <Shift>+<-» выделяется строка сообщения (в процессе выделения изменит фон); П посредством клавиш <Ctrl>+<C> данная строка копируется в буфер обмена; П с помощью однократного нажатия манипулятора "мышь" курсор переносится в поле строки поиска, а комбинация клавиш <Ctrl>+<V> вставляет текст из буфера обмена в искомое поле. Занеся в тюле строки контекстного поиска текст сообщения об ошибке (сообщение можно ввести и обычным путем с клавиатуры), следует активизиро-
280 Приложение 4 вать кнопку Поиск строки. В области Ошибки ассемблирования для МК-51 появится детальное описание данной ошибки и рекомендации по ее устранению. Пустое поле в этой области свидетельствует о неточном вводе строки либо отсутствии описания данной ошибки. При наличии ошибок результирующий исполнимый файл для микроконтроллера создан не будет. Неправомочное игнорирование пользователем предупреждений может повлечь за собой работу с исполнимым файлом, не соответствующим исходной программе. Вкладка Симулятор Вкладка Симулятор (рис. П4.5) предназначена для моделирования работы программы микроконтроллера. Память даниы> _ 00,00,00;00 00 00 CO 00 00 00 0:: 00 00 00 00 00 ou 00 00 01» 00 00 00 _ 00 00 Ou 00 00 00 BJOO 00 00 00 00 00 ЩоО 00 00 00 00 00 Яоо'оо 00 00 00 ou eg op qo oo CO* CO 00 00 oo'oo 00 00 col 00 00 00 00,00 00 00 00 00 00 00 rjoiooioolobi 00 00 00 00 V, - 1 Яш |07 Л. шИШ loo loo 6? PCON loo Шшш loo loo 00,00,00 00 00 00 00 00 00 00 goiogloooo oo: 00 00 00 00 00 00 00 00 00 00 OO'OO ОС 00 00 00 00 00 00 00 00*00 o.i n n ЯчэА a III S: ¦ V forf °LL_i: 00 Ilk I oo-'"*i- 011 ' I ООП' j' oo HOZJ :;:fiaiH3»:ri,;er;!uivft.j< ИгМВНИ»* Срой 4 : i i Помощь Первичным этапом отладки, применяемым для тестирования информационных и управляющих связей программы без взаимодействия с реальной аппаратурой контроллера и объкта, является симуляция. Вкладка "Симулятор" позволяет загрузить оттранслированную программу в память симулято- Команда : ' LCALL 8108 12 81 S102 08 0ПГ-, RET 22 Г: 04 LCALL 811С 12 6105 81 Tc "и RET 22 ни ,.' 43 rMiV Ё8 OF Т/1 ORL 90,ttFF 43 :i-,i 90 \:,,:, FF с! ,1 JB EB.8118 20 EB :J8'C0. Il I PC»8108h г Ыетод запуска:: Г С По шагам | ^ До останова | Всю подпрограмму Qcrai- 810Е J Рис. П4.5. Вкладка Симулятор Описание среды проектирования Shell51 281 Вкладка содержит окно памяти данных симулятора (слева), окно памяти программ симулятора (справа), окно помощи (слева внизу) и органы управления симулятором (справа внизу). Вкладка Симулятор позволяет загрузить оттранслированную программу в память симулятора и отслеживать ее выполнение по шагам, до достижения установленного пользователем адреса или целиком. Загрузка программы в память программ симулятора производится по нажатию кнопки Загрузка. Необходимый вариант запуска на выполнение осуществляется выбором соответствующего переключателя в области Метод запуска с последующим нажатием кнопки Пуск. При выборе метода По шагам останов симулятора будет производиться каждый раз после выполнения очередной команды, при выборе метода До останова программа будет выполняться до тех пор, пока значение счетчика команд симулятора не совпадет с одним из значений, находящихся в списке области Остановы, при выборе метода Всю подпрограмму программа будет выполняться до тех пор, пока очередная выбранная команда не окажется командой возврата из подпрограммы. Остановы задаются/удаляются однократным щелчком левой кнопки манипулятора "мышь" на строке текста команды, содержащей необходимую команду. При этом адреса остановов добавляются/исключаются из одноименного окна. Счетчик команд (PC) устанавливается на необходимый адрес с ПОМОЩЬЮ двойного щелчка левой кнопки манипулятора "мышь" на строке текста команды, содержащей необходимую команду. По ходу выполнения программы он отображает адрес очередной команды из памяти программ симулятора. Просмотр содержимого памяти программ производится с помощью списка области Адрес (hex). Допускается как непосредственный ввод шестнадцагс- ричного значения участка памяти, подлежащего просмотру, гак и использование "бегунка". При отладке пользователю предоставляется возможность скорректировать информацию в памяти данных и памяти регистров специальных функций- посредством однократного щелчка манипулятора "мышь" на нужной ячейке информация из нее переносится в поле редактирования, после чего с клавиатуры вводится новое значение. Память данных симулятора представлена в виде двумерного массива ячеек, адрес которых определяется как Y|6*10if) + Xi(„ где Y— номер строки, в которой расположена ячейка, X — номер столбца, содержащего искомую ячей ку. Значения X и Y шестнадцатиричные. Память регистров специальных
282 Приложение 4 функций представляет собой линейный список с указанием адресов и символических обозначений регистров. При необходимости модель МК переводится в исходное состояние нажатием кнопки Сброс. Вкладка Окна памяти Вкладка Окна памяти (рис. 114.6) предназначена для работы с содержимым памяти программ и данных микроконтроллера. Система ShellSI Основные виды работы с ними следующие: 1. Чтение содержимого памяти данных МК. (Кнопка "Передать из контроллера в ПК"). 2. Изменение содержимого ячеек контроллера. "jb T> uuhhh Память nporpa ».i » Шщ m амовл«;м' j 1 л. k.wiiHria Код ! ЩГЛЗи 40 /Ь 00:70 АС 10 OS PI. 40; 01 FFJFF|EpF7S J; .[йог^ 12 ЩЮ 1 К Н F5TF FD D3F5 7Ё ffIff Fp]F7jFF7F : ::iaffii:>"* — 8i71 ; 02JFS FBJF7 FF FE FS F3 DC FD FD CC FC|FD 0B:i: CgihDFDFA FF ЕВ 73 rr. FdTf7 FgIff:FГ Й LCALL 0128 ~ i: 12 77 F7 F4 FF F7:FF' F5 FFIFF FF:F7;FF FS iHdfff'fd FDDFF7 FF F7-F0 rr С.Ч 7Г FF FF FC F ?] 01 | pepcF? г: щ| F5 7flpC F7 FSl.Fp FCj7A!FD 77 28 е?Ъ: [ г Г7 "Г F7 F* ГЗ DC FF AA'F5 7t 00 s goi 1 ' Iе. _ LCALL 3|2C i2j: : !:7 81 ----- 2C fpf"' SJMP 8103 80 \ F8 1 M0V4l',BFF 75 ¦\ Kill FF : '.Томт'цЕ-- orl эо.ш 431 Окна памя ацию. oacnono- ¦ мм МК m 901 Рис. П4.6. Вкладка Окна памяти Вкладка содержит окно внутренней памяти данных микроконтроллера в области Память данных (слева вверху), область текущей ячейки внутренней памяти данных (в центре), область Память программ внешней совмещенной памяти программ-данных (справа), область Помощь справки по использованию данной вкладки (слева внизу), область состояния связи и ряд кнопок. Описание среды проектирования Shells 1 283 Внутренняя память данных микроконтроллера представлена в виде двумерного массива ячеек, адрес которых определяется как Y|6* Юц + Xi6, где Y — номер строки, в которой расположена ячейка, X — номер столбца, содержащего искомую ячейку. Значения X и Y — шестнадцатеричные. Любая ячейка внутренней памяти данных допускает модификацию содержащегося в ней значения. Для этого необходимо указать ячейку, подлежащую модификации, путем однократного щелчка левой кнопкой манипулятора "мышь" на нужной ячейке, а затем с помощью клавиатуры ввести необходимое новое значение в виде шестнадцатеричного кода в окне текущей ячейки (рис. П4.7). Я«ейкаЗОН Рис. П4.7. Ввод значения выбранной ячейки Для синхронизации информации между окном внутренней памяти данных среды Shell51 и внутренней памятью данных микроконтроллера служат кнопки Передать из ПК в контроллер и Передать из контроллера в ПК. Для записи новых значений в память данных контроллера следует использовать первую из них, для чтения содержимого внутренней памяти данных контроллера — вторую. Для занесения программы в исполняемом формате в память программ контроллера применяется кнопка Загрузка. По окончании загрузки в окне области Память программ будут показаны первые 16 байт пользовательской программы в виде дизассемблированного текста и ее кодовое представление, начиная с адреса, заданного директивой ассемблера org <адрес> в исходном тексте. Кнопка Запуск активизирует исполнение программы, находящейся в памяти программ контроллера, с адреса, указанного в списке Адрес в виде шестнадцатеричного значения. При необходимости значение адреса может быть скорректировано, при этом в окне памяти программ отобразится иной 16-байтный участок памяти программ, начинающийся с заданного адреса. Результаты работы программы анализируются путем изучения измененных участков памяти. В ходе обмена информацией между инструментальной ЭВМ и контроллером поле области Состояние снизи отображает статус линий связи. Обмен с МК* свидетельствует о выполнении очередного сеанса обмена. Пег связи о невозможности взаимодействии ЭВМ и МК, при этом дальнейшие сеансы об-
284 Приложение 4 мена блокируются. Необходимо выявить и устранить причину, а затем снять блокировку двойным щелчком левой кнопки манипулятора "мышь" по сообщению. Вкладка Окна управления Вкладка Окна управления (рис. П4.8) предназначена для интерактивного исследования систем управления и отладки пользовательских программ. Система Shell51 Г Г Г |< Ни ч-ш. ! "i • , v } НЯ.По < , 1 I "IJ не . 1, n J-^j. ть' Ifc8-? Дохрани!ь j Помои-ь ¦ Для реализации цикла управ- Ц' ления необходимо выполнить еле- !§3 ' Г дующие шаги: Подготовка тестируемой прог- "Мрес кьг.<од$ jf»iПН'»,'":• ч»«.),:; ;':.:> *¦ (iE; Печать графйЩ| Рис. П4.8. Вкладка Окна управления Вкладка содержит: область Вход с полем графика управляющего воздействия на контроллер (слева), область Выход с полем графика реакции контроллера на управления (справа), область Помощь с полем справки (слева внизу) и область Управление для настроек подсистемы (справа внизу). В области Вход пользователь, применяя манипулятор "мышь", строит график управляющего воздействия в виде кусочно-линейной однозначной функции Ф((). Двойной щелчок левой кнопкой означает начало/окончание режима Описание среды проектирования Shell51 285 ввода, однократный щелчок левой кнопкой— фиксацию текущего отрезка графика. Для удобства в области Позиция отображаются текущие координаты манипулятора "мышь". Кнопки Открыть и Сохранить позволяют использовать ранее созданные графики управляющих воздействий и запоминать на диске инструментальной ЭВМ вновь создаваемые управляющие воздействия и полученные на них реакции. Область Выход позволяет отобразить график функции M(t), являющейся результатом функционирования пользовательской программы на контроллере. Возможны три варианта комбинаций функций Ф(т) и M(t): ? только функция <P(t) (подача управляющих воздействий без приема реакции); ? только функция M(t) (опрос состояния контроллера, без подачи управления); ? совместное применение функций Ф(т) и M(t). Выбор необходимого варианта осуществляется установкой соответствующего переключателя в области Цикл в требуемое положение. Функции Ф(т) и M(t) представляют собой развернутые во времени значения задаваемых пользователем ячеек внутренней памяти данных, в связи с чем обе функции нужно адресовать, указав необходимые значения в полях области Адрес входа и Адрес выхода. Длительность развертывания наблюдаемых процессов в условных временных единицах задается изменением положения движка области Период посредством манипулятора "мышь". Графики функций Ф(:) и M(t) могут быть распечатаны на принтере с помощью кнопки Печать графиков. Начало сеанса интерактивного управления-регистрации привязывается к моменту активизации кнопки Пуск, расположенной в правом нижнем углу вкладки Окна управления. Варианты применения вкладки: ? в МК функционирует программа управления объектом, реализующая >то управление на основе задатчика, которым является область Вход. В данном случае целесообразно в качестве реакции визуализировать отклики реального объекта; ? на МК исполняется программа, которую, перед использованием совместно с объектом, необходимо протестировать на соответствие заданию. В данном случае в области Вход следует задать предполагаемые сигналы с объекта, а визуализирован, целесообразно реакцию со стороны МК.
286 Приложение 4 Следует отметить, что программа, подлежащая исследованию в данной опции, должна быть модифицирована. В участок программы, принимающий функцию Ф(т) либо формирующий функцию M(t), необходимо ввести команду перехода на подпрограмму однократного сеанса связи Lcall 0128h, что позволит инструментальной ЭВМ выдать очередное значение управляющей функции и/или принять очередное значение результирующей функции M(t). Как правило, программное управление организуется в виде цикла, внутрь которого и следует поместить указанный вызов. Другим вариантом является организация взаимодействия МК и ЭВМ по прерываниям от приемопередатчика, в обработчике которых следует предусмотреть вызов данной команды. Вкладка Терминал Вкладка Терминал (рис. П4.9) предназначена для исследования последовательного интерфейса, стыкующего МК и ЭВМ, без участия связных компонентов программы-монитора, и построения пользовательских подпрограмм' связи для распределенных систем. : -система shellsi - '" '•' ,г < • .41...'; 1| ! ,1 -, > t<- | .if 1 ' i ,ц | '« 1 ( , :-^nfj::::: H* четное t Подсистема "Терминал" предназначена для исследований последовательного порта и построения собственных программ организации связи инструментальной ЭВМ и микроконтроллера. Использование подсистемы следует проводить по следующей схеме: Б ! ц? 0'»<егигь | Д Принять однократно jj ' V i аа Выдать старт^байт и принимать циклически | Рис. П4.9. Вкладка Терминал Описание среды проектирования Shell51 287 Вкладка содержит: область настроек последовательного приемопередатчика инструментальной ЭВМ (слева вверху), область Помощь с полем справки (слева внизу), область Окно передачи с полем окна передачи (справа вверху) текстовых сообщений, область Окно приема (справа внизу) и область Состояние связи (справа в центре). Используя переключатели поля настроек приемопередатчика ЭВМ, пользователь задает необходимые режимы его работы (аналогичные значения скорости передачи, длины посылки и т. д. должны быть заданы и для приемопередатчика МК). Следуя логике программы, функционирующей на МК (созданной и загруженной в МК штатными средствами системы), пользователь применяет следующие варианты работы с подсистемой: 1. Посылает информацию в порт: • если посылка однобайтная, то используется окно передачи шестнадца- теричных кодов и кнопка Послать код, активизирующая выдачу данного значения в последовательный порт на МК; • если посылка многобайтная, то целесообразно использовать окно передачи текста, предварительно введенного с клавиатуры ЭВМ, и кнопку Послать текст, при этом производится последовательная выдача кодов символов, составляющих текст. 2. Осуществляет прием информации из порта: • при активизации кнопки Принять однократно код, содержащийся в буфере приемника ЭВМ, будет отображен в поле области Принятый код, а также отображен как очередной эквивалентный символ в области Список принятых сообщений. Кнопка Очистить позволяет освободить окна приема от содержащейся в них информации; • при активизации кнопки Выдать старт-байт и принимать циклически система вышлет в последовательный порт код A5j6, а затем перейдет к циклу ожидания поступления входной информации из последовательного порта. Указанный старт-байт может быть использован программистом микроконтроллера как уведомление о необходимости передавать результаты в ЭВМ. 3. Реализует комбинацию из вышеуказанных двух вариантов. При наличии ошибок в логике взаимодействия пользователя и программы МК возможно нарушение обмена, обозначаемое сообщением "Нет связи" в поле статуса линии. Необходимо выявить и устранить причину, после чего разблокировать приемопередатчик путем двойного щелчка левой кнопки манипулятора "мышь" на указанном сообщении.
288 Приложение 4 Вкладка Справочник Вкладка Справочник содержит сведения, необходимые для изучения аппаратуры и программирования микроконтроллерных систем. Вкладка организована в виде гипертекстового документа (рис. П4.10). МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МК-51. .t СПРАВОЧНАЯ БАЗА.. . 5 ¦¦ on; '• i,. ...' : i Рис. П4.10. Вкладка Справочник Выделенные цветом и подчеркиванием элементы документа являются ссылками на соответствующие разделы, переход на которые осуществляется щелчком левой кнопки манипулятора "мышь". Разделы в свою очередь состоят из подразделов с аналогичным принципом переходов. Для возврата на предыдущий уровень используются ссылки Назад или Возврат, присутствующие во всех документах. ПРИЛОЖЕНИЕ 5 Таблица П5.1. Структура компакт-диска Папка Содержание \simul Демонстрационная версия системы Shell51. В подкаталоге \Shell51 расположены необходимые инсталляционные файлы. В подкаталоге \DII находятся библиотеки, требуемые для корректного функционирования системы. Правила установки программного обеспечения на компьютер описаны в файле readme.txt \info Файл stend_info.doc, содержащий описание аппаратного обеспечения лабораторного практикума \examples Тексты ряда программ, рассматриваемых в главах 6 и 7 книги. В подкаталоге \drivers находятся программные драйверы обслуживания электромеханических устройств. В подкаталоге \example находятся примеры программ, рассматриваемых в главе 6. В подкаталоге \pid_reg расположены программные реализации дискретной модели RC-звена и ПИД-регулятора В подкаталоге \su находится пример организации межпрограммного взаимодействия. Правила использования этих программ указаны в файле readme.txt Для использования примеров нужно установить систему She!l5l на компьютер, руководствуясь правилами, приведенными в файле readme.txt соответствующей папки. Интересующие примерь! программ следует скопирован, в предназначенный для этого каталог \ASMS пакета Shcll5l, после чего их можно просматривать, редактировать и исследовать на симуляторе. Описание прилагаемого компакт-диска На прилагаемом к книге компакт-диске находится демонстрационная версия описанной в книге среды проектирования Shell5l, информация о стенде- тренажере, а также большинство рассматриваемых в книге примеров управляющего программного обеспечения для микроконтроллера Infineon 80С515. Структура компакт-диска приведена в табл. П5.1.
Литература 1. Сташин В. В., Урусов А. В., Мологонцева О. Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах.— М.: Энерго- атомиздат, 1990. — 224 с. 2. Боборыкин А. В., Липовецкий Г. П., Литвинский Г. В. и др. Однокристальные микроЭВМ. — М.: МИКАП, 1994. — 400 с. 3. Бродин В. Б., Шагурин И. И. Микроконтроллеры. Архитектура, программирование, интерфейс. — М.: Издательство ЭКОМ, 1999. — 400 с. 4. Хвощ С. Т., Варлинский Н. Н., Попов Е. А. Микропроцессоры и микро- ЭВМ в системах автоматического управления: Справочник. — Л.: Машиностроение, 1987. — 640 с. 5. Мясников В. А., Игнатьев М. Б., Кочкин А. А. и др. Микропроцессоры: системы программирования и отладки.-— М.: Энергоатомиздат, 1985.— 272 с. 6. Уильяме Г. Б. Отладка микропроцессорных систем: Пер. с англ. — М.: Энергоатомиздат, 1988. — 253 с. 7. Архангельский Б. В., Черняховский В. В. Поиск устойчивых ошибок в программах. — М.: Радио и связь, 1989. — 240 с. 8. Щербаков Н. С. Достоверность работы цифровых устройств. — М.: Машиностроение, 1989. — 224 с. 9. Граф Ш., Гессель М. Схемы поиска неисправностей: Пер. с нем.— М.: Энергоатомиздат, 1989. — 145 с. 10. Клистории И. Ф., Гремальский Л. А. Функциональный контроль микропроцессорных устройств. Кишинев: Штиипца, 1990. — 91 с.
292 11. Воробьев Н. И. Проектирование электронных устройств.— М.: ВШ, 1989.— 223 с. 12. Микропроцессорные системы. Учебное пособие для ВУЗов. Под общей редакцией Д. В. Пузанкова. — СПб.: Политехника, 2002. — 935 с. 13. Конструкторско-технологическое проектирование электронной аппаратуры. Учебник для ВУЗов. Под ред. проф. В. А. Шахнова. — М.: Изд-во МГТУ им. Баумана, 2002. — 527 с. 14. Николайчук О. И. х51-совместимые микроконтроллеры фирмы Cygnal. — М.: ООО "ИД СКИМЕН", 2002. — 472 с. 15. Гладштейн М. А. Микроконтроллеры семейства Z86 фирмы Z1LOG. Руководство программиста. — М.: ДОДЭКА, 1999. — 96 с. 16. Ульрих В. А. Микроконтроллеры PIC16C7X.— СПб.: Наука и техника, '¦ 2000.— 253 с. 17. Предко М. Справочник по PIC-микроконтроллерам: Пер. с англ.—¦ М.: ДОДЭКА, 2002. —512 с. 18. Андрэ Ф. Микроконтроллеры семейства SX фирмы Scenix: Пер. с фр.— М.: ДОДЭКА, 2002. — 272 с. 19. Однокристальные микроконтроллеры Р1С12С5х, Р1С12С6х, Р1С16х8х, PIC14000, М16С/61/62: Пер. с англ. и ред. Прокопенко Б. Я. — М.: ДОДЭКА, 2000. — 336 с. 20. Ремизевич Т. В. Микроконтроллеры для встраиваемых приложений: от общих подходов— к семействам НС05 и НС08 фирмы Motorola.— М.: ДОДЭКА, 2000. — 272 с. 21. Шагурин И. И. Микропроцессоры и микроконтроллеры фирмы Motorola. — М.: Радио и связь, 1998. — 556 с. 22. Куприянов М. С, Матющкин Б. Д. Цифровая обработка сигналов: процессоры, алгоритмы, средства проектирования.— СПб.: Политехника, 1998. —592 с. 23. Вениаминов В. П., Лебедев О. Н., Мирошниченко А. И. Микросхемы и их применение: Справ, пособие. — М.: Радио и Связь, 1989. — 240 с. 24. Старостин О. В. Зарубежные микропроцессоры и их аналоги. Справочник-каталог в Ют. — М.: РадиоСофт, 2001. 25. Казначеев В. А. Микросхемы для управления электродвигателями. — М.: ДОДЭКА. Вып. 1: 1999. — 288 с, Вып. 2: 2000. — 288 с. Литература 293 26. Рабодзей А. Н. Зарубежные микросхемы для управления силовым оборудованием. — М.: ДОДЭКА, 2000. — 288 с. 27. Бутаков Е. А. Методы создания качественного программного обеспечения ЭВМ. — М.: Энергоатомиздат, 1984. — 232 с. 28. Липаев В. В. Проектирование программных средств: Учеб. пособие. — М.: Высшая школа, 1990. — 303 с. 29. Васильев А. Е. Микропроцессорные системы. Разработка устройств на микроконтроллерах: Учебное пособие. — СПб.: Изд-во СПбГТУ, 2001. — 132 с.
Предметный указатель CAN 38 CSMACD-AMP 41 D DPTR 50 E EPA 28 PC 50 РСЛ 28 PTS 42 ShclI51 144,229,248,275 SSI 38 SPI38 H HSIO 28 I I2C38 О OnCE 39 TAP 38 и UART 38 w WDT45
296 Предметный указатель И Аналоговые компараторы (АК) 33 Аналого-цифровой преобразователь (АЦП) 7, 34 Арифметико-логическое устройство (АЛУ) 16 Асинхронный двухфазный двигатель (АДД) 213 Асинхронный трехфазный двигатель (АТД) 207 Большие интегральные схемы (БИС) 82 В Вектор прерывания 43 Вентильный двигатель (ВД) 204 д Двигатель постоянного тока (ДПТ) 200 Диагностирование 145, 148 0 аппаратными средствами 150 0 программно-аппаратными средствами 153 0 программными средствами 148 0 процедура проведения 156 0 тестовое 146 0 функциональное 146 Единая система конструкторской документации (ЕСКД) 72 Единая система технологической подготовки производства (ЕСТПП) 72 Ж Жидкокристаллический индикатор (ЖКИ) 169 Индикаторы тока 109 Инжекция 19 К Код операции (КОП) 15 Л Логические пробники 107 Логические пульсаторы 108 Логический анализатор 136 м Микроконтроллер (МК) 9 0 80С515 47, 181 - АЦП 61 ° назначение контактов 48 ° параллельные порты ввода-вывода 56 ° последовательный порт 62 ° регистры 50 ° режимы работы 68 ° система команд 54 ° система прерываний 64 ° сторожевой таймер 67 ° таймер 2 59 ° таймеры-счетчики 57 0 память 17 ° данных 17 = программ 17 0 процедура выполнения команд 15 0 семейство 12 0 способы адресации операндов 15 ° косвенная 15 ° непосредственная 15 ° неявная 15 ° относительная 15 ° прямая 15 0 структура 11 Микроконтроллерная система (МКС) 45, 99 0 отладка 105 Предметный указатель 297 Микрооперация 15 Микропрограммный автомат (МПА) 16 Микропроцессор (МП) 7 Мультиметр 106 н Научно-исследовательская работа (НИР) 71 Оперативное запоминающее устройство (ОЗУ) 20 0 со статической организацией 20 Опытно-конструкторская работа (ОКР) 71, 72 Осциллограф 106 Отладчик 110 п Параллельные порты ввода-вывода 22 0 цифровые 12 Парная коммутация 219 Печатная плата 89 0 фоторезист 90 0 фотошаблон 90 Постоянное запоминающее устройство (ПЗУ) 17 Прерывающие события 41 Признаки результатов операции 16 Программаторы 113 Программная модель (стимулятор) 111 ¦ Программное обеспечение (ПО) 95 0 инструментальное 96 ° структура и функции 98 ° транслятор 98 0 кроссовое 96 0 объектная программа 98 0 прикладное <)6 0 резидентное 9(> 0 системное 95 ° операционная система (ОС) 96 " структура и функции 96 0 средства и методы отладки 110 0 стадии разработки 101 Проектирование 71 Производство изделия 71, 72 0 конструкторское обеспечение 72 0 организационное обеспечение 73 0 технологическое обеспечение 72 Пропорционально-интегрально- дифференциальный регулятор (ПИД-регулятор) 100 Прямой доступ к памяти (ПДП) 42 Регистр слова состояния процессора 16 Регистры результатов 16 Регистры специальных функций 13 Сигнатурный анализ 151 Сигнатурный анализатор 152 Синусно-косинусные вращающиеся трансформаторы (СКВТ) 195 Система автоматизированного проектирования (САПР) 91 Система прерываний 42 Система проектирования Shell51 144,229,248 ' Среда проектирования Shells 1 275 Стек 16 Стековый метод доступа к памяти 16 Таймер POR 46 Таймеры-счетчики 12, 26 Технические условия (ТУ) 89 Техническое задание ('!")) 71
298 Предметный указатель Универсальный синхронно-асинхронный приемопередатчик (УСАПП) 62 Уставки 179 ш Шаговый двигатель (ШД) 219 Широтно-импульсная модуляция (ШИМ) 30, 173 ШИМ-сигнал 30 ц Цифроаналоговый преобразователь (ЦАП)7,31 э Электромеханотронная система 179 Эмулятор ПЗУ 112 Энергонезависимая память 17 Частотомер 106