Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro
Скачать 6.79 Mb.
|
ГЛАВА 3 МИКРОКОНТРОЛЛЕРЫ PICMICRO Уже более десяти лет я использую в своей работе микроконтроллеры PIC, изго- товленные по технологии КМОП (комплементарные схемы, CMOS). Мне знакомы и микроконтроллеры предыдущего поколения, изготовленные по технологии n-МОП (на МОП транзисторах с п-кана- лом, NMOS). В своей приверженности микроконтроллерам PIC я не одинок: эти микросхемы имеют достаточную производительность, легко программируются и весьма популярны среди как профессионалов, так и радиолюбителей. Кроме того, широкий спектр различных микроконтроллеров PIC способен удовлетворить самые разнообразные запросы разработчиков, которым не соста- вит большого труда найти для своего проекта самую подходящую модель, облада- ющую набором необходимых функций. Каждый год фирма Microchip объявляет о выпуске около сотни новых модификаций — с новыми функциями, заключен- ных в различные корпуса. Многие старые модели получают новую жизнь, подвер- гаются модернизации, улучшаются их характеристики и снижается стоимость. Перечислим только самые основные особенности большинства микроконтрол- леров PICmicro: • возможность выбора различных конфигураций во время программирования; • возможность работы с различными тактовыми генераторами (в том числе использование контура фазовой подстройки частоты, ФАПЧ); • сопряжение с различными схемами формирования сигнала сброса (в том числе формирование сигнала сброса внутри микроконтроллера); • широкий спектр возможностей ввода-вывода, в том числе: - ввод-вывод сигналов большой мощности; — выходы с открытым коллектором (ОК); - последовательный ввод-вывод с использованием кода NRZ (кодирование без возвращения к нулю); - синхронный последовательный порт ввода-вывода; - аналоговый вход с компараторами или АЦП; • многократно программируемая встроенная память (Flash) для хранения про- грамм и данных; • встроенные таймеры-счетчики с возможностью настройки режимов их ра- боты; • одновекторная система прерываний, настраиваемая на работу с различными источниками запросов (некоторые микроконтроллеры PIC поддерживают несколько векторов прерываний). Микроконтроллеры PICmicro 57 Microchip была одной из первых фирм, которые начали производить недоро- гие микроконтроллеры и обеспечили масштабную поддержку своих клиентов. Многие микроконтроллеры PIC имеют возможность внутрисхемного программи- рования Serial Programming, ICSP). Это означает, что нет необходимо- сти вынимать программируемый микроконтроллер из целевой схемы и вставлять его в программатор. Кроме того, фирма Microchip одной из первых начала использовать в своих микросхемах перепрограммируемые ПЗУ с электрическим стиранием (ЕЕР- ROM). С тех пор окошко для стирания программ с помощью ультрафиолетовых лучей навсегда исчезло с корпуса микроконтроллеров. На основе чипов PICmicro разрабатывается множество коммерческих устройств. На рынке микроконтроллеров Microchip находится на втором месте (после Mo- torola). Большое количество автоматических устройств разрабатывают с исполь- зованием плат Parallax Basic Stamp, которые основаны на микроконтроллерах PIC. Для PICmicro доступна подробная документация (включающая многочислен- ные примеры использования этих микроконтроллеров при разработке различных автоматических устройств); имеется программное обеспечение для разработки и отладки программ; множество различных программаторов, симуляторов и эму- ляторов. В Internet доступны тысячи ресурсов, посвященные различным аспек- там проектирования устройств на основе микроконтроллеров PIC. Можно ска- зать, что эти микроконтроллеры практически так же распространены, как персональные компьютеры PC. Есть, конечно, и недостатки, но их не так уж много. Некоторым разработчи- привыкшим к процессорам принстонской архитектуры, не нравится, что для программирования микроконтроллеров PIC на языке низкого уровня они долж- ны изучать особенности гарвардской на которой основаны микро- контроллеры Microchip. Кроме того, говорят, что эти микроконтроллеры несколь- ко проигрывают другим по соотношению «цена/производительность». Но лично я считаю, что гарвардская архитектура лучше всего подходит для программиро- вания автоматических устройств, а если говорить о цене и производительности, фирма Microchip не прекращает работу по улучшению своей продукции. Начиная работу над этой книгой, я разрабатывал все примеры программ (в том числе приведенные в следующей главе) для чаще всего используемого на тот мо- мент микроконтроллера Главным доводом в пользу этого контроллера было то, что именно для него предназначался бесплатно распространяемый ком- пилятор С фирмы HI-TECH Software; это позволяло разрабатывать программы на языке высокого уровня. Кроме того, PIC16F84 имел Flash-память и поддержи- вал возможность внутрисхемного программирования. Но пока продолжалась работа над книгой, вышла новая версия компилятора Lite, умеющая генерировать код для контроллера 16F627. Этот контрол- лер наделен всеми чертами своего предшественника и вдобавок к этому В процессорах гарвардской архитектуры разделены память команд и память данных. - Прим. перев. 58 Устройства управления роботами имеет расширенные функции ввода-вывода, позволяющие существенно упрос- тить разработку автоматических устройств. Поэтому все приведенные здесь про- граммы и схемы устройств были без особого труда переориентированы на новый микроконтроллер. В этой главе будет подробно описано функционирование микроконтроллера PIC16F627. Мне хотелось бы быть уверенным, что вы досконально изучите его устройство и особенности программирования, перед тем как приступить к разра- ботке автоматических устройств на его основе. Необходимо отметить также, что вместо зарегистрированного названия для микроконтроллеров фирмы Microchip часто используют короткую аббревиатуру PIC (Peripheral Interface Controller - периферийный интерфейсный контроллер). Именно так назвала свое детище фирма General Instruments, от ко- торой впоследствии отпочковалась Microchip; вот почему это название до сих пор не вполне корректно закрепляют за микроконтроллерами PICmicro. 3.1. ОСНОВНЫЕ ОСОБЕННОСТИ МИКРОКОНТРОЛЛЕРОВ PICMICRO Имеется несколько различных семейств микроконтроллеров PIC, у каждого из которых свои характерные особенности. Микроконтроллеры (МК) разных се- мейств отличаются друг от друга программно доступными регистрами для рабо- ты с периферийными устройствами, организацией системы прерываний, наличи- ем некоторых команд (например, операции умножения, выполняемой за один цикл работы процессора). Основные отличия перечислены в табл. 3.1. Таблица 3. Семейства микроконтроллеров PICmicro Семейство Разрядность Количество команд, регистров* Младшее 32x4 1. Хорошо подходят для управления несложными периферийными устройствами 2. Не имеют системы прерываний 3. Имеют один 4. Работают на частоте до 20 МГц 5. Имеют ограниченные возможности ввода-вывода 6. Не имеют Flash-памяти программ 7. Программируются только в параллельном режиме (исключение составляют и возможность последовательного внутрисхемного программирования] Среднее 14 128x4 Хороший выбор для устройств общего применения 2. Наиболее популярны среди остальных МК Р/С 3. Имеют наибольшее количество модификаций 4. Одновекторная система прерываний 5. До трех таймеров Микроконтроллеры PICmicro 59 Таблица Семейства микроконтроллеров PICmicro (окончание) Семейство Разрядность команд, бит Количество Примечания 6. Работают на частоте до 20 МГц 7. Поддерживают расширенные возможности ввода-вывода ввод-вывод, драйвер жидкокристаллического дисплея, последовательный интерфейс и пр.) 8. В большинстве своем имеют Flash-память программ 9. программирование в последовательном коде Некоторые имеют встроенные средства отладки программ 16 224x8, 48 регистров специальных функций Внешняя шина/параллельный порт 2. Архитектура, отличающаяся от остальных МК PICmicro 3. Расширенная система индексная адресация 4. Небольшое количество модификаций 5. Несколько векторов прерываний 6. Три таймера 7. Работают на частоте до 33 МГц 8. Поддерживают расширенные возможности ввода-вывода 9. Не имеют Flash-памяти программ Программируются только в параллельном режиме; поддерживают режим самопрограммирования PIC18C/Fxx2 16 256x16 1. Улучшенная архитектура, основанная на архитектуре среднего семейства 2. Могут адресовать до 2 Мб памяти программ, до 4 Кб памяти данных 3. В скором времени полностью заменят МК среднего семейства 4. Расширенная система команд, индексная 5. Один вектор прерывания, программирование приоритетов источников запроса 6. Расширенные возможности ввода-вывода, аналогичные МК среднего семейства 7. на частоте до 40 МГц (тактовый генератор на и ФАПЧ для умножения 8. Имеют Flash-память программ 9. Поддерживают внутрисхемное программирование в последовательном коде и самопрограммирование (self-programming) * количество регистров в одном банке памяти и количество банков. 60 Устройства управления роботами МК всех семейств выполняют каждую машинную команду за четыре такта. В большинстве случаев поддерживается тактовая частота до 20-33 МГц. Некото- рые модели используют кольцо фазовой автоподстройки частоты (ФАПЧ) для умножения частоты тактового генератора в четыре раза. В табл. 3.2 перечислены некоторые часто используемые микроконтроллеры различных семейств. Таблица 3.2. Микроконтроллеры PICmicro 12С5хх 12С6хх 16С5х 16С505 16HV540 16С55х 16С6х 16С7х 16F87x 16С9хх 18Сххх Семейство Младшее Среднее Среднее Младшее Младшее Младшее Среднее Среднее Среднее Среднее Среднее Среднее Среднее Среднее Старшее Основные особенности* IOSCR ADC, IOSCR, Data EEPROM ADC Регулятор напряжения VC ADC FP ADC, FP ADC, PC Внешняя память ADC, PC применения Простые интерфейсные устройства Простые интерфейсные устройства Управление питанием Простые устройства Простые устройства Простые устройства Простые устройства Простые цифровые устройства Аналоговые устройства Аналоговые устройства Аналоговые интерфейсы Разработка устройств на основе микроконтроллеров Аналоговые интерфейсы Разработка устройств Аналоговые интерфейсы Сложные устройства Сложные аналоговые/цифровые интерфейсные устройства * Обозначения: IOSC - Internal OSC/Reset (встроенный тактовый генератор и схема формирования сигнала ADC - наличие АЦП; Data EEPROM - многократно программируемая память данных с электрическим стиранием; VC - Voltage Comparator (аналоговый вход с компаратором FP - Flash Program Memory программ/. Заметим, что память программ в микроконтроллерах PICmicro измеряется не байтами, а количеством машинных команд, так как разрядность каждой команды составляет в МК различных семейств от 12 до 16 бит. Система команд МК PICmicro разработана таким образом, что число различ- ных команд, необходимых для программирования приложений, раза в три мень- ше, чем обычно требуется при использовании других микроконтроллеров. Микроконтроллеры PICmicro 61 3.2. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ Как уже говорилось, для МК PICmicro бесплатно доступно большое число раз- личных инструментальных средств, в том числе интегрированная среда разработ- ки программ MPLAB фирмы Microchip, а также компилятор языка высокого уров- ня Lite фирмы HI-TECH Software. Используемое в книге ПО работает на платформе Win32 под управлением операционных систем Windows 95, Windows NT, Windows 2000, Windows ME, Windows XP фирмы Microsoft. PICC Lite - это бесплатная версия компилятора языка С, разработанного фир- мой HI-TECH Software и предназначенного специально для МК PICmicro. Хотя этот компилятор использует командную строку MS DOS, он легко интегрируется со средой разработки MPLAB, позволяя проводить отладку исходного кода в диа- логовом режиме. Как будет показано в следующей главе, с помощью PICC Lite можно разрабатывать довольно сложные программы, не прибегая к использова- нию ассемблера. Краткое описание языка PICC Lite приводится в приложении. Полная (не бесплатная) версия компилятора PICC может генерировать машин- ный код для любого микроконтроллера PICmicro и имеет для каждого из них спе- циальные включаемые файлы. Что касается бесплатной версии PICC Lite, то она поддерживает пока только МК PIC16C84, PIC16F84, PIC16F84A и PIC16F627. Этот набор может показаться весьма скудным, но МК благодаря наличию Flash-памяти программ уже давно традиционно используется в радиолюбительских конструкциях, а пришедший ему на смену (равно как и име- ющий больший объем памяти программ) постепенно становится новым стандартным МК для разработки устройств на микроконтроллерах PICC Lite совместим со стандартом ANSI/ISO С, но следует иметь в виду не- которые его особенности, важные при проектировании программ управления ав- томатическими устройствами на основе микроконтроллеров. Этот компилятор специально разрабатывался для совместного использования с интегрированной средой MPLAB и компоновщиком объектных модулей фирмы Microchip, чтобы сделать возможными компиляцию и отладку программ на уровне исходного тек- ста, а также вставку низкоуровневых команд микроконтроллеров PIC в текст про- грамм на языке С. Компилятор PICC Lite отводит для целых переменных типа int два байта памяти (это может показаться необычным тому, кто привык про- граммировать 8-разрядные микроконтроллеры на языке низкого уровня, и не со- всем согласуется с требованиями стандарта ANSI С, который предписывает в та- ком случае использовать разрядность, совпадающую с размером машинного слова). Однако большинство программистов уже привыкли, что данные типа int являются 16-разрядными. Поэтому для 8-разрядных переменных следует исполь- зовать привычный в таких случаях тип char. Все регистры микроконтроллеров PIC описаны в файле и доступны в программах на языке С. 62 Устройства управления роботами Следует упомянуть о нескольких важных ограничениях компилятора PICC Lite. Из-за небольшого аппаратного стека микроконтроллеров PIC (глубиной не более 8 слов) в программах на языке С нельзя рекурсию. Кроме того, недопустимы повторно функции, которые могут вызываться из проце- дуры обработки прерывания, возникшего в момент выполнения этой же функции, но вызванной из главной программы. В большинстве случаев это не слишком сильное ограничение. В данной книге я постараюсь не использовать возможность компоновщика генерировать НЕХ-файл из нескольких объектных модулей. Для простоты по- нимания логики работы приведенных примеров, а также для упрощения про- цесса отладки мы везде будем использовать для компиляции только один файл с исходным текстом программы. Но с помощью компилятора PICC Lite можно разрабатывать и сложные приложения, исходные тексты которых могут быть раз- бросаны по разным файлам. Следует сказать, что возможность вставки ассемблерного кода, поддерживае- мая компилятором PICC Lite, снижает необходимость применения объектных файлов при сборке будущего приложения. В нескольких примерах я буду использовать такие машинные команды, как или Выше уже говорилось о том, что машинный язык микроконтроллеров PICmicro несколько отличается от машинного языка процессоров принстонской архитектуры (в том числе и микроконтроллеров Motorola 68HC11). Первоначальные версии представленных в книге программ разрабатывались для МК И хотя он не имеет некоторых возможностей, обеспечиваемых более новым МК PIC16F627, но и для него с помощью компилятора PICC Lite удается создавать достаточно простые и эффективные программы. После выпус- ка новой версии PICC Lite, способной работать с PIC16F627, все приведенные в книге программы были модифицированы для этого микроконтроллера. Вот уже более пяти лет я использую в своей работе интегрированное инстру- ментальное средство MPLAB, разработанное фирмой Microchip специально для своих микроконтроллеров. Новые версии этой программы, в которых исправле- ны замеченные ошибки, а также добавлена поддержка новых микроконтроллеров, можно бесплатно загрузить с сайта www.microchip.com. Среда разработки MPLAB имеет следующие особенности: • совместимый с Microsoft текстовый редактор; • включаемые файлы с описаниями регистров микроконтроллеров PICmicro всех семейств и модификаций; • встроенный ассемблер для всех микроконтроллеров PICmicro; • компоновщик OBJ-файлов; • возможность настройки интерфейса оболочки; • встроенный симулятор (с ограниченной поддержкой функций ввода-вывода); • интерфейс для внутрисхемного эмулятора MPLAB-ICE и PICMASTER; • интерфейс отладчика для Debugger - внутрисхем- ный отладчик); • программный интерфейс с программаторами PICSTART и PROMATE II. Микроконтроллеры 63 Интегрированная среда MPLAB имеет интуитивно понятный интерфейс пользователя, привычный тем, кто знаком с аналогичным программным обеспе- чением фирмы Microsoft. Основные команды текстового редактора MPLAB при- ведены в табл. 3.3. Таблица 3.3. Основные команды текстового редактора MPLAB Комбинация клавиш Команда t Переместить курсор на одну строку вверх Переместить курсор на одну строку вниз Переместить курсор на один символ влево Переместить курсор на один символ вправо Page Down текст на одну экранную страницу вверх Сдвинуть текст на одну экранную страницу вниз курсор перед первым символом текущего слова Поставить курсор перед первым символом следующего слова Home End курсор в начало просматриваемого текста Поставить курсор в конец просматриваемого Переместить курсор в начало текущей строки Переместить курсор в конец текущей строки Поставить курсор перед первым символом файла Переместить курсор в конец файла Расширить выделение на один символ влево Расширить выделение на один символ вправо Расширить выделение на одну строку вверх Расширить выделение на одну строку вниз Расширить выделение на одно слово влево Расширить выделение на одно слово вправо Отменить последнее изменение Вырезать выделенный текст в буфер обмена Скопировать выделенный текст в буфер обмена Вставить текст из буфера обмена там, где стоит курсор F3 Искать текст по образцу Сохранить текущий файл Открыть файл Создать новый файл текущий или выделенный фрагмент С программой MPLAB интегрируется большое число выпускаемых Microchip устройств, которые подключаются к персональному компьютеру. В течение не- скольких лет я использовал одно из таких устройств - Plus. Другое устройство - внутрисхемный отладчик MPLAB ICD для микроконтроллеров PIC16F876 и PIC16F877 - обладает многими чертами внутрисхемного эмулято- ра, полностью интегрируется с MPLAB и существенно облегчает отладку про- грамм. |