Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






МОДЕЛИРОВАНИЕ РАБОТЫ МИКРОКОНТРОЛЛЕРА AVR С ПОМОЩЬЮ СИМУЛЯТОРА VMLAB




Цель работы. Целью лабораторной работы является отладка прикладных программ на языке Си для микроконтроллера AVR с помощью компилятора CVAVR и симулятора VMLAB.

Программа работы

1. В директории C:\CVAVR установлена свободная версия компилятора CodeVisionAVR. В доступной для вас директории «Мои документы» создайте папку z1 (задача 1) для файлов первого проекта.

Запустите компилятор. Для создания файла проекта нажимайте: Файл -> новый -> проект -> ОК -> No
- перейдите в созданную для проекта папку z1 и введите в поле "имя файла": z1
- нажмите "сохранить" – откроется окно конфигурации проекта

- перейдите на закладку "С compiler"

- выберите MK (Chip) ATmega16

- установите частоту тактирования МК (Clock) 4.0 МГц

- нажмите ОК.

Перед вами появится открытый текстовый файл Project Notesz1.prj, в котором вы можете записывать свои замечания и мысли по проекту.

Теперь нужно создать главный для нас текстовый файл для набора исходного текста на Си — его расширение.с

- нажимайте:
Файл -> New -> Source -> ОК

появился файл untitled.c
- нажимайте:
Файл - Сохранить как
- введите в поле "имя файла": z1.c и нажмите Сохранить.

Нужно добавить созданный файл z1.c в список файлов проекта – откройте меню конфигурирования проекта: Project -> Configure.

В открывшемся диалоге, нужно выбрать ярлык "Files" и нажать кнопку " Add ". В новом диалоге выберите файл " z1.c " и нажмите " Открыть ". Теперь файл включен в проект.

- нажимайте: ОК

- разверните окно файла – z1.c

Теперь все готово к собственно программированию, т.е. к созданию текста программы на языке Си. Ниже в таблице подготовлен текст программы к задаче 1, реализующей следующее техническое задание: Разработать устройство на микроконтроллере ATmega16, которое будет отображать в двоичном виде горящими светодиодами 8-ми битное число, начиная с 0 и с постоянным увеличением на 1. Устройство питается постоянным стабилизированным напряжением от 4 до 5.5 вольт. Тактирование МК осуществляется от кварцевого резонатора с частотой 4 МГц. Всего подключено 8 светодиодов от ножек порта A через токоограничительные резисторы к питанию МК. Переключение светодиодов должно производиться с паузами в 65 мс.

 

#include <mega16.h> /* Вставить вместо этой строки текст файла mega16.h, содержащий описание регистров МК */ #define PA_OUT DDRA = 0xFF /* Заменить везде в тексте программы PA_OUT на DDRA = 0xFF */ // ++++ функция инициализации МК ++++ void initialization(void){ PA_OUT;//сделать весь PORTA выходом TCCR0 = 0x05;/* таймер включить считать, делая один отсчет каждые 1024 колебания на ножке XTAL1 */ } char per=0; // ++++ Главная функция ++++ void main (void){ initialization(); /* Вызвать функцию инициализации МК – т.е. настройки нужных нам устройств МК в соответствии с поставленной задачей */ //Бесконечный цикл while (1){ //Делать всегда PORTA=~(per++); while (!(TIFR&0x01)); // ждем установки флага переполнения timer0 TIFR = 0x01; // очистить флаг переполнения timer0 }; //цикл закончен } //скобка для main()

 

Запишите (без комментариев) программу в окно исходного текста программы. Сохраните изменения: файл -> 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 и откройте созданный проект:
Project -> Open Project File

 

Перейдите в папку задачи 1 и наберите имя файла z1_vm.prj проекта для VMLAB. После появления фразы, что такой файл не существует, VMLAB предложит создать его, с чем вы соглашайтесь. В появившемся окне запишите без комментариев приведенный ниже в таблице текстовый файл.

 

; Файл-проект z1_vm.prj для симуляции по задаче 1. ; Комментарии пишутся в VMLAB только в одну строчку ; после точки с запятой; МК как бы "прошит" файлом - z1.hex. После включения МК ; горящие светодиоды показывают в двоичном виде числа от 0 ; до 255 и далее опять с нуля и так по кругу...; светодиоды подключены к порту_А МК .MICRO "ATmega16"; симулируемый МК.TOOLCHAIN "GENERIC".TARGET "z1.hex"; что "прошито" в МК.COFF "z1.cof" .SOURCE "z1__.c".POWER VDD=5 VSS=0; Питание +5 вольт; VSS это GND МК - "общий" провод схемы; Относительно него измеряются напряжения.CLOCK 4meg; частота кварца 4 МГц; Точнее это частота тактирования МК ; Ввод схемы устройства по задаче 1; 8 светодиодов подключаются катодами через резисторы : номиналом 560 Ом к ножкам МК с 33 до 40 ; резистор R1 подключить к узлу D1_NODE и к выводу PA0 МК; анод светодиода к цепи +5 В. Остальные 7 светодиодов ; подключаются аналогично   D1 VDD D1_NODE R1 D1_NODE PA0 560 D2 VDD D2_NODE R2 D2_NODE PA1 560 D3 VDD D3_NODE R3 D3_NODE PA2 560 D4 VDD D4_NODE R4 D4_NODE PA3 560 D5 VDD D5_NODE R5 D5_NODE PA4 560 D6 VDD D6_NODE R6 D6_NODE PA5 560 D7 VDD D7_NODE R7 D7_NODE PA6 560 D8 VDD D8_NODE R8 D8_NODE PA7 560 ; Сигналы на ножках PA0 PA1 PA2; будем наблюдать в окне виртуального осциллографа - "Scope".PLOT V(PA0) V(PA1) V(PA2); Рисовать графики напряжения в перечисленных узлах схемы

 

В меню 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 на экране компьютера так, чтобы видеть их все.

Нажмите "светофор" для запуска симуляции программы.
Программа запустится и остановится – в окне Messages появится сообщение. Опять нажимаем на "светофор". Симулятор опять останавливается и сообщает, что произошел сброс от "сторожевого таймера МК" – мы не указали симулятору, что не используем его. Опять нажимаем на "светофор" – теперь программа будет работать непрерывно, пока мы ее не остановим.

Пусть программа симулирует, а вы понаблюдайте за тем, что происходит в указанных выше окнах. Что отображается в окне 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-й позиции в первой строке
lcd_putsf("Hello!"); //счет строк и символов начинается с нуля!

Сохраните (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






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных