Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микроконтроллеры. Управление цифровыми портами AVR. Методические указания к лабораторным и практическим занятиям

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
577 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Северо-Кавказский филиал ордена Трудового Красного Знамени федерального государственного

бюджетного образовательного учреждения высшего образования "Московский технический университет связи и информатики"

________________________________________________________________________________________

Методические указания к лабораторным и практическим занятиям

МИКРОКОНТРОЛЛЕРЫ

Управление цифровыми портами AVR

Ростов-на-Дону

2024

2

УДК 681.3.06 (076) ББК 32.07

Чикалов А.Н. Микроконтроллеры. Управление цифровыми портами AVR. Методические указания к лабораторным и практическим занятиям. Ростов- на-Дону: Северо-Кавказский филиал МТУСИ, 2024.- 29 с.

В пособии изложены методические рекомендации, содержательные материалы и контрольные задания для проведения лабораторных и практических занятий по изучению приемов и методов программирования портов микроконтроллеров семейства AVR. В качестве инструмента использована среда разработки ARDUINO Пособие содержит необходимые справочные материалы.

Методические указания предназначены для студентов, обучающихся по направлениям подготовки 09.03.01 Информатика и вычислительная техника и 11.03.02 Инфокоммуникационные технологии и системы связи. Пособие предназначено для использования при изучении дисциплин Специализированные процессоры, Микропроцессорные системы, Вычислительная техника и информационные технологии, а также может быть использовано преподавателями и студентами при изучении родственных дисциплин и в процессе самостоятельной работы.

Учебное пособие обсуждено и одобрено на заседании кафедры ИВТ. Протокол №1 от 31.08.2023 г.

Рецензент Зав. кафедрой ИВТ д.т.н. профессор Соколов С.В.

© СКФ МТУСИ, 2024 © А.Н. Чикалов 2024

И з д а т е л ь с т в о С К Ф М Т У С И

Сдано в набор 20.11.23. Изд. № 381. Подписано в печать 21.12.23. Зак. 395. Печ. листов 1,81. Учетно-изд. л. 1,45. Печать оперативная. Тир. 10 экз.

Отпечатано в Полиграфическом центре СКФ МТУСИ, Серафимовича, 62.

3

СОДЕРЖАНИЕ

3. Управление цифровыми портами AVR . . . . . . . . . . . . . . . . . . 4 Задание 3.1. Программная модель цифровых портов микроконтроллера

ATmega328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1.1.Назначение и возможности цифровых портов AVR . . . . . . 5

3.1.2.Организация памяти и способы адресации операндов . . . . . 6

3.1.3.Программная модель цифровых портов ATmega328 . . . . . . 11

3.1.4. Инициализация цифрового порта и работа с ним . . . . . . . 12

3.1.5.Исходное состояние цифровых портов по умолчанию . . . . . 15

3.1.6.Преимущества и недостатки прямого управления портами . . 15

3.1.7.Цифровые порты ARDUINO . . . . . . . . . . . . . . . . . . . 16

Задание 3.2. Выполнить этапы проектирования устройства на языке С . 16 Задание 3.3. Выполнить Задание 3.2 с использованием встроенных

функций ARDUINO . . . . . . . . . . . . . . . . . . . . . . . 21

3.3.1.Функции управления вводом/выводом в ARDUINO . . . . . . 22

3.3.2. pinMode(pin, mode) . . . . . . . . . . . . . . . . . . . . . . .

22

3.3.3. digitalWrite(pin, value) . . . . . . . . . . . . . . . . . . . . . .

22

3.3.4. digitalRead(pin) . . . . . . . . . . . . . . . . . . . . . . . . . .

22

Задание 3.4. Управление светодиодом двумя кнопками . . . . . . . . . .

23

Задание 3.5. Зажигание и гашение светодиода одной кнопкой . . . . . .

24

Задание 3.6. Управление переключением светодиода от кнопки с защи-

25

той от дребезга . . . . . . . . . . . . . . . . . . . . . . . .

 

Задание 3.7. Управление двумя светодиодами двумя кнопками . . .

27

Задание 3.8. Управление переключением мигающего светодиода . . . .

27

Задание 3 9. Бегущие огни . . . . . . . . . . . . . . . . . . . . . . . . .

28

Вопросы для самоконтроля . . . . . . . . . . . . . . . . . . . . . . . . .

28

Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

4

3. Управление цифровыми портами AVR

Цель:

1.Углубить и закрепить теоретические знания по принципам построения и работы специализированных контроллеров;

2.Приобрести практические навыки самостоятельного управления цифровыми портами контроллера;

3.Совершенствовать навыки анализа, обобщения и систематизации полученных результатов, навыки составления и оформления отчетных материалов, навыки точного и лаконичного представления докладов на вопросы технического характера.

Учебные вопросы:

3.1.Программная модель цифровых портов микроконтроллера

ATmega328;

3.2. Выполнить этапы проектирования устройства на языке С;

3.3. Выполнить Задание 1 с использованием встроенных функций ARDUINO;

3.4. Управление светодиодом двумя кнопками; 3.5. Зажигание и гашение светодиода одной кнопкой;

3.6. Управление переключением светодиода от кнопки с защитой от дребезга;

3.7. Управление двумя светодиодами двумя кнопками;

3.8. Управление переключением мигающего светодиода;

3.9. Бегущие огни.

Содержание отчета

1.Название работы.

2.Название каждого учебного вопроса и краткий конспект в объеме требований к отчету по конкретному учебному вопросу.

Вопросы для подготовки к занятию

1.Алгоритм работы центрального процессора;

2.Принципы работы оперативной памяти и Flash-памяти;

3.Характеристика гарвардской и фон-Неймановской архитектур;

4.В чем отличие CISC и RISC структур системы команд;

5.Чем для процессора является порт?

6.В чем отличие обращений процессора к порту и памяти?

Актуальность занятия

Спецконтроллер являются основными устройствами, осуществляющим управление и обработку данных в системах управления. Работа его в режиме

5

включения и выключения нагрузки является базовой, такие алгоритмы используются практически во всех системах.

Задание 3.1. Программная модель цифровых портов микроконтроллера ATmega328;

Изучить программную модель цифровых портов МКК ATmega328 с целью практического их программирования.

В отчете представить:

1.Программную модель цифровых портов с указанием назначения всех регистров и их адресов;

2.Назначение и принцип подключения внутреннего подтягивающего резистора;

3.Состав блоков памяти МКК;

4.Схему адресации регистров, портов ввода-вывода и ячеек памяти;

5.Режимы работы цифровых портов и технологию их программирова-

ния;

6.Размещение выводов цифровых портов контроллера ATmega328 на плате ARDUINO.

3.1.1. Назначение и возможности цифровых портов AVR

Порты ввода/вывода (I/O) AVR имеют число независимых линий “вход/выход” от 3 до 53. Каждая линия порта может быть запрограммирована на вход или на выход. Мощные выходные драйверы обеспечивают токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения приведены для напряжения питания 5 В).

Архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода (пина) существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.). Это позволяет избежать необходимости иметь копию содержимого порта в памяти для безопасности и повышает скорость работы микроконтроллера при работе с внешними устройствами, особенно в условиях внешних электрических помех.

Порты AVR имеют следующие особенности:

1. Прием и выдачу данных (для ATmega328 23 вывода);

Рис.3.2. Принцип подключения подтягивающего резистора

6

2. Программное изменение направления передачи;

3. Наличие триггеров Шмидта на входах, что обеспечивает восстановление прямоугольной

формы сигналов после искажения

 

в линиях связи (рис.3.1);

 

4. Возможность программ-

Рис.3.1. Диаграммы работы триггера

ного подключения подтягивающе-

Шмидта

го резистора, что упрощает схему

 

иувеличивает гибкость управления;

5.Программное управление отдельными битами портов;

6.Совмещение возможности ввода-вывода и функций управления для выводов ИМС, что также организуется программно.

Принцип подключения подтягивающего резистора Rподт поясняется на рис.3.2. Резистор подключается на выход выходного каскада регистра и предназначен для устранения неопределенности в значении сигнала на контакте выхода. Без него при отключенном регистре (выход регистра находится в Z-состоянии, т.е. VT1 и VT2 одновременно закрыты) на выводе будет напряжение ≈1,25В, что порождает неопределенность для подключенных к нему нагрузок. При программном замыкании контакта PUD (Pull-Up/Doen -

тянуть вверх или вниз) резистор оказывается включенным в цепь и обеспечивает в точке выхода ≈5В, что однозначно соответствует логической 1. В этом заключается цель подтягивания потенциала до значения конкретного логического сигнала при отключенном регистре. При соединении же с общим проводом в замкнутом состоянии контакта на выходе будет однозначно – 0В.

3.1.2. Организация памяти и способы адресации операндов

Микроконтроллер ATmega328 является 8 разрядным (разрядность шины данных) и построен по Гарвардской архитектуре с раздельными адресными пространствами, блоками и шинами программ и данных. Контроллер реализует усовершенствованную RISC архитектуру команд. Структура памяти микроконтроллера ATmega328 представлена на рис.3.3.

Память программ FLUSH объемом 32К организована по 2 байта (такова длина каждой команды). Память имеет возможность программирования

7

непосредственно в системе через последовательные интерфейсы. Память является электрически стираемым ППЗУ.

Два последних килобайта памяти отводится под специальный загрузчик для загрузки и выгрузки программ. Остальная часть занимается прикладной программой. Начиная с адреса $0000 размещается таблица векторов прерывания, причем самый первый вектор обеспечивает переход на коды инициализации контроллера.

Рис.3.3. Структура памяти МКК ATmega328

Память данных состоит из:

-32 регистров общего назначения (РОН). В общепринятой классификации это регистровая память процессора;

-64 регистров ввода-вывода (РВВ) предназначенных для управления узлами, режимами микроконтроллера и обмена с внешними устройствами;

-статического ОЗУ объемом 2К;

-энергонезависимой постоянной памяти данных EEPROM объемом 1К.

Вэтой памяти хранятся калибровочные константы и другие неизменяемые данные, которые должны быть сохранены при отключении питания. Доступ к этой памяти осуществляется с помощью специальных РВВ.

В соответствии с типом адресуемой памяти способы адресации в AVRмикроконтроллерах можно разделить на способы адресации РОН и регистров ввода-вывода, способы адресации оперативной памяти данных (ОЗУ) и способы адресации памяти программ. Возможность использования различных способов адресации позволяет сократить размер и время выполнения программ.

8

Сводная схема используемых адресов памяти данных представлена на рис.3.4.

Рис.3.4. Адресация памяти данных ATmega328

Способ формирования адреса операнда, указание на который содержится в команде, называется адресацией (addressing). С помощью того или иного способа адресации вычисляется физический адрес, который поступает на шину адреса процессора для выбора ячейки памяти или регистра, используемых в команде.

Для адресации РОН и регистров ввода-вывода предусмотрен всего один режим – прямая регистровая адресация. Имена этих регистров в коман-

дах R0 - R31.

При прямой регистровой адресации РОН операндами являются содер-

жимое одного (Rd) или двух (Rr и Rd) регистров общего назначения, ука-

9

занных в команде. Во втором случае результат выполнения команды сохра-

няется в регистре Rd. Прямая регистровая адресация РОН применяется во всех арифметических и логических командах, а также в некоторых командах работы с битами, т. к. эти команды выполняются в АЛУ только над содержимым РОН. Команды, вторым операндом которых является константа, могут использовать в качестве первого операнда только регистры из старшей половины РОН (R16R31). Например, команда сложения двух ре-

гистров: ADD Rd,Rr.

Из всех регистров старшей половины РОН выделяют отдельно регистровые пары X, Y и Z, каждая из которых образована парами 8-разрядных регистров с собственными индивидуальными адресами R26 - R31. Регистровые пары используются, в частности, для обмена с ОЗУ при косвенной адресации и часто называются просто регистрами с именами X, Y и Z.

При прямой регистровой адресации регистра ввода-вывода операнд содержится в регистре ввода-вывода, указанном в команде. Адрес регистра ввода-вывода хранится в шести разрядах слова команды. Прямая регистровая адресация регистров ввода-вывода используется в командах чтения IN и записи OUT регистра ввода-вывода, а также в ряде других команд работы с регистрами ввода-вывода.

Адресами 64-х РВВ в командах ввода -вывода являются 00h - 3Fh.

Для адресации оперативной памяти данных используются пять спо-

собов адресации: непосредственная, косвенная, косвенная со смещением, косвенная с преддекрементом и косвенная с постинкрементом. Адресами в командах обмена с памятью являются адреса в диапазоне 0000h до 08FFh. Следует обратить внимание, что в этом диапазоне часть адресов относится к РОН и УВВ, но они работают только с указанным типом команд. Непосредственно сама статическая память расположена в адресах 0060h - 08FFh.

1. При непосредственной адресации оперативной памяти дан-

ных операндом является содержимое ячейки ОЗУ, адрес которой указан в команде. Адрес операнда содержится в 16 младших разрядах 32-разрядной команды. Непосредственная адресация используется в команде LDS (Load Direct from Data Space) загрузки из ОЗУ и в команде STS (Store Direct to Data Space) загрузки в ОЗУ. Например, непосредственное чтение из ОЗУ: LDS

Rd,01A7h.

Зарезервировать байты в ОЗУ позволяет директива .byte. Для того, чтобы на выделенную область памяти можно было ссылаться, директиве .byte должна предшествовать метка. Директива .byte имеет один параметр – количество выделяемых байт и может использоваться только в сегменте данных, определяемом с помощью директивы .dseg (data segment).

Задать требуемое размещение выделяемой области памяти позволяет директива .org (origin – смещение). Начало программного сегмента указывается с помощью директивы .cseg (code segment). Директивы .dseg и .cseg не имеют параметров. Выделенные в оперативной памяти данных байты не инициализируются.

10

2. При косвенной адресации оперативной памяти данных опе-

рандом является содержимое ячейки ОЗУ, адрес которой находится в регистре X, Y или Z. Косвенная адресация используется в команде LD (Load Indirect) косвенной загрузки из ОЗУ и команде ST (Store Indirect) косвенной загрузки в ОЗУ. Например, косвенное чтение ОЗУ с использованием регистра

Z:LD Rd,X.

3.При косвенной адресации оперативной памяти данных со смещени-

ем адрес операнда в оперативной памяти данных вычисляется путём прибавления к содержимому регистра Y или Z смещения, указанного в команде. Смещение содержится в шести разрядах слова команды. Косвенная адресация со смещением используется в команде LDD (Load Indirect with Displacement) косвенной загрузки из ОЗУ со смещением и в команде STD (Store Indirect with Dis-placement) косвенной загрузки в ОЗУ со смещением. Например, косвенное чтение из памяти по адресу из регистра Y и смещением q: LDD Rd,Y+q.

4.При косвенной адресации оперативной памяти данных с предекре-

ментом (лат. decrementum – уменьшение, убыль) перед выполнением команды содержимое указанного в команде регистра X, Y или Z декрементируется (уменьшается на единицу). Декрементированное содержимое регистра X, Y или Z является адресом операнда в оперативной памяти данных. Косвенная адресация с предекрементом используется в команде LD косвенной загрузки из ОЗУ и команде ST косвенной загрузки в ОЗУ. Например, косвенное чтение по адресу из регистра Y с предикрементом: LD Rd,-Y.

5.При косвенной адресации оперативной памяти данных с постинкре-

ментом (лат. incrementum – увеличение, рост) адресом операнда в оперативной памяти данных является содержимое регистра X, Y или Z, указанного в команде; после выполнения команды содержимое регистра X, Y или Z инкрементируется, т. е. увеличивается на единицу. Косвенная адресация с постинкрементом используется в команде LD косвенной загрузки из ОЗУ и команде ST косвенной загрузки в ОЗУ. Например, косвенное чтение по адресу из регистра Y с постдекрементом: LD Rd,Y+.

Для адресации памяти программ используется непосредственная адресация, косвенная адресация, относительная адресация, адресация константы и адресация константы с постинкрементом.

При непосредственной адресации памяти программ выполнение про-

граммы продолжается с адреса, указанного в команде. Непосредственная адресация памяти программ используется в командах JMP и CALL.

При косвенной адресации памяти программ выполнение программы продолжается с адреса, содержащегося в регистре Z, т. е. в программный счётчик загружается содержимое регистра Z. Косвенная адресация памяти программ используется в командах IJMP и ICALL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]