Микропроцессорные системы. Применение микроконтроллеров семейства AVR для управления внешними устройствами
Покупка
Основная коллекция
Тематика:
Микроэлектроника. Наноэлектроника
Издательство:
Инфра-Инженерия
Год издания: 2023
Кол-во страниц: 96
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9729-1212-4
Артикул: 811519.02.99
Приведены практические примеры реализации различных вариантов подключения периферийного оборудования на примере микроконтроллеров семейства AVR и программного обеспечения для работы с этим оборудованием. Даны примеры реализации типовых задач. На примере микроконтроллеров семейства AVR подробно разобраны такие распространённые периферийные устройства, как порты ввода-вывода, таймеры-счётчики, последовательный интерфейс. Все примеры написаны на языках программирования C/C++. Для студентов и аспирантов, обучающихся по направлениям «Прикладная математика и информатика», «Информатика и вычислительная техника», «Информационные системы и технологии», «Прикладная информатика», «Программная инженерия», «Автоматизация технологических процессов и производств», «Мехатроника и робототехника». Может быть полезно школьникам, углублённо изучающим информатику, робототехнику и посещающим соответствующие кружки.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 15.03.04: Автоматизация технологических процессов и производств
- 15.03.06: Мехатроника и роботехника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
lkvºÓĉ}ÒÓilvºÓĉ}ÒÓ kkbÈäÒÓ ljzc|c|¡pvv|cshp vjvplh ¯ÒäËÓËÓÒËäÒ}¯º}ºÓ¯ºãã˯ºm °ËäË®°mÈ$95ąã«¹¯ÈmãËÓÒ« mÓËĈÓÒäÒ°¯º®°mÈäÒ lº°}mÈ{ºãºĄąÈ ½jÓÁ¯ÈjÓÎËÓ˯ҫ
УДК 004.42 ББК 32.973 С62 Р е ц е н з е н т ы : зам. директора по развитию ИШИТР ТПУ, к. т. н., доцент, доцент ОИТ ИШИТР ТПУ Дёмин Антон Юрьевич; к. т. н., доцент ОИТ ИШИТР ТПУ Погребной Александр Владимирович Сонькин, М. А. С62 Микропроцессорные системы. Применение микроконтроллеров семейства AVR для управления внешними устройствами / М. А. Сонькин, Д. М. Сонькин, А. А. Шамин. – Москва ; Вологда : Инфра-Инженерия, 2023. – 96 с. : ил., табл. ISBN 978-5-9729-1212-4 Приведены практические примеры реализации различных вариантов подключения периферийного оборудования на примере микроконтроллеров семейства AVR и программного обеспечения для работы с этим оборудованием. Даны примеры реализации типовых задач. На примере микроконтроллеров семейства AVR подробно разобраны такие распространённые периферийные устройства, как порты ввода-вывода, таймеры-счётчики, последовательный интерфейс. Все примеры написаны на языках программирования С/C. Для студентов и аспирантов, обучающихся по направлениям «Прикладная математика и информатика», «Информатика и вычислительная техника», «Информационные системы и технологии», «Прикладная информатика», «Программная инженерия», «Автоматизация технологических процессов и производств», «Мехатроника и робототехника». Может быть полезно школьникам, углублённо изучающим информатику, робототехнику и посещающим соответствующие кружки. УДК 004.42 ББК 32.973 ISBN 978-5-9729-1212-4 © Сонькин М. А., Сонькин Д. М., Шамин А. А., 2023 © Издательство «Инфра-Инженерия», 2023 Оформление. Издательство «Инфра-Инженерия», 2023
|k{psjp Введение .............................................................................................................................. 5 1. Микропроцессорный модуль AVR Butterfly ................................................................ 6 2. Структурная схема модуля AVR Butterfly ................................................................... 7 3. Программирование AVR Butterfly с помощью UART .............................................. 10 4. Архитектура микроконтроллера ATMega169 ............................................................ 12 5. Порты ввода-вывода общего назначения ................................................................... 18 5.1. Пример настройки порта ввода-вывода .............................................................. 21 5.2. Пример работы с портом ввода-вывода в режиме ввода .................................. 22 5.3. Пример работы с портом ввода-вывода в режиме вывода ................................ 24 5.4. Прерывания портов ввода-вывода ....................................................................... 26 6. Таймеры-счетчики ....................................................................................................... 30 6.1. Таймер-счетчик в режиме отсчета временных интервалов .............................. 33 6.2. Таймер-счетчик в режиме счета импульсов ....................................................... 37 6.3. Таймер-счетчик в режиме ШИМ ......................................................................... 37 7. Последовательный интерфейс UART ........................................................................ 41 8. Проектирование программы для микроконтроллера ............................................... 45 8.1. Общая структура программы .............................................................................. 45 8.2. Секция инициализации ........................................................................................ 46 8.3. Основной цикл ...................................................................................................... 47 8.4. Обработка прерываний......................................................................................... 48 8.5. Драйвера устройств .............................................................................................. 48 9. Программирование модуля AVR Butterfly ................................................................. 49 9.1. Таймеры ................................................................................................................. 49 9.1.1. Аппаратные таймеры .................................................................................... 49 9.1.2. Программные таймеры ................................................................................. 49 9.1.3. Драйвер пула программных таймеров ........................................................ 50 9.2. Циклические буфера ............................................................................................. 52 9.3. Универсальный асинхронный приемопередатчик UART ................................. 53 9.3.1. Аппаратные средства UART ........................................................................ 54 9.3.2. Драйвер UART............................................................................................... 54 9.4. Дисплей .................................................................................................................. 55 9.5. Джойстик ............................................................................................................... 56 Заключение ........................................................................................................................ 58 Список использованных источников .............................................................................. 59 Приложение A. Исходные тексты программного модуля калибровки (osBcalibrate.cpp, osBcalibrate.h) ....................................................................................... 60 Приложение Б. Исходные тексты программного драйвера пула программных таймеров (cSoftTimers.cpp, cSoftTimers.h) ............................................. 63
Приложение В. Исходные тексты программной реализации циклических буферов (CycloBuf.h и CycloBuf.cpp) ...................................................... 69 Приложение Г. Исходные тексты программной реализации драйвера UART (cUSART.h и cUSART.cpp) ............................................................................................... 73 Приложение Д. Исходные тексты программной реализации драйвера ЖКИ-дисплея (LCDBdriver.h и LCDBdriver.cpp) ........................................... 79 Приложение Е. Исходные тексты программной реализации драйвера джойстика (JOYBdriver.h и JOYBdriver.cpp) ...................................................................................... 87
{{pipsjp В любом реальном микропроцессорном устройстве (МПУ) микроконтроллер каким-либо образом взаимодействует с окружающим миром. Например, микроконтроллеру часто необходимо считывать состояние кнопок (нажата кнопка или нет), управлять светодиодными индикаторами или дисплеем, считывать напряжение с аналогового датчика, отсчитывать временные интервалы и многое другое. В настоящем пособии показано, как реализовать простейшую поддержку ввода электрических сигналов на примере кнопок джойстика, как отсчитывать время с помощью встроенных таймеров и как выводить символы на ЖКИ-индикатор. Приведённые примеры реализованы в виде библиотек и драйверов устройств, которые могут быть полезны на практике. Исходный текст этих библиотек и драйверов приведён в приложении. Спектр внешних устройств, которые могут взаимодействовать с микроконтроллером, практически не ограничен. Поэтому в пособии обзорно рассмотрены общие подходы, а более подробные рекомендации по работе с тем или иным устройством следует искать в специальной литературе, ссылки на которую приведены в тексте по мере необходимости. Практические примеры, приведённые в пособии, рассчитаны на использование микроконтроллеров семейства AVR на примере микросхемы ATMega169 и микропроцессорного модуля AVR Butterfly. Приведённые примеры программных решений могут использоваться на других микроконтроллерах семейства AVR с минимальными изменениями. Все примеры реализованы на языках программирования C/C. Несмотря на то, что в примерах используется отладочная плата (модуль) AVR Butterfly, все примеры переносимы и на другие микроконтроллеры семейства AVR, имеющие аналогичные периферийные устройства.
lÒ}¯º¹¯ºĆË°°º¯Ó©®äºąãĉ$95%XWWHUIO\ Микропроцессорные модули AVR Butterfly построены на базе микроконтроллера ATMega169 с ядром AVR [1, 2, 3, 10]. В состав модуля AVR Butterfly входят следующие аппаратные компоненты: x микроконтроллер Atmeg169; x 6-символьный ЖКИ; x память DataFlash объемом 4Мбит, подключенная к микропроцессору по интерфейсу SPI; x кварцевый резонатор с частотой 32 кГц для обеспечения работы часов реального времени; x джойстик для ввода информации; x датчик температуры; x акустический излучатель; x RS-232 преобразователь уровней для обеспечения обмена данными с внешними устройствами; x элемент питания, служащий для автономной работы модуля. Кроме того, модуль AVR Butterfly имеет возможность подключения внешних устройств, контакты которых выведены на разъем с краю платы. Встроенное программное обеспечение модуля AVR Butterfly содержит начальный загрузчик, позволяющий изменять содержимое памяти программ микроконтроллера ATMega169 по интерфейсу RS232. С помощью внешних интерфейсов модули могут быть объеденные в распределенную микропроцессорную систему или подключены к другим микропроцессорным устройствам.
v¯}¯ÓÈ«°²ËäÈäºąã«$95%XWWHUIO\ Структурная схема модуля AVR Butterfly приведена на рис. 1. На схеме не показаны некоторые элементы, такие как батарея питания, преобразователи уровня RS232. Центральным элементом модуля AVR Butterfly является микроконтроллер ATMega169, осуществляющий управление всеми остальными элементами схемы. ЖКИ-дисплей служит для вывода информации пользователю. Микроконтроллер ATMega169 имеет встроенную схему управления ЖКИдисплеями, к которой и подключается этот дисплей. Более подробно, вопросы подключения и программирования дисплея описаны в соответствующем разделе ниже. cÒ°v¯}¯ÓÈ«°²ËäÈäºąã«$95%XWWHUIO\ Джойстик служит для ввода информации пользователем и представляет собой с точки зрения схемотехники пять переключателей типа
«сухой контакт», подключенных к 5 линиям ввода микроконтроллера ATMega169. Соответствие положения джойстика и линий ввода микроконтроллера приведено в табл. 1. Заметим, что контакты джойстика подключены к двум разным портам микроконтроллера ATMega169, поэтому, чтобы узнать состояние всех контактов джойстика необходимо опросить два порта – порт B и порт E. Акустический излучатель Д1 предназначен для воспроизведения звука. Управляется излучатель при помощи 5-й линии порта В. Данная линия может использоваться как выход широтно-импульсного модулятора – ШИМ, поэтому воспроизведение звука практически не требует временных ресурсов процессорного ядра. Таблица 1 Соответствие контактов джойстика и линий ввода ATMega169 № Контакт Порт Номер бита порта 1 Вверх POTRB PINB6 2 Вниз POTRB PINB7 3 Влево POTRE PINE2 4 Вправо POTRE PINE3 5 Центральная кнопка POTRB PINB4 Внешняя энергонезависимая память DataFlash объемом 4 Мбит (512 Кбайт) подключена к микроконтроллеру ATMega169 по интерфейсу SPI и служит для хранения значительных объемов данных. Встроенный датчик температуры (обозначен Т на рис. 1) представляет собой терморезистор, подключенный к линии встроенного в ATMega169 АЦП. Кварцевый резонатор на 32768 Гц служит для калибровки тактового генератора микроконтроллера при его запуске и для отсчета реального времени в процессе выполнения программы. Часть линий микроконтроллера, обозначенных на рис. 1 как JTAG, PORTB, PORTD, UART, USI, ISP, VBin выведена на внешние разъемы, расположенные по краям платы модуля AVR Butterfly. Эти разъемы служат для подключения внешних устройств. Заметим, что некоторые линии данных внешних разъемов одновременно подключены к устройствам, установленным на плате модуля AVR Butterfly и это необходимо учитывать при подключении внешних устройств.
К линиям JTAG может подключаться устройство для внутрисхемной отладки и программирования ATMega169. К линиям JTAG может подключаться устройство для внутрисхемного программирования ATMega169. Заметим, что программирование через JTAG или ISP не требует наличия в памяти микроконтроллера начального загрузчика в отличие от программирования контроллера через UART. Универсальный последовательный интерфейс USI может работать в нескольких режимах – трехпроводном SPI или двухпроводном. Линия VBin – служит для подключения внешнего аналогового сигнала ко входу встроенного в микроконтроллер АЦП. Если какие-то интерфейсы (USI, ISP, JTAG) не используются, то их линии можно использовать для любого другого применения как обычные линии ввода-вывода.
¯ºĄ¯ÈääÒ¯ºmÈÓÒË$95%XWWHUIO\ °¹ºäºĉĊ8$57 Программирование модуля AVR Butterfly с помощью UART – это наиболее удобный способ программирования данного модуля. Для программирования требуется кабель программирования, схема которого приведена на рис. 2. ПК RS232 1 2 3 2 AVR Butterfly UART DB9F 3 5 cÒ°zÈ-Ëãĉ¹¯ºĄ¯ÈääÒ¯ºmÈÓÒ« Кроме того, необходима кнопка сброса, подключаемая к контактам 5 и 6 разъема ISP. При отсутствии кнопки, для рестарта микроконтроллера, эти контакты можно замыкать металлическим предметом (например отверткой, пинцетом). В современных персональных компьютерах часто отсутствует порт RS232. В этом случае необходимо иметь преобразователь USB-RS232, который подключается к разъему USB персонального компьютера и имитирует порт RS232. Алгоритм программирования AVR Butterfly при помощи UART: Подключить кабель программирования одним концом к разъему RS232 персонального компьютера, другим концом – к разъему UART AVR Butterfly. Удерживая джойстик в положении «Вниз», нажать кнопку сброса (или замкнуть контакты 5 и 6 разъема ISP) на долю секунды, чтобы произошёл сброс микроконтроллера. Отпустить джойстик. Начальный загрузчик готов принимать данные от персонального компьютера. Ввести из командной строки персонального компьютера команду вида: avrdude -p m169 -c butterfly -P port -b 19200 -F -U flash:w:program.hex