УДК 621.316.544.1Atmel
ББК 31.264
М80
М80
Мортон, Джон.
Микроконтроллеры AVR : вводный курс / Дж. Мортон ; пер. с англ.
А. В. Евстифеева. — 2-е изд., эл. — 1 файл pdf : 272 с. — Москва : ДМК Пресс,
Додэка-XXI, 2023. — (Мировая электроника). — Систем. требования: Adobe
Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-429-2
Данное издание представляет собой практическое руководство, с помощью которого
вы сможете изучить, а впоследствии и использовать микроконтроллеры AVR
компании Atmel.
Неважно, студент ли вы, собирающийся использовать микроконтроллер AVR в
своем проекте или же опытный разработчик встраиваемых систем, впервые столкнувшийся
с AVR, — если вам нужно быстро разобраться в этих популярных микроконтроллерах,
то эта книга для вас.
Для демонстрации различных возможностей AVR Джон Мортон использует простые
устройства и программы. В отличие от книг, в которых излагается голая теория
либо просто воспроизводится фирменная техническая документация, такой подход
(обучение в процессе использования) предлагает быстрое и интуитивное изучение
возможностей микроконтроллеров AVR.
В общей сложности, в книге рассмотрены 16 проектов, охватывающих все наиболее
популярные микроконтроллеры AVR, включая модели семейства Tiny.
Предназначена для разработчиков радиоэлектронной аппаратуры, инженеров,
студентов технических вузов и радиолюбителей.
УДК 621.316.544.1Atmel
ББК 31.264
Электронное издание на основе печатного издания: Микроконтроллеры AVR : вводный курс /
Дж. Мортон ; пер. с англ. А. В. Евстифеева. — Москва : ДМК Пресс, Додэка-XXI, 2015. —
272 с.— (Мировая электроника). — ISBN 978-5-97060-258-4. — Текст : непосредственный.
Все права защищены. Никакая часть этого издания не может быть воспроизведена в любой форме или
любыми средствами, электронными или механическими, включая фо& тографирование, ксерокопирование
или иные средства копирования или сохранения информации, без письменного разрешения издательства.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.
ISBN
978-5-89818-429-2
© John Morton
© Издательский дом «Додэка&XXI»
© Издание, ДМК Пресс, 2015
® Серия «Мировая электроника»
Стр.5
Оглавление
ОГЛАВЛЕНИЕ
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Глава 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Краткое замечание для пользователей PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Системы счисления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Сложение в двоичной системе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Отрицательные числа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8битный RISC FLASHмикроконтроллер? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Первые шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Выбор модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Блоксхема алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Написание программы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Ассемблирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Регистры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Команды. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Шаблон программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
— 5 —
Стр.6
Оглавление
Глава 2. Основные операции в АТ90S1200 и TINY12 . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Программа A. Светодиод (LEDon) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
AVR Studio — трансляция с языка ассемблера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Проверка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
AVR Studio — симуляция. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Эмуляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Аппаратное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
AVR Studio — программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Конфигурационные ячейки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Программы B и C. Кнопка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Семисегментные индикаторы и косвенная адресация. . . . . . . . . . . . . . . . . . . . . . . . 49
Программы D и E. Счетчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Формирование временных интервалов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Программа F. Бегущий огонек. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Формирование временных интервалов без таймера? . . . . . . . . . . . . . . . . . . . . . . . . . 69
Счетчик команд и подпрограммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Программа G. Счетчик (версия 3.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Программа H. Светофор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Логические элементы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Программа I. Симулятор логических элементов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
SREG — регистр состояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Сторожевой таймер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Спящий режим . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Остальные команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Программа J. Частотомер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Глава 3. Знакомство с остальными моделями семейства . . . . . . . . . . . . . . . . . . . . . . .111
Глава 4. Дополнительные возможности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Прерывания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Программа K. Измеритель скорости реакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Случайное распределение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Аналоговый компаратор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Программа L. 4битный аналогоцифровой преобразователь . . . . . . . . . . . . . . . . . . . . . 129
Аналогоцифровой преобразователь (АЦП) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Программа M. Инвертор напряжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Таймер/счетчик 1 (16битный). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Функция захвата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Функция сравнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Главная программа N. Музыкальный автомат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Глава 5. Продвинутые возможности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
ШИМ — широтноимпульсная модуляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Программа O. Конвертер клавиатуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
— 6 —
Стр.7
Оглавление
Последовательный интерфейс SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Нестандартный Таймер 1 модели Tiny15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Сокращение объема кода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Обзор семейства Mega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Заключительная программа P. Робот, управляемый компьютером. . . . . . . . . . . . . . . . . 172
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Приложение A. Основные параметры некоторых моделей AVR. . . . . . . . . . . . . . . . . . 180
Приложение B. Цоколевка некоторых моделей AVR . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Приложение C. Обзор системы команд. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Приложение D. Справочник команд . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Приложение E. Таблица векторов прерываний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Приложение F. Преобразование шестнадцатеричных чисел . . . . . . . . . . . . . . . . . . . . 197
Приложение G. Таблица кодов символов ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Приложение H. Если ничего не получается, прочтите это . . . . . . . . . . . . . . . . . . . . . . 199
Приложение I. Контактная информация и дополнительная литература. . . . . . . . . . . 200
Приложение J. Полные тексты учебных программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Ответы к упражнениям. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Предметный указатель. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Предметный указатель. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
— 7 —
Стр.8