
- •1 Исследование программной модели микроконтроллера risc архитектуры с использованием среды разработки avr Studio
- •1.1 Цель работы
- •1.3 Описание лабораторной установки
- •1.4 Порядок выполнения работы и методические указания по ее выполнению
- •1.5 Содержание отчета
- •1.6 Контрольные вопросы и задания
- •2 Исследование методов программного управления портами ввода/вывода микроконтроллера aTmEga128
- •2.1 Цель работы
- •2.2 Методические указания по организации самостоятельной работы студентов
- •Stop: nop; .Exit
- •2.3 Описание лабораторной установки
- •2.4 Порядок выполнения работы и методические указания по ее выполнению.
- •2.5 Содержание отчета
- •2.6 Контрольные вопросы и задания
- •3 Исследование методов программного управления устройствами ввода и вывода информации в реальном времени
- •3.1 Цель работы
- •3.2 Методические указания по организации самостоятельной работы студентов
- •3.2.2 Принципы считывания данных с матричной клавиатуры с помощью микроконтроллера avr аTmega128 в режиме программного опроса.
- •3.3 Описание лабораторной установки
- •3.4 Порядок выполнения работы и методические указания по ее выполнению
- •3.5 Содержание отчета
- •Контрольные вопросы и задания
- •4 Исследование методов обработки прерываний
- •Interrupt [tim1_ovf] void timer1_overflow (void).
- •Interrupt [tim1_compa] void timer1_compareА (void);
- •Interrupt [tim1_compв] void timer1_compareВ (void);
- •Interrupt [tim1_compс] void timer1_compareС (void).
- •4.4 Порядок выполнения работы и методические указания по ее выполнению
- •5 Исследование принципов организации обмена данными по последовательному интерфейсу между микроконтроллером семейства avr и пэвм
- •Перечень ссылок
- •Приложение а Система команд микроконтроллеров avr
- •Приложение б Среда разработки avr Studio
- •Приложение в Описание интерфейса компилятора языка с CodeVision avr
- •Приложение г Описание лабораторного макета
- •Приложение д
Приложение б Среда разработки avr Studio
AVR Studio является интегрированной средой разработки (IDE – Integrated Development Environment) для создания и отладки программ для микроконтроллеров AVR в среде Windows9x/Me/NT/2000/XP. AVR Studio содержит: встроенный редактор текста для набора исходного кода программы; транслятор из языка ассемблер; программный симулятор ЦПУ, памяти и устройств ввода/вывода; поддержку внешних устройств, таких как – внутрисхемный эмулятор (ВСЭ) ICEPRO, ICE200 и программатора типа AVRISP и STK500/501.
Отладочные средства среды разработки AVR Studio
Эмуляторы.
ICE200 – реально-временной внутрисхемный эмулятор, построенный на эмулирующем кристалле AVR с высокой степенью интеграции. ICE200 увеличивает скорость общей разработки аппаратного и программного обеспечения. Эмулятор ICE200 подключается к AVR Studio для написания кода и отладки. Он поддерживает многох AVR-микроконтроллеров с флеш-памятью от 1 до 8 Кбайт.
JTAGICE – внутрисхемный чиповий эмулятор для флеш-микроконтроллеров megaAVR с размером памяти программ 16 Кб и больше. JTAG ICE общается с встроенным в AVR-устройстве отлаженым модулем, который дает более высокую точность эмуляции. Эмулятор поможет разработчикам найти их программные «ловушки», существенным образом уменьшая при этом время проектирования. JTAG ICE соединяется с интегрированной средой проектирования AVR Studio для написания кода программы и ее отладки.
Стандартные разработки.
STK500 – стартовый набор и система проектирования для Atmel AVR флеш-микроконтроллеров. STK500 позволяет разработчикам быстро начать проектировать программу, разрабатывать опытный образец и проверять новое устройство. STK500 соединяется с интегрированной средой проектирования AVR Studio для написания программного кода и ее отладки.
плата STK501 – модуль расширения, разработанный для введения в STK500 поддержки 64-вых. устройств. STK500 и модуль расширения STK501 вместе обеспечивают поддержку всех существующих AVR-устройств.
Описание интерфейса пользователя
AVR Studio позволяет отслеживать код программы с помощью внутрисхемного эмулятора или программного симулятора. Для выполнения (отслеживания) кода программы она сначала должна быть откомпилирована, чтобы сгенерировать объектный файл, который загружается в AVR Studio.
Ключевым окном в AVR Studio есть окно источника (Source window), где отображается исходный код программы (см. рис.Б.1).
Рисунок Б.1 – AVR Studio в процессе отладки исходного кода программы Ap1.asm
Если открывается объектный файл, то автоматически создается окно источника. Оно показывает выполняемый программный код и имеет название, которое отвечает имени открытого файла. Указатель программного счетчика (желтая стрелка всегда указывает на строку, которая будет выполняться. Полоса статуса (Status bar) указывает есть ли исполнительное устройство ВСЭ или программный симулятор. Окно источника дает информацию о логике программы. В дополнение, AVR Studio может показывать другие окна, которые предоставляют пользователю достаточный контроль состояния каждого элемента исполнительного устройства (ВСЭ или симулятор). Некоторые доступные окна:
обзорное окно (Watch window) – показывает значение и адреса определенных переменных;
окно РОН (Register window) – показывает состояние РОН. Регистры могут быть изменены при остановке выполнения программы;
окно памяти (Memory window) – показывает содержимое памяти программ, памяти данных, регистров ввода/вывода и содержимое энергонезависимой памяти EEPROM. Ячейки памяти могут быть отражены в разных форматах: шестнадцатиричном, десятичном, двоичном, или как ASCII-символы. Содержимое памяти, также как и регистры, может быть изменено по желанию во время остановки программы;
окно регистров ввода/вывода (I/O window) – показывает содержимое регистра состояния, таймеров, EEPROM-регистров, портов ввода/вывода и т.д.;
окно процессора (Processor window) – показывает важную информацию о выполнении программы, включая Счетчик Команд (Program Counter), Указатель Стека (Stack Pointer), флаги регистра состояния (Flags), Счетчик Циклов (Cycle Counter) и др.
Команды меню
File:
New text file (CTRL+N) – создание нового текстового файла;
Open…(CTRL+O)–открыть файл в окне источника;
Close – закрыть активный текстовый файл;
Reload (CTRL+R) – перезапуск объектного файла;
Save (CTRL+S) – сохранить текущий текстовый файл;
Save As... – сохранить текущий текстовый файл под индивидуальным именем;
Save All – сохранить все файлы и проект;
Page Setup – параметры страницы перед печатью;
Print (CTRL+P) – печать активного текстового файла;
Print Preview – просмотреть активный текстовый файл перед печатью;
Print Setup – настройка принтера;
Up/Download Memories – загрузка/стирание памяти;
COM Port setting – определение подключенного ВСЭ к COM-порту;
Exit – выход из программы.
Project:
Build – создать проект;
Build and run (CTRL+F7) – создать проект, и, если нет ошибок в программе, запустить отладочный сеанс;
Create new File (CTRL+N) – создать новый файл;
Add File...– добавить существующие файлы;
Add Group...– добавить группу;
Project setting – параметры проекта;
Open...– открыть ранее сохраненный проект;
New...– создать новый проект;
Save – сохранить текущий проект;
Close – закрыть текущий проект;
Assemble (F7) – ассемблирование проекта;
Assemble entry file – определение входного транслированного файла.
Edit:
Undo Backspace (CTRL+Z) – отменить;
Redo (CTRL+Z) – возвратить;
Cut (CTRL+X) – вырезать;
Copy (CTRL+C) – скопировать;
Paste (CTRL+V) – вставить;
Delete (Del) –удалить;
Select all (CTRL+A) – выделить все;
Find... (CTRL+F) – найти в текущем файле;
Replace... (CTRL+H) – заменить;
Setting – установка размерности;
Font...– настройка шрифта и цвета.
View:
Toolbars – выпадающее меню для вкл/выкл иконок;
Status Bar – вкл/выкл панель статуса;
Messages (ALT+2) – вкл/выкл окно ошибок;
Processor (ALT+3) – вкл/выкл окно процессора;
New I/O View (ALT+5) – вкл/выкл окно регистров ввода/вывода;
Watch (ALT+1) – вкл/выкл окно часов;
New Memory View (ALT+4) – вкл/выкл окно памяти;
Terminal I/O (ALT+7) – вкл/выкл окно регистров ввода/вывода;
Registers (ALT+0) – вкл/выкл окно регистров общего назначения;
Trace (ALT+6) – вкл/выкл панель трассирования.
Tools:
STK500/AVRISP/JTAG ICE (ALT+8) – выпадающее меню внешних устройств;
AVR Prog (ALT+9) – меню программатора;
ICEPRO/AVRICE/ICE10 Configuration system – меню подключения с внешними устройствами;
ICE200 Diagnostic – меню тестирования подключенного эмулятора;
ICEPRO/ICE10 Selftest – инициализация ВСЭ.
Debug:
Go (F5) – запуск программы;
Break (CTRL+F5) – прерывание программы;
Reset (SHIFT+F5) – сброс;
Trace Into (F11) – пошаговое выполнение программы;
Step Over (F10) – выполнение строки (в этом режиме выполняются функции/подпрограммы);
Step Out (SHIFT+F11) – выполнение строки (программа выполняется до точки останова);
Run to Cursor (CTRL+F10) – запуск программы на строке расположения курсора;
Auto Step – пошаговое автовыполнение программы;
Debug options – параметры отладки.
Breakpoints:
Toggle Program Breakpoint (F9) – установить точки останова;
Clear All Program Breakpoints – удалить точки останова;
Show List...(CTRL+B) – показать все точки останова с их местоположением;
Advanced Breakpoints (CTRL+D) – переход на следующую точку останова.
Trace & Triggers:
Toggle Trace&Trigger (F8) – установить точки трассировки;
Clear all Trace & Trigger – изъятие всех точек трассировки;
Clear Trace Memory – инициализация буферной памяти;
Search in Trace Memory – поиск величин в буферной памяти;
Trigger Options – параметры защелок.
Watch:
Add Watch – добавить обзорное окно;
Delete Watch – удалить обзорное окно;
Delete All – удалить все окна;
Hex Display – поддержка шестнадцатиричного формата чисел.
Options:
Emulator Options – опции эмулятора;
Simulator Options – опции симулятора;
Simulator Port Logging – регистрация порта;
Simulator Port Stimuli – установка величин из списка.
Window:
Cascade – свертывание окна программы;
Tile – установить по горизонтали заголовок окна программы.
Help:
Help topics – помощь;
Releas notes – указатель;
Atmel on WEB – ссылка на сайт фирмы Atmel;
About AVR Studio – сведения о AVR Studio.
Доступные окна
«Обзорное» окно
Для наблюдения за
переменными, а, точнее, за их значениями
удобно использовать «Обзорное» окно
(Watch window). Открывается оно комбинацией
клавиш «Alt»–«1», или командой меню
«View»–«Watch», или кнопкой
на панели инструментов.
Переменные, которые
определены с помощью макроса „.DEF”
могут быть помещены в «Обзорное» окно
несколькими способами. Выделив нужную
переменную, ее можно перетянуть в
«Обзорное» окно, или в меню «Watch» нажать
команду «Add Watch», или на панели инструментов
нажать кнопку
.
Рисунок Б.2 – Окно сообщений
Во время пошагового выполнения программы можно наблюдать, как изменяются переменные. Данное окно также разрешает пользователю изменять значения переменных, то есть оказывать непосредственное влияние на ход выполнения программы, облегчая отладку. «Обзорное» окно имеет четыре столбца: имя символа, величина символа, тип символа, адрес. По умолчанию, «обзорное» окно пустое. Как только символ добавлен, он учитывается при следующем выполнении программы.
Окно памяти (Memory window (ALT+4))
Окно (см. рис. Б.3) показывает содержимое памяти программ, данных, портов ввода/вывода и энергонезависимого ПЗУ. Память можно просматривать в шестнадцатиричном или десятичном форматах. Содержимое памяти можно изменять, используя двойное нажатие мыши на необходимом значении.
Рисунок Б.3 – Окно памяти
Окно регистров общего назначения (Register window(ALT+0))
Регистры R0-R31 можно просмотреть и отредактировать в окне регистров (см. рис. Б.4). Во время выполнения программы в пошаговом режиме регистры можно изменять.
Рисунок Б.4 – Окно регистров общего назначения
Окно регистров ввода/вывода (New I/O View (ALT+5))
Для более наглядного представления, что происходит с регистрами ввода/вывода во время выполнения программы, существует окно – «IO view» (см. рис. Б.5), которое можно активизировать или через меню «View» командой «New IO View», или нажав «Alt»–5, или на панели инструментов, нажать соответствующую кнопку.
Рисунок Б.5 – Окно регистров ввода/вывода
Окно кодов программы (Disassembly window(CTRL+F11))
В окне кодов программы (см. рис. Б.6) показан дизассемблированный код программы.
Рисунок Б.6 – Окно кодов программы
Окно процессора (Processor (ALT+3))
Это окно (см. рис. Б.7) предоставляет определенную информацию о выполнении программы, включая Счетчик Команд (Program Counter), Указатель Стека (Stack Pointer), флаги регистра состояния (Flags), Счетчик Циклов (Cycle Counter) и др.
Рисунок Б.7 – Окно процессора
Формат программы в AVR Studio
Программа на ассемблере – это текстовый файл, который состоит из мнемоник – символьных обозначений команд микроконтроллера, меток и директив.
Любая строка может начинаться с метки – строки из символов и (или) цифр, которая заканчивается двоеточием.
Метки используются для обозначения текущей строки некоторым именем (меткой) для использования в командах условного или безусловного перехода, а также для обозначения участка памяти для обращения к данным.
Строка исходного текста может иметь один из таких видов:
[метка:] директива [аргументы директивы] [комментарий];
[метка:] мнемоника команды [аргументы команды] [ комментарий];
комментарий;
пустая строка.
Комментарии всегда начинаются из символа ”;”.
Элементы, заключенные в квадратные скобки, могут отсутсвовать. Текст, расположенный после символа “точка с запятой” до конца строки, полностью игнорируется ассемблером.
Примеры записи строк:
Label1: .EQU var1=100 ; директива определения символьного
; имени
; var1, эквивалентной записи”100”
Test: rjmp test ; бесконечный цикл (мнемоника команды
; микроконтроллера)
; пустая строка
Порядок работы в AVR Studio
Создание нового проекта
Запустив AVR Studio в меню Project, выберите пункт New.
Рисунок Б.8 – Создание нового проекта
Как показано на рис. Б.8, в диалоговом окне «Select project name» необходимо ввести имя проекта (см. «Project name»), его местоположение «Location» и тип проекта «Project type». Имя может быть любым стандартным именем файла. Каталог можно написать в соответствующем текстовом поле или выбрать из списка имеющихся папок. Если каталога не существует, то он будет создан без напоминаний.
Все файлы вашего проекта AVR Studio сохраняет в выбранном каталоге.
Тип проекта выбирают из таких соображений:
AVR Assembler: для компиляции кода текста проекта используется встроенный транслятор. Не требует никаких дополнительных настроек. Рекомендуется использовать именно этот тип.
Generic 3rd party C compiler: разрешает вручную настраивать AVR Studio для использования внешних компиляторов.
После ввода всех вышеперечисленных данных для продолжения нажмите кнопку „OK”. Появится окно проекта, изображенное на рис. Б.9.
Рисунок Б.9 – Окно нового проекта
В папках «Assembler Files» и «Other Files» хранятся файлы, связанные с Вашим проектом. На рис. Б.9 они пустые.
Добавление ассемблерного файла в проект может быть реализовано несколькими способами. Можно добавить существующий файл или создать новый.
Создадим новый файл исходного кода программы. Для этого с помощью нажатия правой кнопки мыши на папке «Assembler Files» вызовем контекстное меню, как показано на рис. Б.9 и выберем пункт «Add File...». Появится окно с названием «Add Files to Project». Убедитесь, что Вы находитесь в каталоге своего проекта. В этом каталоге как минимум может быть файл вашего проекта. В нашем случае это – "Demo". В текстовом поле «File name:» введем имени нового файла – "Demo.asm", и нажмем кнопку «Open». Расширение файла – asm следует ввести вручную, поскольку автоматически оно не создается.
Создание файла можно было осуществить с помощью контекстного подменю «Create New File». Тогда появится приблизительно такое же окно как на рис. Б.8, но с названием «Create New File». В этом случае AVR Studio создает файл не в указанной папке (Assembler или др.), а в корневой папке проекта (Target), что не всегда бывает полезным.
В только что созданный файл добавьте код своей программы, например:
;******************************************************
clr r18 ; очистка регистра;
clr r19 ; очистка регистра;
ldi r16,А ; загрузка множителя;
ldi r17,В ; загрузка множимого;
clz ; очистка флага Z;
m1: breq done ; проверка завершения умножения
; (если Z=1, то переход);
add r18,r17 ; суммирование множимого;
brlo m2 ; проверка флага переноса
; (если С=1, то переход);
m3: dec r16 ; декремент множителя;
rjmp m1 ; переход на следующий цикл;
m2: inc r19 ; учет флага переноса
; (инкремент регистра);
rjmp m3 ; переход на пометку m3;
done: rjmp done ; пустой цикл (конец программы).
;******************************************************
Рисунок Б.10 – Окно проекта с рабочим файлом
Дело в том, что если мы добавляем первый файл в новый проект, то AVR Studio обозначает его как входной транслированный файл – «Assembler entry file». И при вызове встроенного транслятора (ассемблера) будет компилироваться именно этот файл, обозначенный красной стрелкой вправо, а остальные, обозначенные синей стрелкой вниз – игнорироваться.
Рисунок Б.11 – Меню «Project»
Для трансляции исходного кода программы в объектный код существует несколько способов. Можно вызвать контекстное меню и выбрать пункт «Assemble», как показано на рис. Б.10, или сделать то же именно через меню «Project» (см. рис.Б.11), или просто нажать «F7».
Появится окно «Project Output» с сообщением об успешной трансляции или ошибках, если они есть. Если трансляция прошла без ошибок, то можно приступать к выполнению кода на встроенному симуляторе или ВСЭ, если он есть.
Необходимо отметить, что для создания hex-файла, который необходим для прошивки (программирования) кристалла, необходимо изменить установки проекта (Project Settings...) см. рис. Б.10. и рис. Б.11. Для этого в окне “AVR Assembler Options” установите “Output file format:” на “Intel Intellec 8/MDS (Intel Hex)”. Теперь каждый раз при вызове транслятора будет создаваться исходный файл с расширением hex и файл с расширением eep, если в коде программы есть сегмент EEPROM-данных.
Выполнение программного кода
Для отладки программы, или, другими словами, для выполнения программного кода в режиме симулятора необходимо, чтобы программа транслировалась без ошибок.
После успешной трансляции выберите из меню «Debug» команду «Trace into» или нажмите «F11», как показано на рис. Б.12. Поскольку ВСЭ отсутствует, AVR Studio предложит определить соответствующий режим программного симулятора (см. рис. Б.13).
Появится окно «Simulator Options», в котором необходимо будет выбрать тип устройства для симуляции. В данном примере это AT90S4433. После нажатия кнопки «ОК» все готово для работы с кодом программы на симуляторе в пошаговом или другом режиме.
Рисунок Б.12 – Меню «Debug»
При этом можно просматривать изменения содержимого регистров (Alt+0) в окне РОН.
Рисунок Б.13 – Окно опций программного симулятора
В окне исходного кода программы, по левую сторону на серой полосе желтая стрелка вправо – указатель программного счетчика. Она указывает на следующую инструкцию, которая будет выполняться (см. рис. Б.14).
Рисунок Б.14 – Меню «View»
Во время выполнения программы, ее можно просмотреть в программных кодах (см. рис. Б.15). Для этого необходимо нажать сочетание клавиш CTRL+F11.
Рисунок Б.15 – Окно кодов программы
Запись проекта и выход из AVR Studio
После окончания работы в AVR Studio можно сохранить проект. AVR Studio сохранит все настройки проекта и восстановит их при следующем запуске проекта. Для записи проекта необходимо выбрать пункт Save из выпадающего меню Project. Для выхода из среды разработки AVR Studio следует выполнить команду “File”–“Exit”.