Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Микропроцессорные системы. Применение микроконтроллеров семейства AVR для управления внешними устройствами
.pdf
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
М.А. Сонькин, Д.М. Сонькин, А.А. Шамин
МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ
ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА AVR
ДЛЯ УПРАВЛЕНИЯ ВНЕШНИМИ УСТРОЙСТВАМИ
Рекомендовано в качестве учебного пособия
Редакционно-издательским советом
Томского политехнического университета
Издательство
Томского политехнического университета
2016
1

УДК 004.315(075.8)
ББК 32.971.32-04я73
C62
Сонькин М.А.
C62 Микропроцессорные системы. Применение микроконтрол-
леров семейства AV R для управления внешними устройствами /
М.А. Сонькин, Д.М. Сонькин, А.А. Шамин ; Том ский политехнический университет. – Томск : Изд-во Томского политехнического
университета, 2016. – 88 с.
ISBN 978-5-4387-0708-0
В пособии изложены основы практического использования микроконтроллеров семейства AV R . Приведены примеры некоторых программных
и аппаратных решений с целью их использования в практической работе по
выполнению лабораторных работ, курсового и дипломного проектов.
Содержит теоретический и практический материал, достаточный для
самостоятельного изучения и приобретения компетенций в соответствии с
ФГОС высшего образования третьего поколения студентами, магистрантами
и аспирантами по направлениям 090301 «Информатика и вычислительная
техника», 051311 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 051301 «Системный
анализ, управление и обработка информации».
УДК 004.315(075.8)
ББК 32.971.32-04я73
Рецензенты
Доктор физико-математических наук, профессор
заведующий кафедрами системного анализа и управления
и теоретической кибернетики ТГУ
Ю.Г. Дмитриев
Доктор технических наук, профессор
заведующий кафедрой автоматизированных
систем управления ТУСУРа
А.М. Кориков
ISBN 978-5-4387-0708-0 © ФГАОУ ВО НИ ТПУ, 2016
© Сонькин М.А., Сонькин Д.М., Шамин А.А., 2016
© Оформление. Издательство Томского
политехнического университета, 2016
2

3
Содержание
Введение ............................................................................................................................. 5
1. Микропроцессорный модуль AVR Butterfly ............................................................ 6
2. Программирование AVR Butterfly с помощью UART ........................................... 9
3. Архитектура микроконтроллера ATMega169 ....................................................... 11
4. Порты ввода-вывода общего назначения .............................................................. 17
4.1. Пример настройки порта ввода-вывода .............................................................. 20
4.2. Пример работы с портом ввода-вывода в режиме ввода ................................... 21
4.3. Пример работы с портом ввода-вывода в режиме вывода ................................. 23
4.4. Прерывания портов ввода-вывода ....................................................................... 25
5. Таймеры-счетчики ..................................................................................................... 29
5.1. Таймер-счетчик в режиме отсчета временных интервалов ............................... 32
5.2. Таймер-счетчик в режиме счета импульсов ........................................................ 36
5.3. Таймер-счетчик в режиме ШИМ ......................................................................... 36
6. Последовательный интерфейс UART ..................................................................... 40
7. Проектирование программы для микроконтроллера ........................................ 44
7.1. Общая структура программы ............................................................................... 44
7.2. Секция инициализации ......................................................................................... 45
7.3. Основной цикл ....................................................................................................... 46
7.4. Обработка прерываний ......................................................................................... 47
7.5. Драйвера устройств ............................................................................................... 47
8. Программирование модуля AVR Butterfly ............................................................. 48
8.1. Таймеры .................................................................................................................. 48
8.1.1. Аппаратные таймеры ..................................................................................... 48
8.1.2. Программные таймеры .................................................................................. 48
8.1.3. Драйвер пула программных таймеров .......................................................... 48
8.2. Циклические буфера ............................................................................................. 50
8.3. Универсальный асинхронный приемопередатчик UART .................................. 51
8.3.1. Аппаратные средства UART .......................................................................... 52
8.3.2. Драйвер UART ................................................................................................ 52
8.4. Дисплей .................................................................................................................. 53
8.5. Джойстик ................................................................................................................ 54

4
Список литературы ........................................................................................................ 56
Приложение A. Исходные тексты программного модуля калибровки
(os_calibrate.cpp, os_calibrate.h) .................................................................................... 57
Приложение Б. Исходные тексты программного драйвера пула
программных таймеров (cSoftTimers.cpp, cSoftTimers.h) ...................................... 59
Приложение В. Исходные тексты программной реализации
циклических буферов (CycloBuf.h и CycloBuf.cpp) ................................................. 65
Приложение Г. Исходные тексты программной реализации
драйвера UART (cUSART.h и cUSART.cpp) .............................................................. 68
Приложение Д. Исходные тексты программной реализации
драйвера ЖКИ-дисплея (LCD_driver.h и LCD_driver.cpp) .................................... 74
Приложение Е. Исходные тексты программной реализации
драйвера джойстика (JOY_driver.h и JOY_driver.cpp) ............................................ 82

5
Введение
Курс «Микропроцессорные системы» предусматривает освоение
студентами современных аппаратных и программных средств разработ-
ки устройств и систем на базе микропроцессорного управления.
В настоящем пособии приведены примеры практического использования микроконтроллеров семейства AVR на примере микросхемы
ATMega169 и микропроцессорного модуля AVR Butterfly. Приведенные
примеры программных решений могут использоваться на других мик-
роконтроллерах семейства AVR с минимальными изменениями.

6
1. Микропроцессорный модуль AVR Butterfly
Микропроцессорные модули AVR Butterfly построены на базе
микроконтроллера ATMega169 с ядром AVR [1–3]. В состав модуля AVR
Butterfly входят следующие аппаратные компоненты:
микроконтроллер Atmeg169;
6-символьный ЖКИ;
память DataFlash объемом 4 Мбит, подключенная к микропро-
цессору по интерфейсу SPI;
кварцевый резонатор с частотой 32 кГц для обеспечения работы
часов реального времени;
джойстик для ввода информации;
датчик температуры;
акустический излучатель;
RS-232 преобразователь уровней для обеспечения обмена дан-
ными с внешними устройствами;
элемент питания, служащий для автономной работы модуля.
Кроме того, модуль AVR Butterfly имеет возможность подключе-
ния внешних устройств, контакты которых выведены на разъем с края
платы.
Встроенное программное обеспечение модуля AVR Butterfly со-
держит начальный загрузчик, позволяющий изменять содержимое памя-
ти программ микроконтроллера ATMega169 по интерфейсу RS232.
С помощью внешних интерфейсов модули могут быть объединены
в распределенную микропроцессорную систему или подключены к дру-
гим микропроцессорным устройствам.
Структурная схема модуля AVR Butterfly
Структурная схема модуля AVR Butterfly приведена на рис. 1.
На схеме не показаны некоторые элементы, такие как батарея питания,
преобразователи уровня RS232.
Центральным элементом модуля AVR Butterfly является микро-
контроллер ATMega169, осуществляющий управление всеми остальны-
ми элементами схемы.
ЖКИ-дисплей служит для вывода информации пользователю.
Микроконтроллер ATMega169 имеет встроенную схему управления
ЖКИ-дисплеями, к которой и подключается этот дисплей. Более по-
дробно вопросы подключения и программирования дисплея описаны в
соответствующем разделе ниже.

7
Рис. 1. Структурная схема модуля AVR Butterfly
Джойстик служит для ввода информации пользователем и пред-
ставляет собой с точки зрения схемотехники пять переключателей типа
«сухой контакт», подключенных к 5 линиям ввода микроконтроллера
ATMega169. Соответствие положения джойстика и линий ввода микроконтроллера приведено в табл. 1. Заметим, что контакты джойстика подключены к двум разным портам микроконтроллера ATMega169, поэтому, чтобы узнать состояние всех контактов джойстика, необходимо
опросить два порта – порт B и порт E.
Таблица 1
Соответствие контактов джойстика и линий ввода ATMega169
№
Контакт
Порт
Номер бита порта
1
Вверх
POTRB
PINB6
2
Вниз
POTRB
PINB7
3
Влево
POTRE
PINE2
4
Вправо
POTRE
PINE3
5
Центральная кнопка
POTRB
PINB4

8
Акустический излучатель Д1 предназначен для воспроизведения
звука. Управляется излучатель при помощи 5-й линии порта В. Данная
линия может использоваться как выход ШИМ, поэтому воспроизведение
звука практически не требует временных ресурсов процессорного ядра.
Внешняя энергонезависимая память DataFlash объемом 4 Мбит
(512 Кбайт) подключена к микроконтроллеру ATMega169 по интерфейсу SPI и служит для хранения значительных объемов данных.
Встроенный датчик температуры (обозначен Т на рис. 1) пред-
ставляет собой терморезистор, подключенный к линии встроенного в
ATMega169 АЦП.
Кварцевый резонатор на 32 768 Гц служит для калибровки такто-
вого генератора микроконтроллера при его запуске и для отсчета реаль-
ного времени в процессе выполнения программы.
Часть линий микроконтроллера, обозначенных на рис. 1 как JTAG,
PORTB, PORTD, UART, USI, ISP, V_in, выведена на внешние разъемы,
расположенные по краям платы модуля AVR Butterfly. Эти разъемы
служат для подключения внешних устройств. Заметим, что некоторые
линии данных внешних разъемов одновременно подключены к устройствам, установленным на плате модуля AV R Butterfly, и это необходимо
учитывать при подключении внешних устройств.
К линиям JTAG может подключаться устройство для внутрис-
хемной отладки и программирования ATMega169. К линиям JTAG может подключаться устройство для внутрисхемного программирования
ATMega169. Заметим, что программирование через JTAG или ISP не
требует наличия в памяти микроконтроллера начального загрузчика в
отличие от программирования контроллера через UART.
Универсальный последовательный интерфейс USI может работать
в нескольких режимах – трехпроводном SPI или двухпроводном.
Линия V_in служит для подключения внешнего аналогового сигнала к входу встроенного в микроконтроллер АЦП.
Если какие-то интерфейсы (USI, ISP, JTAG) не используются, то
их линии можно использовать для любого другого применения как
обычные линии ввода-вывода.

9
3. Программирование AVR Butterfly с помощью UART
Программирование модуля AVR Butterfly с помощью UART – это
наиболее удобный способ программирования данного модуля. Для программирования требуется кабель программирования, схема которого
приведена на рис. 2.
Рис. 2. Кабель программирования
Кроме того, необходима кнопка сброса, подключаемая к контактам
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
где
вместо port подставляем имя порта RS232, к которому подключен
модуль AVR Butterfly (COM1, COM2 и т. п. для ОС Windows или
/dev/ttyS0, /dev/ttyUSB0 и т. п. для ОС Linux);
вместо program.hex подставляем имя программного файла в формате hex.
DB9F
2
3
5
1
2
3
ПК RS232
AVR Butterfly
UART

10
Если все сделано правильно, то должен запуститься процесс про-
граммирования микроконтроллера. При возникновении ошибок сооб-
щение о них будет выведено в терминал персонального компьютера.
Заметим, что если по ошибке будет стерт начальный загрузчик,
то дальнейшее программирование посредством UART станет невозмож-
ным до тех пор, пока начальный загрузчик не будет установлен вновь.
Это можно сделать при помощи программаторов по интерфейсу ISP или
JTAG.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
