Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Микропроцессорные системы. Применение микроконтроллеров семейства AVR для управления внешними устройствами

Покупка
Основная коллекция
Артикул: 811519.02.99
Приведены практические примеры реализации различных вариантов подключения периферийного оборудования на примере микроконтроллеров семейства AVR и программного обеспечения для работы с этим оборудованием. Даны примеры реализации типовых задач. На примере микроконтроллеров семейства AVR подробно разобраны такие распространённые периферийные устройства, как порты ввода-вывода, таймеры-счётчики, последовательный интерфейс. Все примеры написаны на языках программирования C/C++. Для студентов и аспирантов, обучающихся по направлениям «Прикладная математика и информатика», «Информатика и вычислительная техника», «Информационные системы и технологии», «Прикладная информатика», «Программная инженерия», «Автоматизация технологических процессов и производств», «Мехатроника и робототехника». Может быть полезно школьникам, углублённо изучающим информатику, робототехнику и посещающим соответствующие кружки.
Сонькин, М. А. Микропроцессорные системы. Применение микроконтроллеров семейства AVR для управления внешними устройствами : учебное пособие / М. А. Сонькин, Д. М. Сонькин, А. А. Шамин. - Москва ; Вологда : Инфра-Инженерия, 2023. - 96 с. - ISBN 978-5-9729-1212-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/2095074 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

lkvºÓĉ}ÒÓilvºÓĉ}ÒÓ
kkbÈäÒÓ









ljzc|c|¡pvv|cshp
vjv‘plh



¯ÒäËÓËÓÒËäÒ}¯º}ºÓˆ¯ºãã˯º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