Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие 51.doc
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
5.89 Mб
Скачать

2. Порядок выполнения работы Контрольные вопросы по допуску к работе

  1. Опишите последовательность действий при создании проекта, вводе и отладке программы.

  2. Перечислите группы в системе команд ассемблера микроконтроллера ATmega.

  3. Перечислите известные вам команды условных переходов и объясните их действие.

Предварительное задание

  1. Изучите сведения о шаговых двигателях. В случае надобности используйте файлы учебных материалов и лекции.

  2. Повторите сведения об интегрированной среде разработки AVR Studio и примерах ее использования по материалам предыдущей лабораторной работы.

  3. Откройте в каталоге test2_asm папки ЛР18 файл test2_asm.asm с помощью Блокнота, изобразите графически программные модули /*Основная программа*/, /*Обработчик прерывания по таймеру*/ и связи между ними, используя стандартный стиль или стиль Algorithm Builder /2/.

  4. Сравните разработанную вами программу LR17_2 из лабораторной работы № 17 (бегущая единица по разрядам порта B) с программой из test2_asm. Рассмотрите различия в порядке действий, докажите приемлемость обоих вариантов. Обратите внимание на то, что операция смещения единицы на выводах порта включена в подпрограмму обработки прерываний от таймера и что основная программа завершается входом в цикл ожидания прерывания.

  5. Изучите рабочее задание и подготовьтесь к его выполнению.

Рабочее задание

  1. Соберите схему (см. рис. 18.1) в соответствии с рис. 18.7.

Рис. 18.7

  1. Запустите AVR Studio, откройте в нем новый проект под именем LR18_1 в своем каталоге в папке Users (Напоминание: имя каталога и весь путь к нему НЕ должны содержать знаков КИРИЛЛИЦЫ!), скопируйте в него текст программы из test2_asm. Замените во всех командах обмена с portA регистр r16 на какой-либо другой РОН, например r20, замените также в команде «сдвиг на 1 бит влево» регистр r16 на выбранный вами РОН.

  2. Выберите в главном меню программы DebugSelect Platform and Device… (рис. 18.8): из появившегося списка отметьте JTAG ICE (Debug Platform) и ATmega 162 (Device).

Теперь нажмите клавишу F7, пиктограмму Assemble или выберите пункт Build в меню Build, в результате чего начнется трансляция программы. Затем выберите пункт меню DebugStart Debugging или соответствующую пиктограмму для запуска отладки (см. рис. 18.8). В результате программа из вашего проекта загрузится в память программ МК ATMega 162 и вы получите доступ к ресурсам этого МК для пошаговой отладки.

Напоминание: при отладке программы следует уменьшать интервалы таймеров и коэффициент предделителя относительно расчетных, если они слишком велики, поскольку в процессе отладки в AVR Studio программа выполняется в тысячи раз медленнее, чем внутри МК и вы не дождетесь срабатывания таймера (см. работу № 19).

  1. О

    Рис. 18.8. Главное меню, выбор средства отладки и исследуемого МК

    ткройте окна Register и I/O View/PortA. Перемещаясь по листингу с помощью клавиш F11, F10, отследите выполнение команд модуля *Основная программа*. Для анализа модуля *Обработчик прерывания по таймеру* установите курсор на его начало и дайте команду Run to cursor (Ctrl+F10). Опробуйте управление ШД, если есть ошибки, измените программу, заново постройте проект, вновь запустите Start Debugging и снова проверьте работу программы.

  2. Проверьте в окне 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/. При выполнении данной работы сторожевой таймер должен быть выключен.

  1. Возвратите интервалы таймеров и коэффициент предделителя (см. замечание к п. 3) к расчетным значениям, выйдите из режима отладки (Stop Debugging), наблюдайте работу шагового двигателя и светодиодов индикации в темпе работы МК.

  2. Вернитесь в режим отладки, подберите параметры таймера, дающие возможность наблюдать чередование фаз в темпе работы МК, затем подберите максимальную скорость вращения без проскоков, запишите эти значения в отчет, сохраните проект.

  3. В новом экземпляре AVR Studio откройте новый проект под именем LR18_2, перепишите в него текст программы из LR18_1, закройте прежний экземпляр. Переработайте программу так, чтобы логические единицы в биты порта А выводились в обратном порядке. Опробуйте работу ШД, сохраните проект.

  4. Аналогично предыдущим пунктам откройте новый проект под именем LR18_3, перепишите в него текст программы из LR18_2, закройте прежний проект. Переработайте программу так, чтобы в порте А перемещались две смежные логические единицы. Обратите внимание на их переход с одного края разрядной сетки на другой. Доработайте программу так, чтобы переход происходил через состояние 1001. Опробуйте управление ШД и сохраните проект. Поясните, как влияет такое управление на момент двигателя.

  5. Откройте новый проект под именем LR18_4. Предложите алгоритм управления ШД с дроблением шага пополам, составьте и опробуйте соответствующую программу. Целесообразно при этом использовать ОЗУ контроллера, занеся в нее последовательность включения обмоток в виде кодов и считывая их циклически. Следует учесть, что в модели МК ATMega 162 фактическое адресное пространство ОЗУ начинается с адреса 0x0100. Полезно предварительно восстановить в своей памяти навыки работы с ОЗУ, полученные при выполнении задания из лабораторной работы № 16 /2/. Во время отладки пользуйтесь окнами I/O View/PortA, Register и Memory/Data. Возвратите интервалы таймеров и коэффициент предделителя (см. п. 4) к значениям, дающим возможность наблюдать чередование фаз в темпе работы МК, выйдите из режима отладки (Stop Debugging), наблюдайте работу шагового двигателя и светодиодов индикации в темпе работы МК.

  6. Составьте отчет по перечисленным выше пунктам, включая скриншоты программ и экранов эмуляции. Выделите в пунктах отчета полученные навыки составления программ и навыки пользования интегрированной средой разработки AVR Studio, запишите отчет в файл под именем LR18 в той же папке, что и программные модули.

  7. Покажите результаты преподавателю, ответьте на его вопросы.

  8. Дополнительное задание к защите отчета. Предложите алгоритм задания одиночного шага двигателя и N шагов. Источником команды (Step) должна быть кнопка с механическим замыкающим контактом, режим ввода – требование прерывания, число N задается кодом на выводах одного из портов. Продумайте выбор вывода микросхемы для сопряжения с кнопкой и его настройку, защиту от дребезга,