Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
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 (дата обращения: 27.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
М. А. Сонькин, Д. М. Сонькин, А. А. Шамин








МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ



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















Москва Вологда «Инфра-Инженерия» 2023

УДК 004.42
ББК 32.973
С62

Рецензенты:
зам. директора по развитию ИШИТР ТПУ, к. т. н., доцент, доцент ОИТ ИШИТР ТПУ Дёмин Антон Юрьевич;
к. т. н., доцент ОИТ ИШИТР ТПУ Погребной Александр Владимирович




     Сонькин, М. А.
С62      Микропроцессорные системы. Применение микроконтроллеров семейства
     AVR для управления внешними устройствами / М. А. Сонькин, Д. М. Сонькин, А. А. Шамин. - Москва ; Вологда : Инфра-Инженерия, 2023. - 96 с. : ил., табл.
          ISBN 978-5-9729-1212-4

          Приведены практические примеры реализации различных вариантов подключения периферийного оборудования на примере микроконтроллеров семейства AVR и программного обеспечения для работы с этим оборудованием. Даны примеры реализации типовых задач. На примере микроконтроллеров семейства AVR подробно разобраны такие распространённые периферийные устройства, как порты ввода-вывода, таймеры-счётчики, последовательный интерфейс. Все примеры написаны на языках программирования C/C++.
          Для студентов и аспирантов, обучающихся по направлениям «Прикладная математика и информатика», «Информатика и вычислительная техника», «Информационные системы и технологии», «Прикладная информатика», «Программная инженерия», «Автоматизация технологических процессов и производств», «Мехатроника и робототехника». Может быть полезно школьникам, углублённо изучающим информатику, робототехнику и посещающим соответствующие кружки.

УДК 004.42
ББК 32.973









ISBN 978-5-9729-1212-4

     © Сонькин М. А., Сонькин Д. М., Шамин А. А., 2023
     © Издательство «Инфра-Инженерия», 2023
                             © Оформление. Издательство «Инфра-Инженерия», 2023

ОГЛАВЛЕНИЕ

Введение...............................................................5

1. Микропроцессорный модуль AVR Butterfly..............................6
2.  Структурная схема модуля AVR Butterfly.............................7
3.  Программирование AVR Butterfly с помощью UART.....................10
4.  АрхитектурамикроконтроллераАТМе§а169..............................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. Исходные тексты программного модуля калибровки (os_calibrate.cpp, os_calibrate.h)....................................60
Приложение Б. Исходные тексты программного драйвера пула программных таймеров (cSoftTimers.cpp, cSoftTimers.h).................63


3

Приложение В. Исходные тексты программной реализации циклических буферов (CycloBuf.h и CycloBuf.cpp).............................69
Приложение Г. Исходные тексты программной реализации драйвера UART (cUSART.h и cUSART.cpp).....................................................73
Приложение Д. Исходные тексты программной реализации драйвера ЖКИ-дисплея (LCD_driver.h и LCD_driver.cpp)........................79
Приложение Е. Исходные тексты программной реализации драйвера джойстика (JOY_driver.h и JOY_driver.cpp).............................................87

                ВВЕДЕНИЕ




    В любом реальном микропроцессорном устройстве (МПУ) микроконтроллер каким-либо образом взаимодействует с окружающим миром. Например, микроконтроллеру часто необходимо считывать состояние кнопок (нажата кнопка или нет), управлять светодиодными индикаторами или дисплеем, считывать напряжение с аналогового датчика, отсчитывать временные интервалы и многое другое.
    В настоящем пособии показано, как реализовать простейшую поддержку ввода электрических сигналов на примере кнопок джойстика, как отсчитывать время с помощью встроенных таймеров и как выводить символы на ЖКИ-индикатор.
    Приведённые примеры реализованы в виде библиотек и драйверов устройств, которые могут быть полезны на практике. Исходный текст этих библиотек и драйверов приведён в приложении.
    Спектр внешних устройств, которые могут взаимодействовать с микроконтроллером, практически не ограничен. Поэтому в пособии обзорно рассмотрены общие подходы, а более подробные рекомендации по работе с тем или иным устройством следует искать в специальной литературе, ссылки на которую приведены в тексте по мере необходимости.
    Практические примеры, приведённые в пособии, рассчитаны на использование микроконтроллеров семейства AVR на примере микросхемы ATMegal69 и микропроцессорного модуля AVR Butterfly.
    Приведённые примеры программных решений могут использоваться на других микроконтроллерах семейства AVR с минимальными изменениями. Все примеры реализованы на языках программирования C/C++. Несмотря на то, что в примерах используется отладочная плата (модуль) AVR Butterfly, все примеры переносимы и на другие микроконтроллеры семейства AVR, имеющие аналогичные периферийные устройства.

5

                1.  Микропроцессорный модуль AVR Butterfly




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

6

                2. Структурная схема модуля AVR Butterfly





    Структурная схема модуля AVR Butterfly приведена на рис. 1. На схеме не показаны некоторые элементы, такие как батарея питания, преобразователи уровня RS232.
    Центральным элементом модуля AVR Butterfly является микроконтроллер ATMegal69, осуществляющий управление всеми остальными элементами схемы.
    ЖКИ-дисплей служит для вывода информации пользователю. Микроконтроллер ATMegal69 имеет встроенную схему управления ЖКИ-дисплеями, к которой и подключается этот дисплей. Более подробно, вопросы подключения и программирования дисплея описаны в соответствующем разделе ниже.


Рис. 1. Структурная схема модуля AVR Butterfly

    Джойстик служит для ввода информации пользователем и представляет собой с точки зрения схемотехники пять переключателей типа

7

«сухой контакт», подключенных к 5 линиям ввода микроконтроллера ATMegal69. Соответствие положения джойстика и линий ввода микроконтроллера приведено в табл. 1. Заметим, что контакты джойстика подключены к двум разным портам микроконтроллера ATMegal69, поэтому, чтобы узнать состояние всех контактов джойстика необходимо опросить два порта - порт В и порт Е.
    Акустический излучатель Д1 предназначен для воспроизведения звука. Управляется излучатель при помощи 5-й линии порта В. Данная линия может использоваться как выход широтно-импульсного модулятора - ШИМ, поэтому воспроизведение звука практически не требует временных ресурсов процессорного ядра.


Таблица 1

Соответствие контактов джойстика и линий ввода ATMegal69

№ Контакт            Порт  Номер бита порта
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, V_in выведена на внешние разъемы, расположенные по краям платы модуля AVR Butterfly. Эти разъемы служат для подключения внешних устройств. Заметим, что некоторые линии данных внешних разъемов одновременно подключены к устройствам, установленным на плате модуля AVR Butterfly и это необходимо учитывать при подключении внешних устройств.

8

    К линиям JTAG может подключаться устройство для внутрисхемной отладки и программирования ATMegal69. К линиям JTAG может подключаться устройство для внутрисхемного программирования ATMegal69. Заметим, что программирование через JTAG или ISP не требует наличия в памяти микроконтроллера начального загрузчика в отличие от программирования контроллера через UART.
    Универсальный последовательный интерфейс USI может работать в нескольких режимах - трехпроводном SPI или двухпроводном.
    Линия V_in - служит для подключения внешнего аналогового сигнала ко входу встроенного в микроконтроллер АЦП.
    Если какие-то интерфейсы (USI, ISP, JTAG) не используются, то их линии можно использовать для любого другого применения как обычные линии ввода-вывода.

                3. Программирование AVR Butterfly с помощью UART




   Программирование модуля AVR Butterfly с помощью UART - это наиболее удобный способ программирования данного модуля. Для программирования требуется кабель программирования, схема которого приведена на рис. 2.


ПК RS232

AVR Butterfly UART

Рис. 2. Кабель программирования

    Кроме того, необходима кнопка сброса, подключаемая к контактам 5 и 6 разъема ISP. При отсутствии кнопки, для рестарта микроконтроллера, эти контакты можно замыкать металлическим предметом (например отверткой, пинцетом).
    В современных персональных компьютерах часто отсутствует порт RS232. В этом случае необходимо иметь преобразователь USB-RS232, который подключается к разъему USB персонального компьютера и имитирует порт RS232.
    Алгоритм программирования AVR Butterfly при помощи UART:
    Подключить кабель программирования одним концом к разъему RS232 персонального компьютера, другим концом - к разъему UART AVR Butterfly.
    Удерживая джойстик в положении «Вниз», нажать кнопку сброса (или замкнуть контакты 5и6 разъема ISP) на долю секунды, чтобы произошёл сброс микроконтроллера.
    Отпустить джойстик.
    Начальный загрузчик готов принимать данные от персонального компьютера.
    Ввести из командной строки персонального компьютера команду вида:

# avrdude -р ml69 -с butterfly -Pport-b 19200 -F -U flashrw:program.hex

10

где:
      • вместо port подставляем имя порта RS232 к которому подключен модуль AVR Butterfly (СОМ1, COM2 и т. п. для ОС Windows или /dev/ttySO, /dev/ttyUSBO и т. п. для ОС Linux);
      • вместо program.hex подставляем имя программного файла в формате hex.
    Если все сделано правильно - то должен запустится процесс программирования микроконтроллера. При возникновении ошибок сообщение о них будет выведено в терминал персонального компьютера.
    Заметим, что если по ошибке будет стёрт начальный загрузчик, то дальнейшее программирование посредством UART станет невозможным до тех пор, пока начальный загрузчик не будет установлен вновь. Это можно сделать при помощи программаторов по интерфейсу ISP с помощью программы avrdude или по интерфейсу JTAG.

                4. Архитектура микроконтроллера ATMega169





    Микроконтроллер ATMegal69 (рис. 3) имеет стандартную архитектуру микроконтроллеров серии AVR, выпускаемых фирмой Atmel.
    В настоящем издании приводится ознакомительное описание архитектуры микроконтроллера семейства AVR. Более подробное описание можно получить в специальной литературе [1, 2, 3, 10].


Рис. 3. Архитектура микроконтроллера АТМеда169

12