ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
МОДЕЛИРОВАНИЕ РАБОТЫ МИКРОКОНТРОЛЛЕРА AVR С ПОМОЩЬЮ СИМУЛЯТОРА VMLABЦель работы. Целью лабораторной работы является отладка прикладных программ на языке Си для микроконтроллера AVR с помощью компилятора CVAVR и симулятора VMLAB. Программа работы 1. В директории C:\CVAVR установлена свободная версия компилятора CodeVisionAVR. В доступной для вас директории «Мои документы» создайте папку z1 (задача 1) для файлов первого проекта. Запустите компилятор. Для создания файла проекта нажимайте: Файл -> новый -> проект -> ОК -> No - перейдите на закладку "С compiler" - выберите MK (Chip) ATmega16 - установите частоту тактирования МК (Clock) 4.0 МГц - нажмите ОК. Перед вами появится открытый текстовый файл Project Notes – z1.prj, в котором вы можете записывать свои замечания и мысли по проекту. Теперь нужно создать главный для нас текстовый файл для набора исходного текста на Си — его расширение.с - нажимайте: появился файл untitled.c Нужно добавить созданный файл z1.c в список файлов проекта – откройте меню конфигурирования проекта: Project -> Configure. В открывшемся диалоге, нужно выбрать ярлык "Files" и нажать кнопку " Add ". В новом диалоге выберите файл " z1.c " и нажмите " Открыть ". Теперь файл включен в проект. - нажимайте: ОК - разверните окно файла – z1.c Теперь все готово к собственно программированию, т.е. к созданию текста программы на языке Си. Ниже в таблице подготовлен текст программы к задаче 1, реализующей следующее техническое задание: Разработать устройство на микроконтроллере ATmega16, которое будет отображать в двоичном виде горящими светодиодами 8-ми битное число, начиная с 0 и с постоянным увеличением на 1. Устройство питается постоянным стабилизированным напряжением от 4 до 5.5 вольт. Тактирование МК осуществляется от кварцевого резонатора с частотой 4 МГц. Всего подключено 8 светодиодов от ножек порта A через токоограничительные резисторы к питанию МК. Переключение светодиодов должно производиться с паузами в 65 мс.
Запишите (без комментариев) программу в окно исходного текста программы. Сохраните изменения: файл -> Save All. Для компиляции программы нажмите кнопочку " Make the project ". Загляните в папку нашего проекта - z1. В результате компиляции там появилось много новых файлов. Главные для нас: z1.hex - файл-прошивка для "загрузки" в МК; z1__.с - копия файла z1.c для симуляторов; z1.cof - информация, связывающая содержимое файлов z1__.с и z1.hex. Эта информация позволяет при симуляции в VMLAB наблюдать движение программы прямо по коду на языке Си. Указанные файлы будем использовать в симуляторе VMLAB. Необходимым для реального МК является лишь файл прошивки. Следующие четыре файла содержат нашу программу, написанную на стандартном ассемблере для AVR с привязкой к тексту на Си: z1.asm, z1.lst, z1.vec, z1.inc. Остальные файлы практически не интересны.
2. Запустите VMLAB и откройте созданный проект:
Перейдите в папку задачи 1 и наберите имя файла z1_vm.prj проекта для VMLAB. После появления фразы, что такой файл не существует, VMLAB предложит создать его, с чем вы соглашайтесь. В появившемся окне запишите без комментариев приведенный ниже в таблице текстовый файл.
В меню Project запустите Re-Build all... Через меню View откройте два компонента: SCOPE – это виртуальный запоминающий осциллограф симулятора и Control Panel – это панель, на которой содержатся нужные нам светодиоды и многое другое, пока нам не нужное. Через меню Window откройте (обычно оно открывается сразу при открытии проекта) окно Code – в этом окне вы увидите текст симулируемой программы.
Обратите внимание на окно Messages – в нем появляются служебные сообщения симулятора по ходу работы. В окне Messages должно появиться сообщение об успехе и что все готово к запуску (Success! All ready to run). Кроме того, на панели инструментов загорится зеленый светофор – это кнопка, которой можно запускать симуляцию. Нажатие зеленого светофора эквивалентно подаче "1" на вывод RESET МК при включенном питании, но еще не выполнявшем программу. В окне Scope появились три графика для сигналов, которые мы будем наблюдать. Установите масштаб по вертикали 2 вольта на деление, а по горизонтали 50 мс. В окне Сode появилось серое поле слева и зеленые квадратики напротив исполняемых строк кода программы на Си – кликнув по такому квадратику мы можем поставить точку останова программы. Разместите три окна и Control Panel на экране компьютера так, чтобы видеть их все. Нажмите "светофор" для запуска симуляции программы. Пусть программа симулирует, а вы понаблюдайте за тем, что происходит в указанных выше окнах. Что отображается в окне Control Panel кроме светодиодов?
Понаблюдайте за окнами SCOPE и Code и за светодиодами. В окне Code при симуляции возникают и растут желтые полосы, подсвечивающие строки исполняемой программы. Длины этих подсветок пропорциональны времени, в течение которого программа выполняет код этих строк.
Какой ток потребляется микроконтроллером от источника питания? Остановите симуляцию, нажав красный восьмиугольник «Стоп» и измерьте длительность периода импульсов на ножке РА2 МК. Насколько соответствует она расчетной величине? Для измерения временного промежутка в окне SCOPE симулятора VMLAB нужно установить вертикальные курсоры 1 и 2 на границах измеряемого интервала и в поле Cursor delta time появится значение времени между двумя курсорами.
При измерении коротких повторяющихся интервалов можно мерить время сразу нескольких, а результат поделить затем на число таких интервалов между измерительными курсорами. Перезапустите МК, кликнув по кнопке с круговой темно-синей стрелкой (глубокий рестарт). Вы как бы отключаете и затем снова подаете питание на МК, но создаете "0" на ножке RESET МК – вследствие чего программа не стартует! Какую функцию выполняет команда PORTA=~(per++);? Приведите в отчете схему подключения светодиодов к МК.
3. Модифицируйте программу. Переключите светодиоды к порту С. Время паузы между переключениями светодиодов уменьшить в 2 раза. Для изменения Си кода программы просто запустите компилятор CodeVisionAVR (VMLAB не выключать!) и внесите нужные изменения, затем откомпилируйте проект. Далее перейдите в VMLAB, сделайте глубокий рестарт и затем Re-buid all. Все! Изменения внесены и все опять готово к симуляции. Таким образом, компилятор и симулятор работают одновременно в одной папке проекта и не мешают, а помогают друг другу. В отчет включите файлы z1.c и z1_vm.prj модифицированного проекта.
4. В следующем проекте будем выводить данные на символьный LCD дисплей (жидко-кристаллический индикатор). Схема его подключения к порту А микроконтроллера приведена на рис. 5 (там же указан источник информации, в котором вы можете более подробно ознакомиться с решаемой задачей). Запустите компилятор CodeVisionAVR, затем генератор начального кода "CodeWizardAVR" – кликнув серую шестеренку слева от красного жучка... Выберите ATmega16 и частоту кварца 4 МГц. Перейдите к закладке LCD и укажите PORTA и 16 символов. Выполнив Файл -> Generate, Save and Exit, создайте в директории «Мои документы» папку z2 (задача 2) для файлов нового проекта. Сохраните, нажимая три раза z2, файлы z2.c, z2.prj и z2.cwp. Посмотрите сгенерированный мастером файл начального кода программы z2.c. Какими командами проводится инициализация LCD дисплея? Можно ли удалить из программы команды, реализующие инициализацию периферийных устройств, не используемых в данной задаче? После команды lcd_init(16); // LCD 16 символов на строку добавьте две строчки: lcd_gotoxy(5,0); // вывод символов с 6-й позиции в первой строке Сохраните (File -> Save All) и откомпилируйте программу.
Рисунок 5 – Типовая схема включения LCD дисплея
Не закрывая компилятор, откройте VMLAB. В окне Open Project File впишите имя файла z2_vm и откройте файл проекта для симулятора z2_vm.prj. Впишите в него приведенный ниже в рамке текст и запустите Re-build all... Загоревшийся светофор говорит о том, что программа готова к симуляции. Откройте окно Control Panel и, трижды нажав светофор, добейтесь непрерывной симуляции. Долгожданная надпись на экране LCD появится не сразу (процесс инициализации LCD продолжается достаточно долго). Почему через некоторое время загорается светофор?
; файл z2_vm.prj .MICRO "ATmega16" .TOOLCHAIN "GENERIC" .TARGET "z2.hex" .COFF "z2.cof" CLOCK 4meg Не нашли, что искали? Воспользуйтесь поиском:
|