- •Кузнецов в.Н., Лисютченков с.Н. Цифровые и микропроцессорные устройства
- •Часть 3
- •220301– Автоматизация технологических процессов и производств
- •Содержание
- •Предисловие
- •Лабораторная работа №1 «Освоение среды разработки vmlab 3.12»
- •1.2 Теоретическое введение
- •1.2.1 Общие сведения
- •1.2.2 Среда разработки vmlab
- •1.2.3 Описание пользовательского интерфейса
- •1.2.4 Команды меню
- •Save All − сохранить все файлы Save As − сохранить файл текущего окна под новым именем
- •1.2.5 Доступные окна
- •1.2.6 Аппаратные компоненты
- •1.2.7 Формат программы на ассемблере
- •1.3 Порядок выполнения лабораторной работы
- •1.3.1 Создание нового проекта
- •1.3.2 Редактирование файла ассемблера
- •1.3.3 Ассемблирование и выполнение программы
- •1.4 Задание на лабораторную работу
- •1.5 Контрольные вопросы
- •1.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №2 «Изучение микроконтроллера aTmega128 и основы программирования»
- •2.2.1 Общие сведения о микроконтроллере aTmega128
- •Регистры ввода/вывода (рвв)
- •Организация памяти
- •Внешние прерывания
- •2.2.9 Директивы транслятора ассемблера
- •2.2.10 Выражения
- •2.2.11 Операнды
- •2.2.12 Функции
- •2.2.13 Операции
- •2.3 Порядок выполнения лабораторной работы
- •2.4 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •2.5 Контрольные вопросы
- •2.6 Содержание отчета по лабораторной работе
- •3.2.2 Адресация в микроконтроллере
- •3.2.3 Команды пересылки данных
- •Mov Rd,Rr(пересылка между рон) – копирует содержимое регистра Rrв регистр Rd. Регистр-источник Rrне изменяется.
- •3.2.4 Команды передачи управления
- •3.3 Порядок выполнения лабораторной работы
- •3.4 Задание на лабораторную работу
- •3.5 Контрольные вопросы
- •3.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №4 «Выполнение арифметических операций»
- •4.2 Теоретическое введение
- •4.3 Порядок выполнения лабораторной работы
- •4.4 Задание на лабораторную работу
- •4.5 Контрольные вопросы
- •4.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №5 «Изучение логических операций»
- •5.2 Теоретическое введение
- •Управление энергопотреблением и режимы сна.
- •5.3 Порядок выполнения лабораторной работы
- •5.4 Задания на лабораторную работу
- •5.5 Контрольные вопросы
- •5.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №6 «Изучение портов ввода/вывода и их программирование»
- •6.2 Теоретическое введение
- •6.2.1 Общие сведения
- •6.2.2 Порты в качестве универсального цифрового ввода-вывода
- •6.2.3 Настройка выводов
- •6.2.4 Неподключенные выводы
- •6.2.5 Альтернативные функции порта
- •6.2.5.1 Альтернативные функции порта a
- •6.2.5.2 Альтернативные функции порта в
- •6.2.5.3 Альтернативные функции порта c
- •6.2.5.4 Альтернативные функции порта d.
- •6.2.5.5 Альтернативные функции порта e
- •6.2.5.6 Альтернативные функции порта f
- •6.2.5.1 Альтернативные функции порта g
- •6.2.6 Описание регистров портов ввода-вывода
- •6.2.7 Обращение к портам ввода/вывода
- •6.3 Порядок выполнения лабораторной работы на симуляторе
- •6.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •Контрольные вопросы
- •6.6 Содержание отчета по лабораторной работе
- •Лабораторная работа №7.
- •7.2.1 Общие сведения о Память
- •7.2.2 Статическое озу памяти данных
- •7.2.3 Организация памяти
- •7.2.4 Запоминающее устройство sram
- •7.2.5 Временная диаграмма доступа к памяти
- •7.3 Память данных на эсппзу
- •7.3.1 Чтение и запись эсппзу
- •7.3.2 Адресные регистры эсппзу
- •Порядок выполнения
- •7.4 Память ввода-вывода
- •Порядок выполнения
- •Порядок выполнения
- •7.5 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •7.6 Контрольные вопросы
- •7.7 Содержание отчета по лабораторной работе
- •Генерация тактовых импульсов
- •Инициализация усапп
- •8.2.2 Передача данных - Передатчик усапп
- •8.2.3 Прием данных - Приемник усапп
- •Асинхронный прием данных
- •8.2.4 Многопроцессорный режим связи
- •8.2.5 Описание регистров усапп
- •8.2.6 Последовательный периферийный интерфейс - spi
- •8.2.7 Функционирование вывода ss
- •8.2.8 Связь двух мк
- •8.3 Задание на лабораторную работу
- •Задание для индивидуальной работы
- •8.6 Контрольные вопросы
- •Лабораторная работа №9 «Изучение принципа работы таймеров/счетчиков микроконтроллера»
- •9.2 Теоретическое введение
- •9.2.1 Общие сведения о таймерах/счетчиках
- •9.2.2 Назначение выводов таймеров/счетчиков
- •9.2.5 Выбор источника тактового сигнала
- •9.2.6 Режим таймера
- •9.2.7 Функция захвата (Capture)
- •9.2.8 Функция сравнения (Compare)
- •9.2.9 Режим шим
- •9.2.10 Сторожевой таймер
- •9.2.11 Общие сведения о работе клавиатуры
- •9.2.12 Ввод кода нажатой клавиши
- •9.2.13 Сканирование и идентификация
- •Листинг проектного файла №9
- •На эмуляторе
- •9.4 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •9.5 Контрольные вопросы
- •10.2.2 Функционирование модуля ацп
- •10.2.3 Принцип действия
- •10.2.4 Каналы дифференциального усиления
- •10.2.5 Изменение канала или выбор опорного источника
- •10.2.6 Входные каналы ацп
- •10.2.7 Источник опорного напряжения ацп
- •10.2.8 Повышение точности преобразования
- •10.2.9 Методы компенсации смещения
- •10.2.10 Описание получения результата преобразования
- •10.2.5 Параметры ацп
- •10.2 Порядок выполнения работы на симуляторе
- •На эмуляторе
- •10.3 Задание на лабораторную работу
- •Задания для индивидуальной работы
- •10.4 Контрольные вопросы
- •Приложение
- •Список литературы
Задание для индивидуальной работы
Таблица 2.8 Варианты индивидуальных заданий
№ Вар. |
Задание |
1 |
Необходимо написать программу сложения содержимого вершины стека со вторым значением, хранящимся в стеке. Результат поместить в стек. |
2 |
Разделить младший байт числа, помещенного в вершину стека, на два полубайта с запоминанием их в стеке. Младшие четыре бита должны быть помещены в четыре младших бита первого занесенного в стек слова. Старшие четыре бита заносятся в младших бита слова, расположенного в стеке вторым. |
3 |
Определить количество отрицательных элементов из пяти шестнадцатеричных чисел: F9,7A,F2,74,9C. Отрицательное число идентифицируется по "единице" в самом старшем разряде. Числа хранятся в последовательно расположенных ячейках памяти, начиная с адреса $0060. Результат занести в один из регистров. |
4 |
Написать программу нахождения максимального значения в цепочке из 10 чисел с использованием индексного способа адресации. |
5 |
Написать программу нахождения минимального значения в цепочке из 10 чисел с использованием индексного способа адресации. |
2.5 Контрольные вопросы
Дать краткую характеристику микроконтроллера ATmega128.
Дать краткий обзор архитектуры микроконтроллера ATmega128.
Расскажите о SRAM?
Какие адреса имеет пространство ввода-вывода данных?
Что такое регистр статуса SREG?
Для чего используются индексные регистры?
Что такое регистр MCUCR?
Расскажите о EEPROM (ЭСППЗУ)
Расскажите о FlashROM
Дать краткий обзор организации памяти микроконтроллера ATmega128.
Расскажите о внешних прерываниях.
Какое отличие директив .CSEG, .DSEG, .ESEG?
Какие существуют директивы для определения символического имени, байт- и слов- констант?
Расскажите о регистре EIMSK.
Расскажите о регистре MCUCSR
Расскажите о регистрах EICRA и EICRB
2.6 Содержание отчета по лабораторной работе
Краткое теоретическое введение.
Алгоритм и Блок схема программы самостоятельного задания.
Листинг программы и проектного файла с комментариями.
Выводы по лабораторной работе.
Лабораторная работа №3
«Изучение простейших операций микроконтроллера»
3.1 Цель работы: Изучить выполнение микроконтроллером простейших операций пересылки и передачи управления.
3.2 Теоретическое введение
3.2.1 Общие сведения
Команда микроконтроллера – программная единица, представляющая собой двоичной число, которое, будучи прочитано микроконтроллером, заставляет его выполнять определенные действия.
Команда микроконтроллера должна содержать информацию двух видов. Во–первых, команда должна сообщить микроконтроллеру, что делать. Во–вторых, указывать местоположение обрабатываемых данных. В соответствии с этим команда состоит из двух частей: кода операции и адреса или данных. Если длина команды составляет два или три слова, то первое из них – это код операции, второе и третье – адрес данных и др. Но неправильно считать, что команды в одно слово – безадресные.
Команды можно разделить на четыре группы: команд управления системой, команд работы с битами, арифметических и логических команд, команд пересылки, команд ветвления и команд пересылки. К числу последних относятся команды пересылки данных. Они служат для пересылки данных между различными узлами микроконтроллера, которыми он располагает, причем в результате выполнения этих операций не разрушаются данные, находящиеся в исходном месте. К числу областей хранения информации относятся как ячейки памяти, так и регистров общего назначения (РОН).
Так как память программ является 16-разрядной, соответственно большинство команд описывается 16-разрядным словом, которое называется также кодом операции (КОП). Код операции – это число, расположенное в памяти программ и определяющее действие, которое необходимо произвести между источником и приемником. Ряд команд, у которых один из операндов является 16-разрядным адресом, занимает две ячейки памяти программ. Соответственно код операции таких команд является 4-байтным числом. В ряде случаев значение операнда-источника может содержаться непосредственно в коде операции, а не в регистре. Это происходит в том случае, когда операндом-источником является непосредственное значение (константа). Использование констант позволяет повысить удобочитаемость программы, а также упростить ее отладку и дальнейшее развитие.
Микроконтроллер ATmega128 поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ). В действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обращение (для прямой адресации) или какие дополнительные действия выполняются над индексным регистром (для косвенной адресации).
В целях достижения максимальной производительности и параллельности у AVR-микроконтроллеров используется Гарвардская архитектура с раздельными памятью и шинами программ и данных. Команды в памяти программ выполняются с одноуровневой конвейеризацией. В процессе выполнения одной инструкции, следующая предварительно считывается из памяти программ. Данная концепция позволяет выполнять одну инструкцию за один машинный цикл. Память программ представляет собой внутрисистемно программируемую флэш-память.
Регистровый файл с быстрым доступом содержит 32 x 8-разрядных рабочих регистров общего назначения с однотактовым циклом доступа. Благодаря этому, достигнута однотактность работы арифметико-логического устройства (АЛУ). При обычной работе АЛУ сначала из регистрового файла загружается два операнда, затем выполняется операция, а после результат отправляется обратно в регистровый файл и все это происходит за один машинный цикл.
6 регистров из 32 могут использоваться как три 16-разрядных регистра косвенного адреса для эффективной адресации в пределах памяти данных. Один из этих указателей адреса может также использоваться как указатель адреса для доступа к таблице преобразования во флэш-памяти программ. Данные 16-разрядные регистры называются X-регистр, Y-регистр и Z-регистр и описываются далее в этом разделе.
АЛУ поддерживает арифметические и логические операции между регистрами, а также между константой и регистром. Кроме того, АЛУ поддерживает действия с одним регистром. После выполнения арифметической операции регистр статуса обновляется для отображения результата выполнения операции.
Для ветвления программы поддерживаются инструкции условных и безусловных переходов и вызовов процедур, позволяющих непосредственно адресоваться в пределах адресного пространства. Большинство инструкций представляют собой одно 16- разрядное слово. Каждый адрес памяти программ содержит 16- или 32- разрядную инструкцию. Флэш-память программ разделена на две секции: секция программы начальной загрузки и секция прикладной программы. Обе секции имеют раздельные биты защиты от записи и чтения/записи. Инструкция SPM (запись в секцию прикладной программы) должна использоваться только внутри секции программы начальной загрузки.
При генерации прерывания и вызове подпрограмм адрес возврата из программного счетчика записывается в стек. Стек эффективно распределен в статическом ОЗУ памяти данных и, следовательно, размер стека ограничен общим размером статического ОЗУ и используемым его объемом. В любой программе сразу после сброса должна быть выполнена инициализация указателя стека (SPH, SPL) (т.е. перед выполнением процедур обработки прерываний или вызовом подпрограмм). Указатель стека – (SPH, SPL) – доступен на чтение и запись в пространстве ввода-вывода. Доступ к статическому ОЗУ данных может быть легко осуществлен через 5 различных режимов адресации архитектуры AVR, описываемые в следующих работах.
Гибкий модуль прерываний содержит свои управляющие регистры в пространстве ввода-вывода и имеет дополнительный бит общего разрешения работы системы прерываний в регистре статуса. У всех прерываний имеется свой вектор прерывания в соответствии с таблицей векторов прерываний. Прерывания имеют приоритет в соответствии с позицией их вектора. Прерывания с меньшим адресом прерывания имеют более высокий приоритет.
Пространство памяти ввода-вывода содержит 64 адреса с непосредственной адресацией или может адресоваться как память данных, следующая за регистрами по адресам $20 - $5F. Кроме того, ATmega128 имеет пространство расширенного ввода-вывода по адресам $60 - $FF в статическом ОЗУ, для доступа к которому могут использоваться только процедуры (команды) ST/STS/STD и LD/LDS/LDD.