Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование микроконтроллеров AVR. Учебное пособие.pdf
X
- •ПРЕДИСЛОВИЕ
- •1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ AVR СЕМЕЙСТВА MEGA
- •1.1. Регистры микроконтроллера
- •1.2. Порты ввода/вывода
- •1.3. Периферийные устройства
- •1.3.1. Таймеры/счетчики
- •1.3.2. Аналого-цифровой преобразователь
- •2. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ С
- •2.1. Вводные понятия в языке С
- •2.2. Правила приведения типов компилятора Code Vision AVR
- •2.3. Структура программы на языке С
- •3. СОЗДАНИЕ ПРОЕКТА С ИСПОЛЬЗОВАНИЕМ МАСТЕРА-ПОСТРОИТЕЛЯ
- •3.1. Выбор общих параметров проекта
- •3.1.1. Настройка портов
- •3.1.2. Настройка таймеров
- •3.1.3. Настройка параметров АЦП
- •3.1.4. Настройка параметров ЖКИ
- •3.2. Генерации программы
- •4. ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ AVR ПРИ РАЗРАБОТКЕ ИЗМЕРИТЕЛЬНЫХ СИСТЕМ
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

МИНОБРНАУКИ РОССИИ
————————————
Федеральное государственное автономное
образовательное учреждение высшего образования
«Омский государственный технический университет»
А. Ю. Власов, В. И. Горбунков
ПРОГРАММИРОВАНИЕ
МИКРОКОНТРОЛЛЕРОВ 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
