- •Исследование узлов комплексных систем управления
- •Часть 3
- •Введение
- •1. Организация цикла лабораторных работ
- •1.1. Состав и задачи цикла работ
- •Организация памяти
- •Регистры общего назначения
- •Регистры ввода/вывода
- •Основные служебные регистры мк
- •Порты ввода/вывода
- •Контрольные вопросы
- •Указания по составлению алгоритмов Управление временем задержки
- •Режим обслуживания прерываний
- •2. Порядок выполнения работы Контрольные вопросы по допуску к работе
- •2.1. Предварительное задание
- •2.2. Рабочее задание
- •3. Итоговые вопросы
- •Память данных
- •3. Итоговые вопросы
- •Приложение Названия и номера регистров и портов avr Classic и Mega
- •Регистры управления
- •Библиографический список
- •Содержание
- •Часть 3
- •394026 Воронеж, Московский просп., 14
Память данных
Память данных функционально можно разделить на регистровую память и ОЗУ (основной массив ячеек памяти данных).
Память данных микроконтроллеров семейств Tiny, Classic и Mega разделена на три части: регистровая память, оперативная память (статическое ОЗУ) и энергонезависимое ЭСППЗУ (EEPROM) – см. рис. 14.2. Память данных младших моделей МК семейства Tiny состоит только из регистровой памяти и EEPROM (для констант) – см. рис. 16.1. В среде Algorithm Builder значения F_END, S_END, E_END устанавливаются автоматически (из встроенных таблиц) при выборе типа кристалла.
Регистровую память составляют регистры общего назначения (РОН), предназначенные для кратковременного хранения с минимальным временем доступа, и регистры ввода/вывода (РВВ), в число которых входят различные служебные регистры (регистр управления микроконтроллером, регистр состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера (включая порты ввода/вывода). Размер регистровой памяти фиксирован (хотя в разный моделях МК физически присутствует различное количество РВВ) и для большинства моделей составляет 96 байт – до адреса $005F. Модели ATmega162, ATmega64х, ATmega128х имеют дополнительные регистры ввода/вывода, поэтому пространство регистровой памяти у них расширено на 160 байт до адреса $00FF.
Учитывая наличие в адресном пространстве регистровой памяти, отсчет адресов СОЗУ начинается не с $0000, а с $0060 или $0100. В этом можно убедиться, открыв во время симуляции окно SRAM\map.
Шесть последних РОН объединены в пары так, как было показано на рис. 16.4. Они используются для косвенной адресации к ОЗУ, т.е. меняя их содержимое, можно с помощью одного и того же участка алгоритма адресоваться к разным ячейкам памяти. Символика косвенной адресации приведена в мануале к программе Algorithm Builder.
2. Порядок выполнения работы
Контрольные вопросы по допуску к работе
Организация таймеров МК AVR. Их функции и возможности использования.
Конфигурирование таймеров и управление ими.
Какие способы можно использовать для организации задержки по таймеру?
2.1. Предварительное задание
2.1.1. Изучите сведения об организации памяти МК AVR. В случае надобности используйте файлы учебных материалов и лекции.
2.1.2. Изучите рабочее задание и подготовьтесь к его выполнению.
2.2. Рабочее задание
2.2.1. Прочитайте следующее задание и продумайте этапы его реализации.
Оператор через порт C загружает в ячейки ОЗУ контроллера с адресами 20Н...27Н (считая от начала ОЗУ) управляющие коды, которые затем необходимо передавать на объект управления через порт B микроконтроллера в соответствии с состоянием битов маски. Маска передачи управляющих кодов загружается в МК с линий порта A и интерпретируется так: "1" в бите PA.0 соответствует необходимости передачи в порт B управляющего кода из ячейки 20Н и удержания его в течение 400 микросекунд, "1" в бите PA.1 - из ячейки 21Н и т.д. В случае, если РА.х = 0, делается переход к следующему разряду без задержки. Коды выдаются последовательно, начиная с младшего адреса. Графически это задание проиллюстрировано на рис. 16.2.
Составьте алгоритм для выполнения этого задания, придерживаясь принципа модульности (организуйте отдельные модули со своими вертексами: основной модуль, включая инициализацию, модуль ввода управляющих кодов, модуль ввода маски, модуль вывода кодов). Не используйте кириллицу в названии подпрограмм. Сначала изобразите только основной модуль с сеттерами, макрокомандами инициализации и именами подпрограмм. Сами подпрограммы изобразите в виде «заглушек», содержащих только NOP и Ret. Для удобства отладки и исследования охватите модули ввода маски и вывода кодов циклом. Выберите тип МК (AT90S4434).
С охраните проект как LR16_1. Выполните симуляцию, установив в цикле точку наблюдения (брейкпойнт).
Постепенно разрабатывайте алгоритмы модулей и проверяйте их симуляцией. Сохраняйте стадии разработки под новыми именами (для отчета).
Выберите и продумайте режим отсчета заданного временного интервала, реализуйте его в виде подпрограммы с соответствующими настройками таймера.
Выполните симуляцию проекта в целом. Разместив контрольные точки во всех модулях, убедитесь в правильной отработке задания. Сохраните алгоритм.
Составьте отчет по перечисленным выше пунктам, включая скриншоты алгоритмов и экранов эмуляции. Выделите в пунктах отчета полученные навыки составления алгоритмов и навыки пользования программой, запишите отчет в файл под именем LR16 в той же папке, что и алгоритмы.
Покажите результаты преподавателю, ответьте на его вопросы.