Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микроконтроллеры в системах управления. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Рис. 1. Структурная схема микроконтроллеров семейства
Mega
11
2
3
регистр W или А (он же аккумулятор). Благодаря этому любой РОН может использоваться во всех командах и как операнд­источник и как операнд-приемник. Следует учесть, что коман­ды, выполняющие действия с константой, могут обращаться только ко второй половине регистров (R16...R31) – неполная ортогональность РОН.2 Кроме того, невозможна непосред­ственная пересылка констант в порты и другие регистры устройств. Эта операция выполняется через какой-либо РОН. Обычно в качестве такого «аккумулятора» используют R16 или R24, поэтому пользоваться ими для других целей не следует 3.
Последние шесть регистров общего назначения (R26…R31) используются попарно при косвенной адресации памяти данных в качестве указателей. Так образуется три 16­разрядных регистра (регистры X, Y и Z).
Регистры ввода/вывода
Регистры ввода/вывода располагаются в так называемом пространстве ввода/вывода размером 64 байта (в старших мо­делях 100 байт). Разрядность каждого регистра – 8. Все РВВ можно разделить на две группы: служебные регистры микро­контроллера в целом и регистры, относящиеся к периферий­ным устройствам (в т.ч. порты ввода/вывода – см. ниже). Реги­стры периферии, в свою очередь, функционально различаются. Это регистры данных (8- и 16-разрядные), регистры состояния (флагов), регистры управления (настройки, режимов). В РС и РУ каждый бит закреплен за отдельной функцией и имеет соб­ственное ассемблерное имя. Пример совокупности РВВ – реги­стры одного из таймеров AVR (табл. 2).
В описании архитектуры вычислительных систем этим термином
обозначают независимость или единообразность в пользовании.
ниже) позволяют преодолеть ограничения по способам пересылки данных, критериям условных переходов и проч. В ходе эмуляции или трансляции введенные макрокоманды и настройщики заменяются цепочками команд, входящих в систему команд AVR.
Макросредства сред алгоритмизации и программирования (см.
12
Груп
па
Название
Функция
Содержит
Регистры
данных
TCNT1
Счетный регистр таймера/счетчика 1
текущий код
(2 байта)
ICR1
Регистр захвата таймера/счетчика 1
защелкнутый код (2 байта)
OCR1A
Регистр совпадения выхода A
заданный код
(2 байта)
OCR1B
Регистр совпадения выхода B
заданный код
(2 байта)
Ре-
гистр
сост-я
TIFR
Регистр флагов событий таймеров / счетчиков
биты прошед­ших событий
Регистры
управления
TCCR1A
Регистр управления А таймером/счет­чиком 1
биты управле­ния
TCCR1B
Регистр управления B таймером/счет­чиком 1
биты управле­ния
TIMSK
Регистр маски прерываний от таймеров / счетчиков
биты маски
SREG
Регистр состояния процессора – флаг разрешения прерываний I
бит маски
Таблица 2
Команды, использующие в качестве операндов регистры
ввода/вывода, могут использовать только первую половину регистров ввода/вывода, т.е. регистры с младшими адресами в пространстве РВВ.
Порты ввода/вывода
Как и любые другие микроконтроллеры, микроконтролле-
ры AVR имеют узлы ввода/вывода дискретных данных – пор­ты. Внешне, с точки зрения пользователя, каждый порт состоит из определенного числа выводов (обычно из восьми, но суще­ствуют и «неполные» порты), через которые МК может при­нимать или передавать двоичные сигналы. Задание направле­ния передачи данных через каждую линию порта может быть произведено программно в любой момент времени.
13
Именно количество доступных портов, а точнее, количе­ство линий ввода/вывода, определяет, в первую очередь, выбор конкретной модели МК. Во всех микроконтроллерах семейства большинство контактов ввода/вывода имеет дополнительные функции, ибо эти выводы используются также теми или иными периферийными модулями микроконтроллера (например АЦП, таймерами и др.).
Основными характеристиками подсистемы ввода/вывода дискретных данных МК AVR являются:
• возможность запрограммировать каждый вывод порта
как входной или как выходной независимо от других;
• наличие входных цепочек с триггером Шмитта на всех
выводах;
• возможность подключения ко всем входам внутренних
подтягивающих резисторов (сопротивление резисторов состав­ляет 35...120 кОм);
• нагрузочная способность каждого выхода любого порта (в отличие от МК многих других семейств), позволяющая непосредственно управлять светодиодными индикаторами (до 20 мА).
Работу с портами программа пользователя ведет путем об-
ращения к входящим в порт регистрам ввода/вывода. Под каждый порт в адресном пространстве ввода/вывода зарезер­вировано по 3 адреса. По этим адресам размещаются: регистр данных порта PORTx, регистр направления данных DDRx (Da­ta Direction Register) и ключи («квазирегистр») ввода данных с выводов порта PINx (рис. 2). Действительные названия реги­стров (и их разрядов) получаются подстановкой названия пор­та вместо символа «х», соответственно для порта А регистры называются PORTA, DDRA, PINA, для порта В – PORTB. DDRB, PINB и т.д. Для обращения к отдельным разрядам этих регистров служит номер разряда, добавляемый к имени реги­стра через точку, например, PINB.4, DDRA.0 и т.д. При сбросе МК все выводы портов устанавливаются в третье (Z-) состоя­ние, регистры DDRx и PORTx очищаются.
14
Т Т Т Т Т Т Т Т
Ш
и
н
а
д
а
н
н
ы
х
PORTx
DDRx
PINx
T T T T T T T T
Интерфейс
альтернатив-
ной функции
Ввод/вывод
данных
Ввод/вывод коммутации
Ввод в ЦП
внешних сигналов
Выводы микросхемы
Рис. 2. Структура трехадресного порта с АФ
Как сказано выше, «псевдорегистры» PINx на самом деле регистрами не являются. По их адресам осуществляется доступ МК к физическим значениям сигналов на выводах порта. Со­ответственно, они доступны только для чтения. Если разряд­ность порта менее восьми, то для обмена данными с портом используется соответствующее число младших разрядов реги­стров. «Отсутствующие» старшие разряды доступны для чте­ния (и только), но всегда содержат «0».
Таким образом, для записи в порт следует загружать нуж­ное значение (0 или 1) в соответствующий разряд регистра PORTx. При чтении этого регистра происходит считывание данных, занесенных туда ранее, независимо от того, выводятся ли эти данные на соответствующие выводы МК.
Направление передачи данных в порте определяется со­стоянием флагов регистра передачи данных DDRx (см. рис. 2). Если n-ный разряд этого регистра установлен в «1», то на PINxn передается состояние разряда PORTxn и соответствую- щий n-й вывод порта является выходом. Если же разряд DDRxn этого регистра сброшен в «0», соответствующий вывод порта является входом. Таким образом, название Data Direction
Register означает только способность разрядов этого регистра
15
подключать PINxn к PORTxn или не подключать. Стóит напомнить, что сами регистры DDRx доступны как для чтения, так и для записи.
При чтении по адресу выводов порта PINx происходит
считывание логических уровней сигналов, присутствующих на выводах порта, независимо от DDRx.
Помимо задания направления передачи данных порты
имеют возможность подключения/отключения внутреннего подтягивающего резистора (pull-up resistor). Управление под­тягивающим резистором осуществляется с помощью регистра данных порта PORTx. Если разряд Рхn регистра PORTx уста­новлен в «1», а соответствующий вывод порта является вхо­дом, между этим выводом и проводом питания (+ 5 В) под­ключается подтягивающий резистор номиналом 35...120 кОм. Чтобы отключить подтягивающий резистор, необходимо либо сбросить соответствующий разряд регистра PORTx, либо сде­лать вывод порта выходом. Отключение всех резисторов от входов всех портов МК возможно также путем занесения логи­ческой единицы в разряд PUD регистра управления МК
MCUCR.
Подробно правила управления такими периферийными
устройствами, как порты и таймер, рассмотрены в тексте ука­заний к конкретным лабораторным работами ниже.
СРЕДА РАЗРАБОТКИ УПРАВЛЯЮЩИХ АЛГОРИТМОВ
Разработка управляющих алгоритмов для однокристаль­ных микроконтроллеров выполняется обычно специалистами той предметной области, которая автоматизируется, а не про­граммистами. Поэтому все изготовители семейств МК разраба­тывают различные программы, делающие программирование МК более доступным. В этой работе принимают участие и сто­ронние разработчики. В частности, в России разработана гра­фическая среда Algorithm Builder для разработки алгоритмиче­ского обеспечения к микроконтроллерам с архитектурой AVR
16
фирмы ATMEL (графический макроассемблер). Авторами про­граммы Algorithm Builder является группа отечественных про­граммистов под руководством Геннадия Леонидовича Громова из Нижнего Новгорода.
Среда Algorithm Builder (AB) предназначена для производ-
ства полного цикла разработки, начиная от ввода алгоритма, включая процесс отладки и заканчивая программированием кристалла. Разработка программы может выполняться как на уровне чистого ассемблера AVR, так и на макроуровне, вклю­чая возможность для пользователя создавать собственные мае­рооператоры. В Интернете отмечается, что целевая аудитория данной среды – люди, начинающие осваивать микроконтрол­леры, это подтверждено и опытом использования Algorithm Builder в учебном процессе кафедры.
В отличие от классического ассемблера программа вводится в виде алгоритма с древовидными ветвлениями и отображается на плоскости, в двух измерениях. Сеть условных и безусловных переходов отображается графически, в удобной векторной форме, логическая структура программы становится наглядной. В то же время возможны и переходы по именованным меткам.
Среда объединяет в себе графический редактор, компиля­тор алгоритма, симулятор микроконтроллера, внутрисхемный программатор. Данное ПО распространяется свободно. Папка с установленной программой может копироваться на другие но­сители и работать портативно. В состав среды входит и manual – подробное руководство по использованию.
Следует учесть, что среда является однозадачной, откры­тие нескольких проектов в одном экземпляре редактора невоз­можно (хотя возможно создание иерархической системы про­ектов), однако можно запустить несколько экземпляров Algo- rithm Builder одновременно и при необходимости переносить фрагменты работы из одного проекта в другой через буфер ОС
Windows.
17
Система
счисления
Сокращенное
обозначение
Префикс4
в АВ
Префикс
в Си
Двоичная
Bin – от слова Binary
#b
0b
Десятичная
Dec – от слова Decimal
без пре-
фикса
без пре-
фикса
Шестнадцате­ричная
Hex – от слова Hexadecimal
$
0x
4
Algorithm Builder обеспечивает отладку на кристалле (On
Chip debug), которая позволяет наблюдать содержимое реаль-
ного кристалла в заданной точке останова. При этом для связи микроконтроллера с компьютером используется только один вывод, причем по выбору пользователя. Мониторная отладка может быть применена к любому типу кристалла, имеющего SRAM. В данном цикле работ Algorithm Builder для работы с реальным кристаллом не используется, загрузка и on chip de-
bug будут проводиться с помощью среды программирования AVR (Atmel) Studio.
Для ввода значений в память и регистры МК и наблюдения хода выполнения алгоритмов и программ можно использовать данные в различных системах счисления. Приведем здесь обо­значения чисел в различных системах – в разных источниках и средах они выглядят следующим образом (табл. 3).
Таблица 3
Например, десятичное число 25 в нотации АВ выглядит как 25=$19=#b00011001, а в нотации, используемой в Си, как 25=0x19=0b00011001. Для перевода полезно использовать вхо­дящий в Windows Калькулятор в режиме «Программист».
На этапе создания программ для управления МК семейства AVR в основном используется AVR Studio – профессиональная
СРЕДА РАЗРАБОТКИ И ОТЛАДКИ
УПРАВЛЯЮЩИХ ПРОГРАММ
Префикс – сочетание символов перед значением числа.
18
интегрированная среда разработки (Integrated Development En­vironment – IDE), созданная фирмой Atmel для сопровождения
своей продукции. Инсталляционный пакет этой инструмен­тальной программы можно свободно скачать с сайта фирмы (ныне microchip.com – фирмы, поглотившей Atmel), а также множества дружественных сайтов. AVR Studio предназначена для написания программ в среде Windows, их отладки, транс­ляции и записи в память микроконтроллера (с помощью под­ключаемых к компьютеру внешних устройств). Пакет включа­ет в себя специализированный текстовый редактор для написа­ния программ, мощный программный отладчик, а также до­пускает подключение дополнительных модулей [3]. В частно­сти, версия 4 для использования с языком Си требует установ­ки приложения WinAVR [17], а версии 5 и последующие со­держат необходимые средства встроенно.
Познакомимся подробнее с этим инструментом, позволяю­щим работать как на Ассемблере (Atmel AVR Assembler – Asm), так и на языке Си. Как и Algorithm Builder, программная среда AVR Studio работает не просто с программами, а с про- ектами. Для каждого проекта должен быть отведен свой от­дельный каталог на жестком диске. В AVR Studio одновремен­но может быть загружен только один проект. При загрузке но­вого проекта предыдущий проект автоматически выгружается (при необходимости работать с несколькими проектами можно запустить несколько экземпляров среды AVR Studio). Проект содержит всю информацию о разрабатываемой программе и применяемом микроконтроллере.
Работа с проектом состоит из следующих фаз:
* инициализация проекта;
* подготовка алгоритма программы (блок-схемы);
* написание и редактирование программы на языке ассем-
блера AVR в текстовом редакторе AVR Studio;
19
* трансляция проекта в hex-код ↔ устранение ошибок; * проверка работоспособности программы (путем симуля-
ции, эмуляции) и отладка;
* программирование микроконтроллера и проверка его
в реальной схеме.
Инициализация проекта состоит в запуске программы AVRStudio.exe, выборе в соответствующих диалоговых окнах варианта «создать новый проект – открыть существующий», а затем, если проект новый, то в выборе:
типа проекта:
- проект на Ассемблере (Atmel AVR Assembler);
- проект на языке Си (AVR GCC);
имени проекта, его главного программного файла и его местонахождения; отладочной платформы и модели микроконтроллера.
Встроенный текстовый редактор программы AVR Studio
поддерживает все необходимые сервисные функции:
- цветовое выделение синтаксиса для улучшения читабель-
ности текста, как в Visual Studio;
- выделение текстовых фрагментов;
- вырезание с помещением в буфер Windows;
- копирование;
- вставку;
- перетаскивание мышью;
- поиск и замену и многое другое.
Для управления всеми этими возможностями используется
стандартный интерфейс, известный по многим текстовым ре­дакторам, в частности, по Visual Studio, Microsoft Word. Наби­раемый тест программы следует периодически записывать на диск при помощи команды «Save» меню «File» или при помо­щи соответствующей кнопки на панели инструментов.
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]