- •Исследование узлов комплексных систем управления
- •Часть 4
- •Интегрированная среда разработки avr Studio
- •2. Порядок выполнения работы Контрольные вопросы по допуску к работе
- •2.1. Предварительное задание
- •2.2. Рабочее задание
- •3. Итоговые вопросы
- •Описание платы управления, используемой в лабораторной работе
- •Описание системы отладки
- •2. Порядок выполнения работы Контрольные вопросы по допуску к работе
- •Предварительное задание
- •Рабочее задание
- •Приложение 1 Система команд микроконтроллера aTmega
- •Группа команд логических операций
- •Группа команд арифметических операций
- •Группа команд операций с битами
- •Группа команд пересылки данных
- •Группа команд передачи управления
- •Dseg - Сегмент данных
- •Endmacro - Конец макроса
- •Exit - Выйти из файла
- •Include - Вложить другой файл
- •List - Включить генерацию листинга
- •Macro - Начало макроса
- •Nolist - Выключить генерацию листинга
- •Приложение 3 Приведение вкладки в состояние Docking
- •Приложение 4 Названия и номера регистров и портов avr Classic и Mega
- •Регистры управления
- •Библиографический список
- •Содержание
- •Часть 4
- •394026 Воронеж, Московский просп., 14
2. Порядок выполнения работы Контрольные вопросы по допуску к работе
Опишите последовательность действий при создании проекта, вводе и отладке программы.
Перечислите группы в системе команд ассемблера микроконтроллера ATmega.
Перечислите известные вам команды условных переходов и объясните их действие.
Предварительное задание
Изучите сведения о шаговых двигателях. В случае надобности используйте файлы учебных материалов и лекции.
Повторите сведения об интегрированной среде разработки AVR Studio и примерах ее использования по материалам предыдущей лабораторной работы.
Откройте в каталоге test2_asm папки ЛР18 файл test2_asm.asm с помощью Блокнота, изобразите графически программные модули /*Основная программа*/, /*Обработчик прерывания по таймеру*/ и связи между ними, используя стандартный стиль или стиль Algorithm Builder /2/.
Сравните разработанную вами программу LR17_2 из лабораторной работы № 17 (бегущая единица по разрядам порта B) с программой из test2_asm. Рассмотрите различия в порядке действий, докажите приемлемость обоих вариантов. Обратите внимание на то, что операция смещения единицы на выводах порта включена в подпрограмму обработки прерываний от таймера и что основная программа завершается входом в цикл ожидания прерывания.
Изучите рабочее задание и подготовьтесь к его выполнению.
Рабочее задание
Соберите схему (см. рис. 18.1) в соответствии с рис. 18.7.
Рис. 18.7
Запустите AVR Studio, откройте в нем новый проект под именем LR18_1 в своем каталоге в папке Users (Напоминание: имя каталога и весь путь к нему НЕ должны содержать знаков КИРИЛЛИЦЫ!), скопируйте в него текст программы из test2_asm. Замените во всех командах обмена с portA регистр r16 на какой-либо другой РОН, например r20, замените также в команде «сдвиг на 1 бит влево» регистр r16 на выбранный вами РОН.
Выберите в главном меню программы Debug – Select Platform and Device… (рис. 18.8): из появившегося списка отметьте JTAG ICE (Debug Platform) и ATmega 162 (Device).
Теперь нажмите клавишу F7, пиктограмму Assemble или выберите пункт Build в меню Build, в результате чего начнется трансляция программы. Затем выберите пункт меню Debug – Start Debugging или соответствующую пиктограмму для запуска отладки (см. рис. 18.8). В результате программа из вашего проекта загрузится в память программ МК ATMega 162 и вы получите доступ к ресурсам этого МК для пошаговой отладки.
Напоминание: при отладке программы следует уменьшать интервалы таймеров и коэффициент предделителя относительно расчетных, если они слишком велики, поскольку в процессе отладки в AVR Studio программа выполняется в тысячи раз медленнее, чем внутри МК и вы не дождетесь срабатывания таймера (см. работу № 19).
О
Рис. 18.8. Главное меню, выбор средства отладки и исследуемого МК
ткройте окна Register и I/O View/PortA. Перемещаясь по листингу с помощью клавиш F11, F10, отследите выполнение команд модуля *Основная программа*. Для анализа модуля *Обработчик прерывания по таймеру* установите курсор на его начало и дайте команду Run to cursor (Ctrl+F10). Опробуйте управление ШД, если есть ошибки, измените программу, заново постройте проект, вновь запустите Start Debugging и снова проверьте работу программы.Проверьте в окне I/O View/WatchDog состояние битов регистра WDTCR (рис. 18.9). Краткое описание назначения битов управления стандартным WDT, который используется в ATmega162x, приведено в табл. 18.2.
Рис. 18.9
Таблица 18.2
Бит |
Название |
Краткое описание |
7...5 |
— |
Зарезервировано, читается как 0 |
4 |
WDCE |
Разрешение изменения конфигурации сторожевого таймера |
3 |
WDE |
Разрешение сторожевого таймера (1 — включен) |
2 |
WDP2 |
Коэффициент деления предделителя сторожевого таймера (значения периода заполнения сторожевого таймера – табл. 18.3) |
1 |
WDP1 |
|
0 |
WDP0 |
Таблица 18.3
Если сторожевой таймер включен, то он будет выполнять сброс программы МК в момент своего переполнения. Для корректного использования WDT его период должен быть больше периода повторения технологической программы, а программа должна содержать команду WDR, обнуляющую сторожевой таймер. Для выключения сторожевого таймера или для изменения периода тайм-аута необходимо одной командой записать лог. 1 в разряды WDE и WDTCE, а в течение следующих четырех машинных циклов записать также одной командой требуемые значения в разряды WDE и/или WDP2…0, одновременно сбрасывая разряд WDCE (режим управления 1) /1/. При выполнении данной работы сторожевой таймер должен быть выключен.
Возвратите интервалы таймеров и коэффициент предделителя (см. замечание к п. 3) к расчетным значениям, выйдите из режима отладки (Stop Debugging), наблюдайте работу шагового двигателя и светодиодов индикации в темпе работы МК.
Вернитесь в режим отладки, подберите параметры таймера, дающие возможность наблюдать чередование фаз в темпе работы МК, затем подберите максимальную скорость вращения без проскоков, запишите эти значения в отчет, сохраните проект.
В новом экземпляре AVR Studio откройте новый проект под именем LR18_2, перепишите в него текст программы из LR18_1, закройте прежний экземпляр. Переработайте программу так, чтобы логические единицы в биты порта А выводились в обратном порядке. Опробуйте работу ШД, сохраните проект.
Аналогично предыдущим пунктам откройте новый проект под именем LR18_3, перепишите в него текст программы из LR18_2, закройте прежний проект. Переработайте программу так, чтобы в порте А перемещались две смежные логические единицы. Обратите внимание на их переход с одного края разрядной сетки на другой. Доработайте программу так, чтобы переход происходил через состояние 1001. Опробуйте управление ШД и сохраните проект. Поясните, как влияет такое управление на момент двигателя.
Откройте новый проект под именем LR18_4. Предложите алгоритм управления ШД с дроблением шага пополам, составьте и опробуйте соответствующую программу. Целесообразно при этом использовать ОЗУ контроллера, занеся в нее последовательность включения обмоток в виде кодов и считывая их циклически. Следует учесть, что в модели МК ATMega 162 фактическое адресное пространство ОЗУ начинается с адреса 0x0100. Полезно предварительно восстановить в своей памяти навыки работы с ОЗУ, полученные при выполнении задания из лабораторной работы № 16 /2/. Во время отладки пользуйтесь окнами I/O View/PortA, Register и Memory/Data. Возвратите интервалы таймеров и коэффициент предделителя (см. п. 4) к значениям, дающим возможность наблюдать чередование фаз в темпе работы МК, выйдите из режима отладки (Stop Debugging), наблюдайте работу шагового двигателя и светодиодов индикации в темпе работы МК.
Составьте отчет по перечисленным выше пунктам, включая скриншоты программ и экранов эмуляции. Выделите в пунктах отчета полученные навыки составления программ и навыки пользования интегрированной средой разработки AVR Studio, запишите отчет в файл под именем LR18 в той же папке, что и программные модули.
Покажите результаты преподавателю, ответьте на его вопросы.
Дополнительное задание к защите отчета. Предложите алгоритм задания одиночного шага двигателя и N шагов. Источником команды (Step) должна быть кнопка с механическим замыкающим контактом, режим ввода – требование прерывания, число N задается кодом на выводах одного из портов. Продумайте выбор вывода микросхемы для сопряжения с кнопкой и его настройку, защиту от дребезга,