Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование микроконтроллеров AVR. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
МИНОБРНАУКИ РОССИИ
————————————
Федеральное государственное автономное
образовательное учреждение высшего образования
«Омский государственный технический университет»
А. Ю. Власов, В. И. Горбунков
ПРОГРАММИРОВАНИЕ
МИКРОКОНТРОЛЛЕРОВ AVR
Учебное текстовое электронное издание
локального распространения
Рекомендовано редакционно-издательским советом
Омского государственного технического университета
Омск
Издательство ОмГТУ
2023
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Сведения об издании: 1, 2 © ОмГТУ, 2023 ISBN 978-5-8149-3741-4
УДК 004.42:004.3(075) ББК 32:973+32.844я73
В58
Рецензенты:
В. К. Федоров, д-р техн. наук, профессор кафедры «Электроснабжение»
Омского экономико-энергетического института;
М. Ю. Николаев, канд. техн. наук, инженер по метрологии I категории
Омского филиала ООО «КВАРЦ Групп»
Власов, А. Ю. Программирование микроконтроллеров AVR : учеб. пособие / А. Ю. Власов, В. И. Горбунков ; Минобрнауки России, Ом. гос. техн. ун-т. – Омск : Изд-во ОмГТУ, 2023. – 1 CD-ROM (1,93 Мб). – Систем. требования: процессор с час­тотой 800 МГц и выше ; 128 Мб RAM и более ; свободное место на жестком диске 300 Мб и более ; Linu x / Windows XP и выше ; MacOS X 10.4 и выше ; CD/DVD-ROM­дисковод ; ПО для просмотра pdf-файлов. – Загл. с титул. экрана. – ISBN 978-5-8149-
3741-4.
Представлены краткие сведения о структуре и составе микроконтроллеров AVR, о программировании их на языке С в интегрированной среде Code Vision AVR, необ­ходимые при изучении дисциплины «Программирование микроконтроллеров». При­ведены фрагменты программ для измерения напряжений, токов, мощностей и других неэлектрических величин.
Учебное пособие предназначено для студентов очной и заочной форм обучения направлений 13.04.02 и 13.03.02 «Электроэнергетика и электротехника».
Редактор Т. А. Москвитина
Компьютерная верстка Е. В. Макарениной
Для дизайна этикетки использованы материалы
из открытых интернет-источников
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Сводный темплан 2023 г. © ОмГТУ, 2023 Подписано к использованию 04.12.2023. Объем 1,93 Мб.
2
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ ................................................................................................. 5
1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR
СЕМЕЙСТВА MEGA ..................................................................................... 6
1.1. Регистры микроконтроллера ................................................................ 10
1.2. Порты ввода/вывода .............................................................................. 11
1.3. Периферийные устройства ................................................................... 13
1.3.1. Таймеры/счетчики ....................................................................... 14
1.3.2. Аналого-цифровой преобразователь ......................................... 22
2. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ С.............................................................. 29
2.1. Вводные понятия в языке С .................................................................. 29
2.2. Правила приведения типов компилятора Code Vision AVR ............. 32
2.3. Структура программы на языке С ....................................................... 39
3. СОЗДАНИЕ ПРОЕКТА С ИСПОЛЬЗОВАНИЕМ
МАСТЕРА-ПОСТРОИТЕЛЯ ....................................................................... 44
3.1. Выбор общих параметров проекта ...................................................... 45
3.1.1. Настройка портов ........................................................................ 47
3.1.2. Настройка таймеров .................................................................... 49
3.1.3. Настройка параметров АЦП ...................................................... 51
3.1.4. Настройка параметров ЖКИ ...................................................... 52
3.2. Генерации программы ........................................................................... 53
4. ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ AVR
ПРИ РАЗРАБОТКЕ ИЗМЕРИТЕЛЬНЫХ СИСТЕМ ................................ 56
4.1. Подготовка программы для измерения постоянного
напряжения ............................................................................................ 56
4.2. Подготовка программы для измерения постоянного тока ................ 63
3
4.3. Подготовка программы для измерения мощности
при постоянном токе ............................................................................. 70
4.4. Подготовка программы для измерения переменного
напряжения ............................................................................................ 76
4.5. Подготовка программы для измерения переменного тока ............... 83
4.6. Подготовка программы для измерения активной мощности ........... 90
4.7. Подготовка программы для измерения скорости вращения ............ 98
4.8. Подготовка программы для измерения температуры ..................... 105
ЗАКЛЮЧЕНИЕ ............................................................................................... 111
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ........................................................... 112
4

ПРЕДИСЛОВИЕ

Учебное пособие «Программирование микроконтроллеров AVR» со-
держит теоретический и практический материал для разработки и отладки программного обеспечения на 8-разрядных микроконтроллерах архитек­туры AVR серии ATmega. Микроконтроллеры этого семейства в настоя­щее время являются самыми распространенными и удобными для изуче­ния и начального освоения, поскольку имеют развитое программное обес­печение, но еще большей популярностью среди разработчиков интеллек­туальных устройств пользуется язык программирования С.
В первой главе рассмотрена структура построения микроконтролле-
ров AVR семейства Mega, отмечены достоинства RISC-архитектуры, поз­воляющей достичь лучших показателей по быстродействию среди микро­контроллеров подобного класса, и дана краткая характеристика аппарат­ной части этих устройств.
Во второй главе представлены краткие сведения о языке С в том объ-
еме, который необходим в предлагаемом материале для практического изучения в дисциплине «Применение микроконтроллеров».
В третьей главе описана подробная инструкция по созданию проек-
тов, практическая реализация которой приводит к созданию шаблонов программ.
В четвертой главе даны примеры разработок, включающие расчет
и построение аппаратной части измерительных устройств, создание про­граммного обеспечения к ним.
Проверка работоспособности разрабатываемых устройств и точности
измерений производится при симуляции программ в программной среде PROTEUS. Образцы Design-схем, используемых при симуляции для каж­дого примера разработок, даны в учебном пособии.
5

1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR СЕМЕЙСТВА MEGA

Как и все микроконтроллеры AVR фирмы Atmel, микроконтроллеры
семейства Mega являются 8-разрядными цифровыми микросхемами, пред­назначенными для встраиваемых приложений. Они изготавливаются по микромощной КМОП-технологии, которая наряду с усовершенствованной RISC-архитектурой позволяет достичь наилучшего соотношения показа­телей быстродействия и энергопотребления. Микроконтроллеры описыва­емого семейства являются наиболее развитыми представителями подобно­го класса микроконтроллеров.
Структурная схема микроконтроллера AVR семейства Mega приведе-
на на рис. 1.1.
Рис. 1.1. Структурная схема микроконтроллера AVR семейства Mega
6
В микроконтроллерах AVR реализована Гарвардская архитектура, характеризующаяся раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа. Такая организация позво­ляет одновременно работать как с памятью программ, так и с памятью данных.
Разделение информационных шин дает возможность использовать для каждого типа памяти шины различной разрядности, причем способы ад­ресации и доступа к каждому типу памяти также различаются, это позво­ляет центральному процессору работать одновременно как с памятью про­грамм, так и с памятью данных, что существенно увеличивает его произ­водительность. Команды в памяти программ выполняются по принципу одноуровневого конвейера: пока одна команда выполняется, следующая считывается из памяти программ.
Ядра микроконтроллеров AVR семейства Mega, как и ядра семейств Classic или Tiny, изготовлены по RISC-архитектуре. Такая архитектура позволяет достичь производительности примерно в 1 MIPS (MIPS – Millions Instructions per Second – миллион операций в секунду) на каждый мегагерц тактовой частоты.
Арифметико-логическое устройство (АЛУ), выполняющее все ариф­метические и логические операции, подключено непосредственно к 32 ра­бочим регистрам, объединенным в регистровый файл. Благодаря этому АЛУ выполняет одну операцию, к которой относится либо чтение содер­жимого регистров, либо запись результата обратно в регистровый файл, только за один машинный цикл. При этом каждая из команд занимает лишь одну ячейку памяти программ.
В программах, написанных на языке С, непосредственное обращение к регистрам общего назначения обычно не требуется, если только не ис­пользуются фрагменты на языке ассемблера.
Структурная схема центрального процессора микроконтроллера AVR приведена на рис. 1.2.
7
Рис. 1.2. Структурная схема центрального процессора
микроконтроллера AVR
Оперативная память данных SRAM микроконтроллеров AVR пред-
назначена для хранения тех данных, которые не помещаются в рабочих регистрах, а также для организации программного стека. Стек – это осо­бая область памяти данных, используемая процессором для временного хранения адресов возврата из подпрограмм, промежуточных результатов вычислений и др. Для микроконтроллеров AVR компиляторы языка С (например, при обращении к подпрограммам) могут программно созда-
8
вать один или более стеков, начиная с верхних адресов области SRAM. Стек действует по принципу LIFO – «Last in, First Out», что означает «по­следним вошел, первым вышел». Это означает, что новые данные вначале помещаются на вершину (первый уровень) стека, а затем, с поступлением следующих данных, «проталкиваются» на его нижние уровни. Извлечение из стека происходит в обратном порядке: вначале считываются данные, помещенные последними на вершину, после чего данные, размещенные на нижних уровнях, «выталкиваются» на один уровень вверх. Ячейка па­мяти, которая является в данный момент вершиной стека, адресуется ука­зателем стека.
Поскольку область памяти данных, отводимая для программного сте­ка, ограничивается только объемом памяти данных SRAM, то при написа­нии программ следует следить за тем, чтобы стек не становился слишком большим, затирая полезные данные.
Flash-память программ является энергонезависимой, то есть сохра­няет записанную в нее информацию даже после отключения питания мик­роконтроллера. Несмотря на то, что память этого типа – программируе­мая, для записи в нее используются только внешние аппаратные средства, поэтому с точки зрения программиста можно сказать, что память про­грамм доступна только для чтения. Адресация команд в памяти программ реализуется с помощью специального регистра – счетчика команд, раз­рядность которого определяет допустимый размер этой памяти. Разряд­ность ячеек памяти программ в зависимости от типа микроконтроллера может составлять 14–16 бит.
Многие микроконтроллеры AVR оборудованы встроенной памятью EEPROM – электрически перезаписываемой энергонезависимой памятью. EEPROM организована как отдельная область данных, каждый байт кото­рой может быть прочитан и при необходимости перезаписан. Хотя эта па­мять и допускает запись, она редко используется для хранения програм-
9
мных переменных, поскольку, во-первых, медленнодействующая, во-вто­рых, имеет ограниченный (хотя и довольно большой) цикл перезаписи. Учитывая вышесказанное, память EEPROM используют преимущественно для хранения данных, которые не должны быть потеряны даже при от­ключении питания. Это очень удобно, к примеру, при калибровке измери­тельных приборов, работающих под управлением микроконтроллеров, у которых в памяти EEPROM в процессе настройки сохраняются парамет­ры корректировки и калибровочные коэффициенты.
В отличие от Flash-памяти программ, для записи/чтения памяти EEPROM нет необходимости в специальном программаторе – эти опера­ции доступны из программы и допускают побайтную передачу данных с помощью регистров. Кроме того, данные в эту память можно занести с помощью аппаратного программатора на этапе изготовления устройства.
Разрабатываемая программа взаимодействует с микроконтроллером, считывая и записывая значения (двоичные коды) необходимых регистров микроконтроллера.

1.1. РЕГИСТРЫ МИКРОКОНТРОЛЛЕРА

Регистр микроконтроллера AVR – это набор из восьми ячеек по одно­му биту (бит – элементарное количество информации, которое может при­нимать значение 1 или 0), т. е. размер регистра равен одному байту.
Структура регистра:
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
В эту структуру записывается двоичное 8-разрядное число, при этом Bit7 является старшим разрядом этого числа, а Bit0 – младшим.
В микроконтроллерах AVR существует 32 регистра общего назначе­ния, каждый из которых имеет индивидуальный адрес и наименование,
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]