Программная среда AVR Studio 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программная среда AVR Studio



Вступление

Цель методических указаний – помочь студентам научиться создавать программы для микроконтроллеров. Программа для микроконтроллера – это набор кодов, который записывается в его специальную программную память. Программу пишет разработчик конкретной микропроцессорной системы.

Однако программист никогда не имеет дело с кодами. Часто программист даже и не задумывается о том, какой код соответствует той или иной команде. Дело в том, что для человека программирование в кодах неудобно.

Для человека удобнее оперировать с командами, каждая из которых имеет свое осмысленное название. Поэтому для написания программ человек использует языки программирования.

Язык программирования – это специально разработанный язык, служащий посредником между машиной и человеком. Как и обычный человеческий язык, любой язык программирования имеет свой словарь (набор слов) и правила их написания.

В качестве слов в языке программирования выступают:

- команды (операторы);

- специальные управляющие слова;

- названия регистров;

- числовые выражения.

Главная задача языка однозначно описать последовательность действий, которую должен выполнить микроконтроллер. В то же время язык должен быть удобен и понятен человеку.

В процессе создания программы программист пишет ее текст на компьютере точно так же, как он пишет любой другой текст. Затем программист запускает специальную программу – транслятор.

Транслятор – это специальная программа, которая переводит текст, написанный программистом, в машинные коды, то есть в форму, понятную для микроконтроллера.

Написанный программистом текст программы называется исходным или объектным кодом. Код, полученный в результате трансляции, называется результирующим, или машинным кодом. Именно этот код записывается в программную память микроконтроллера. Для записи результирующего кода в программную память применяются специальные устройства – программаторы..

Все языки программирования делятся на две группы:

- языки низкого уровня (машиноориентированные);

- языки высокого уровня.

Типичным примером машиноориентированного языка программирования является язык Ассемблер. Этот язык максимально приближен к системе команд микроконтроллера. Каждый оператор этого языка – это, по сути, словесное название какой-либо конкретной команды.

В процессе трансляции такая команда заменяется кодом операции. Составляя программу на языке Ассемблер, программист должен оперировать теми же видами данных, что и сам процессор, то есть байтами и битами.

Специфика языка Ассемблер состоит еще и в том, что набор операторов для этого языка напрямую зависит от системы команд конкретного микроконтроллера. Поэтому, если два микроконтроллера имеют разную систему команд, то и язык Ассемблер для каждого такого микроконтроллера будет свой. На лабораторных работах мы будем изучать конкретную версию языка Ассемблер для микроконтроллеров AVR.


Программная среда AVR Studio

 

Общие сведения

 

Отладка программы

 

На лабораторных работах мы учимся создавать программы для микроконтроллеров. Однако для того, чтобы написанная программа превратилась в результирующий код и заработала в конкретном микропроцессорном устройстве, ее нужно оттранслировать и «зашить» в программную память микроконтроллера.

Однако существует еще один важный аспект этой задачи. Дело в том, что при написании реальной программы, особенно если программа реализует достаточно сложный алгоритм, невозможно избежать ошибок. Ошибки могут быть самые разные. От простой синтаксической ошибки в написании какой-либо команды до структурных ошибок, которые иногда трудно обнаружить.

В любом случае при написании программ обычно нельзя обойтись без процедуры отладки. Отладка выполняется на компьютере при помощи специальной инструментальной программы – отладчика. Отладчик позволяет пошагово выполнять отлаживаемую программу, а также выполняет ее поэтапно с использованием так называемых точек останова.

В процессе выполнения программы под управлением отладчика программист может на экране компьютера:

- видеть содержимое любого регистра микроконтроллера;

- видеть содержимое ОЗУ и EEPROM;

- наблюдать за последовательностью выполнения команд, контролируя правильность отработки условных и безусловных переходов;

- наблюдать за работой таймеров, отработкой прерываний.

В процессе отладки программист также может наблюдать логические уровни на любом внешнем выходе микроконтроллера, а также имитировать изменение сигналов на любом входе. Процесс отладки позволяет программисту убедиться в том, что разрабатываемая им программа работает так, как он задумал. Большинство ошибок в программе обнаруживаются именно в процессе отладки.

Существует три основных вида отладчиков:

- программные;

- аппаратные;

- комбинированные программно-аппаратные.

 

Программный отладчик

 

Определение. Программный отладчикэто компьютерная программа, которая имитирует работу процессора на экране компьютера. Она не требует наличие реальной микросхемы или дополнительных внешних устройств и позволяет отладить программу чисто виртуально.

Однако программный отладчик позволяет проверить только логику работы программы. При помощи такого отладчика невозможно проверить работу схемы в режиме реального времени или работу всего микропроцессорного устройства в комплексе. То есть невозможно гарантировать правильную работу и всех подключенных к микроконтроллеру дополнительных микросхем и элементов.

 

Аппаратный отладчик

 

Определение. Второй вид отладчиков – аппаратный отладчик. Основа такого отладчика – специальная плата, подключаемая к компьютеру, работающая под его управлением и имитирующая работу реальной микросхемы микроконтроллера. Плата имеет выводы, соответствующие выводам реальной микросхемы, на которых в процессе отладки появляются реальные сигналы.

 

При помощи этих выводов отладочная плата может быть включена в реальную схему. Возникающие в процессе отладки электрические сигналы можно наблюдать при помощи осциллографа. Можно нажимать реальные кнопки и наблюдать работу светодиодов и других индикаторов.

В то же самое время на экране компьютера мы так же, как и в предыдущем случае, можем видеть всю информации об отлаживаемой программе:

- наблюдать содержимое регистров, ОЗУ, портов ввода-вывода;

- контролировать ход выполнения программы.

В аппаратном отладчике мы можем так же, как и в программном, выполнять программу в пошаговом режиме и применять точки останова. Недостатком аппаратного отладчика является его высокая стоимость.

 

Электронных устройств

 

Существует и третий вид отладчиков. Это полнофункциональные программные имитаторы электронных устройств. Такие программы позволяют на экране компьютера «собрать» любую электронную схему, включающую в себя самые разные электронные компоненты:

- транзисторы;

- резисторы;

- конденсаторы;

- операционные усилители;

- логические и цифровые микросхемы, в том числе и микроконтроллеры.

Такие программы обычно содержат обширные базы электронных компонентов и конструктор электронных схем. Собрав схему, вы можете виртуально записать в память микроконтроллера вашу программу, а затем «запустить» всю схему в работу.

Для контроля результатов работы схемы имитатор имеет виртуальные вольтметры, амперметры и осциллографы, которые вы можете «подключать» к любой точке вашей схемы, «измерять» различные напряжения, а также «снимать» временные диаграммы.

Такие программы в настоящее время получают все большее распространение. Они позволяют разработать любую схему с микроконтроллером или без него, без использования паяльника и реальных деталей. На экране компьютера можно полностью отладить схему и лишь потом браться за паяльник.

Недостатком данного отладчика является то, что он требует значительных вычислительных ресурсов. Особенно в том случае, когда отлаживается схема, включающая как микроконтроллер, так и некоторую аналоговую часть. Кроме того, имитатор не всегда верно имитирует работу некоторых устройств. Однако подобные программы имеют очень большие перспективы.

 

Создание проекта

 

Предположим, что программа AVR Studio установлена на компьютер, запущена и находится в исходном состоянии (все вкладки окон 1 и 2 пусты, окно 3 не содержит открытых файлов). Приступим к созданию нового проекта.

Для этого выберем в меню «Project» пункт «New Project». На экране появится окно построителя. В поле «Project Type:» выбираем тип будущего проекта. Программа предлагает два варианта:

- проект на Ассемблере (Atmel AVR Assembler);

- проект на языке СИ+ + (AVR GCC).

Выбираем Ассемблер. Затем в поле «Project name:» выбираем имя проекта. Например, Progl. Сразу под полем сименем проекта расположены два элемента выбора режимов – так называемые «Чек-боксы» (Check box). По умолчанию оба чек-бокса выбраны (то есть, в соответствующих квадратиках проставлены «галочки»).

Первый чек-бокс (Create initialize file) определяет, нужно ли автоматически создавать главный программный файл. Если у вас уже есть файл с текстом программы на Ассемблере и вы просто хотите создать проект, а затем подключить туда готовый программный файл, снимите соответствующую «галочку». Если вы создаете проект «с нуля», оставьте «галочку» нетронутой.

Второй чек-бокс (Create folder) определяет, нужно ли автоматически создавать отдельный каталог для данного проекта. Если вы заранее уже создали нужный каталог средствами Windows, снимите пометку. Если нет, оставьте. Следующее поле называется «Initial file». Оно должно содержать имя файла, куда будет записываться текст программы. По умолчанию имя файла уже вписано в это поле. Оно соответствует имени проекта. Рекомендуется оставить его без изменений.

Еще одно поле, требующее нашего вмешательства, – это поле «Location». Здесь вы должны указать путь к тому месту на вашем жестком диске, где будет храниться проект. Путь нельзя ввести непосредственно с клавиатуры. Для изменения пути нужно нажать кнопку справа, на которой в качестве названия поставлено многоточие («...»).

Откроется диалог «Select folder», при помощи которого вы и должны выбрать директорию. Просто войдите в нужную директорию и нажмите кнопку «Select». При выборе директории нужно учитывать значение чек-бокса «Create folder». Если там стоит «галочка», то при выборе в качестве Location каталога «c:\AVR\myprog», программа поместит ваш проект в каталог «c:\AVR\myprog\Progl».

На этом можно закончить работу с первым окном построителя. Но прежде, чем нажимать кнопку «Next>>», обратите внимание, что в нижней части окна имеется еще один чек-бокс. Он называется «Show dialog at startup». При выборе этого элемента диалог создания проекта будет автоматически запускаться каждый раз при запуске программы AVR Studio.

Для перехода кследующему этапу построения проекта нажмите кнопку «Next>>». Содержимое окна построителя изменится. Появятся два больших поля под общим названием «Select debug platform and device» (Выбор отладочной платформы и микроконтроллера). В списке Отладочных платформ («Debug platform») перечислены все отладочные платы, которые поддерживает данная программа.

Мы не будем использовать внешних плат, поэтому выберем пункт «AVR Simulator» (Программный имитатор AVR). В поле «Device» выбираем нужный тип микросхемы. В нашем случае это ATiny2313. Теперь все настройки закончены. Для завершения процесса нажмите кнопку «Finish». После нажатия этой кнопки программа создает проект и записывает его в выбранную вами директорию.

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

- собственно файл проекта Progl.aps;

- файл, куда будет помещен текст программы на Ассемблере

Progl.asm.

Файл текста программы автоматически открывается в окне 3. Причем он пока абсолютно пустой. Теперь вы можете приступать к набору этого текста. Если речь идет о программе Progl, то просто наберите текст программы, разработанный для выполнения лабораторной работы, например первой.При наборе текста вы можете пользоваться всеми возможностями, какие обычно предоставляет любой современный текстовый редактор.

Встроенный текстовый редактор программы AVRStudio поддерживает все необходимые сервисные функции:

- выделение текстовых фрагментов;

- вырезание;

- копирование;

- вставку;

- перетаскивание мышью;

- поиск и замену, и многое другое.

Для управления всеми этими возможностями используется стандартный интерфейс, знакомый вам по многим текстовым редакторам, в частности, по популярному редактору Microsoft Word. Набранный тест программы не забудьте записать на диск при помощи команды «Save» меню «File» или при помощи соответствующей кнопки на панели инструментов (). Кнопка [ ] позволяет записать сразу все открытые текстовые файлы.

Для программ, электронные версии которых уже имеются в Интернете, проекты создавать не обязательно. Достаточно скачать файл с электронными версиями программ с нужного сайта, например http://book.microprocessor.by.ru, распаковать архив и поместить его содержимое в любую подходящую директорию.

Например, в директорию c:\AVR\myprog\. После распаковки у вас появится целый набор директорий, в каждой из которых помещен свой проект. Причем архив может содержать не только проекты на Ассемблере, но и на СИ. Любой проект на Ассемблере можно открыть при помощи пункта «Open Project» меню «Project».


Трансляция программы

 

Форматы файлов

 

После того, как текст программы набран и записан на жесткий диск, необходимо произвести трансляцию программы. В процессе трансляции создается результирующий (объектный) файл, который представляет собой ту же программу, но в машинных кодах, предназначенную для записи в программную память микроконтроллера. Результирующий файл имеет расширение hex.

Кроме hex -файла транслятор создает еще несколько вспомогательных файлов. И главное, файл с расширением еер. Этот файл имеет точно такую же внутреннюю структуру, как файл hex. А содержит он информацию, предназначенную для записи в EEPROM. Такая информация появляется в том случае, когда в тексте программы переменным, размещенным в сегменте eeprom, присвоены начальные значения. Если в лабораторных работах этого не делать, то файл с расширением еер во всех проектах будет пустой (будет содержать лишь завершающую строку).

Теперь немного разберемся с форматом файлов hex и еер. В обоих случаях применяется так называемый НЕХ-формат, который практически является стандартом для записи результатов транслирования различных программ. Он поддерживается практически всеми трансляторами с любого языка программирования.

В принципе, программисту не обязательно знать структуру этого формата. Достаточно понимать, что в hex -файле определенным способом закодирована программа в машинных кодах. Именно этот файл используется программатором для «прошивки» программной памяти микроконтроллера. Любой программатор поддерживает hex -формат и распознает записанные туда коды автоматически. Приведем краткое описание hex -формата.

 

Формат НЕХ-файла

 

Если вы посмотрите содержимое такого файла при помощи редактора «Блокнот», то вы увидите, что это текстовый файл, в котором данные закодированы в виде текстовых строк. Ниже приведен пример содержимого hex -файла, полученного в результате трансляции одного из вариантов программы Progl:

:020000020000FC

:100000000FE70DBF00E806BD00E006BD01BB0FEF26

:1000100007BB08BB02BB00E808B900B308BBFDCFB3

:00000001FF

Как видите, данный файл состоит из четырех строк. Первая и последняя строки несут служебную информацию. Наличие первой строки необязательно. Система AVR Studio при трансляции программы всегда добавляет в hex -файл первую строку именно такого содержания. Последняя строка – это стандартный конец для любого hex -файла.

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

Строка начинается с двоеточия. Двоеточие – обязательный элемент, который служит для идентификации hex -формата. Все остальные символы в строке – это шестнадцатеричные числа, записанные слитно без пробелов. Отдельные числа отличают по их позиции в строке. Так первые два знака занимает шестнадцатеричное число, означающее длину цепочки.

В нашем случае длина обеих цепочек равна 0x10 (то есть 16) байт. Следующие четыре символа — это начальный адрес, куда эти байты должны быть помещены. Первая цепочка будет размещена в памяти, начиная с нулевого адреса. Вторая цепочка — с адреса 0x0010. Очередные два знака занимает код вида строки. В интересующих нас строках он равен «00», что означает, что эти строки предназначены для записи данных (в первой строке такой код равен «02», а в последней «01»).

Сразу после кода вида строки начинаются собственно данные. Каждый байт данных занимает два знака. Самые последние два символа — это контрольная сумма. Она рассчитывается по специальной формуле с использованием значений всех байтов цепочки и служит для проверки на отсутствие ошибок.

Процедура трансляции

 

Но вернемся к процедуре трансляции. Для того, чтобы запустить процесс трансляции текущего проекта, нужно выбрать в меню «Build» пункт, который тоже называется «Build», или нажать кнопку . Длительность процесса трансляции зависит от размеров программы. Сразу же после начала процесса вкладка «Build» в окне 2 выходит на передний план. В процессе трансляции сюда выводятся служебные сообщения. К таким сообщениям относятся: сообщения о завершении различных этапов трансляции, сообщения об ошибках (Error), а также предупреждения (Warning).

В готовой отлаженной программе ошибок и предупреждений быть не должно. Если программа обнаружит критическую ошибку (Error), то процесс трансляции будет приостановлен, и результирующие файлы созданы не будут. В этом случае необходимо устранить ошибки и повторить трансляцию.

Естественно, транслятор не в состоянии найти все виды ошибок. Он находит только явные ошибки, которые можно найти автоматически. К таким ошибкам относятся:

- ошибки синтаксиса (неправильное написание имени команды);

- неверное количество параметров у оператора;

- попытка использования неописанных переменных и т. п.

Например, сообщение «Unknown instruction or macro» означает, что найдена «Неизвестная инструкция или макрокоманда».

Предупреждения – это тоже ошибки, но не критические. При возникновении некритической ошибки процесс трансляции завершается как обычно. Все результирующие файлы создаются в полном объеме. Однако прежде чем зашивать такую программу в микроконтроллер, тщательно проанализируйте сообщение и постарайтесь определить, как оно повлияет на результаты работы. В любом случае, лучше изменить программу таким образом, чтобы устранить все предупреждения.

Все сообщения во вкладке «Build» появляются по мере их поступления. Для наглядности каждое сообщение помечено цветным кружочком в начале строки:

- сообщения об ошибках помечаются кружочком красного цвета;

- предупреждения — желтым кружочком;

- сообщения об успешном выполнении каждого очередного этапа трансляции помечаются зеленым кружочком.

Если сообщения не вмещаются в окно, то они скрываются в верхней его части. Однако, используя полосу прокрутки, их всегда можно просмотреть. В случае успешного завершения процесса трансляции в качестве последнего сообщения выводится статистическая информация (см. раздел 1.2).

Каждое сообщение об ошибке во вкладке «Build» содержит точное указание места в программе, где произошла эта ошибка. При этом указывается

- имя файла;

- номер строки;

- фрагмент текста программы, содержащий ошибку;

- ее расшифровка.

Для того, чтобы быстро перейти к фрагменту программы, содержащему эту ошибку, достаточно двойного щелчка по сообщению об ошибке. Окно с текстом программы выйдет на передний план, и в этом окне автоматически отобразится нужный участок текста. На левой границе окна напротив строки, содержащей ошибку, вы увидите синюю стрелочку – указатель ошибки.

Иногда программа неверно определяет место, где возникла ошибка.Это происходит из-за несовершенства анализатора синтаксиса. Дело в том, что очень сложно разработать идеальный алгоритм анализа ошибок. Если в какой-либо строке транслятор показывает ошибку, а вы ошибок не наблюдаете, посмотрите на предыдущие строки. Возможно, ошибка где-то там.

 


Этапы процесса отладки

 

Процесс отладки начинается с перевода программы в соответствующий режим. Если проект открыт, а все его программы записаны и оттранслированы, то для перехода в режим отладки выберите пункт «Start Debugging» в меню «Debug» или нажмите кнопку на панели задач.

Программа начнет процесс подготовки. Процесс длительный. Пока идет подготовка, в нижней части основной панели будет двигаться полоса, показывающая процент выполнения операции. По окончании процесса подготовки программа переходит в новый режим. В окне 1 на передний план выходит вкладка «I/O View» (см. рис. 1.4), которая теперь будет использоваться для просмотра содержимого всех регистров. Причем внешний вид этой вкладки немного изменяется. Для каждого элемента в дереве ресурсов появляется поле, отображающее его содержимое.

В окне 2 на передний план выходит вкладка «Breakpoints and Tracepoints», где теперь будут отображаться все точки останова. В панели инструментов активизируются все инструменты, относящиеся к режиму отладки (до этого они были неактивны). В окне 3 на первый план выходит текст главного программного файла. На левой границе окна этого файла появляется желтая стрелка – указатель текущей выполняемой команды. Указатель установится в начало программы (напротив первой исполняемой команды). Теперь все готово для отладки.

Отладка может выполняться разными методами. Самый простой метод – пошаговое выполнение. Для того, чтобы сделать один шаг, выберите в меню «Debug» пункт «Step into» («Шаг в») либо нажмите кнопку на панели инструментов.

Можно также просто нажать кнопку «F11». В результате программа выполнит одну текущую команду. Указатель текущей команды (желтая стрелка) переместится в следующую позицию. Содержимое регистров изменится в соответствии с выполненной операцией.

Вы можете это проверить, найдя нужный регистр в окне 1. Убедившись, что команда выполнена правильно, делайте следующий шаг. И так далее. При этом вы можете проследить последовательность выполнения операций, правильность выполнение условных переходов и многое другое.

 

 

Рис.1.4 – Изменение содержимого регистров

 

В любой момент вы можете вручную изменить содержимое любого из элементов в дереве ресурсов. Причем можно изменять как содержимое любого отдельного разряда, так и всего регистра в целом. Для изменения содержимого разряда достаточно щелкнуть при помощи мыши по одному из квадратиков, символизирующему нужный разряд (см. рис. 1.4).

При этом состояние квадратика изменится на противоположное (единица изменится на ноль, либо наоборот). Для изменения значения всего регистра необходимо произвести двойной щелчок мышью по изображению содержимого регистра (в шестнадцатеричном виде). Откроется окно содержимого. В этом окне вы можете выбрать одну из четырех форм представления числа (шестнадцатеричное, десятичное, восьмеричное или двоичное) и изменить это значение в выбранном вами формате. Затем нажмите кнопку «Ok» и изменение «запишется» в соответствующий регистр.

Изменяя содержимое регистра, вы можете моделировать различные ситуации. Например, имитировать изменение сигналов на входе порта или принудительно изменять значение счетного регистра таймера, чтобы не ждать, пока он досчитает до нужного значения.

Кроме директивы «Шаг в», имеется еще несколько ее модификаций. Их назначение и способы вызова приведены в табл. 1.1.

 

Таблица 1.1 Директивы пошагового выполнения программы

Название Пункт меню “Debug” Кнопка Горячая клавиша Описание
Шаг в Step into F11 Выполнить очередную команду
Шаг через Step over F10 Выполнить очередную подпрограмму
Шаг из Step out Shift+F11 Завершить текущую подпрограмму
Выполнить до Run to cursor Ctrl+F10 Выполнять с текущей строки и до строки, где стоит курсор

 

Директива «Шаг через» используется в том случае, если при пошаговом выполнении программы встретится команда вызова подпрограммы. Если вы не хотите пошагово выполнять всю подпрограмму, вы можете выполнить ее за один шаг. При этом желательно, чтобы подпрограмма не содержала ошибок.

Директива «Шаг из» применяется в том случае, если вы все же вошли в подпрограмму, но затем поняли, что ее пошаговое выполнение излишне. Выбрав данную директиву, можно за один шаг выполнить все оставшиеся команды подпрограммы.

Директива «Выполнить до» применяется в том случае, когда какая-либо часть программы не оформлена в виде подпрограммы, но ее желательно выполнить за один шаг. В этом случае в конце выбранного фрагмента вы можете установить текстовый курсор (мигающую вертикальную полоску) и выбрать директиву «Выполнить до». Отладчик за один шаг выполнит все команды, начиная с текущей (отмеченной желтой стрелкой) и вплоть до текстового курсора. Команда в строке с курсором выполняться не будет. Она станет текущей (на нее теперь будет указывать желтая стрелка).


Применение точек останова

 

Пошаговый метод отладки удобен для отладки небольших несложных программ или отдельных участков большой программы. Но представьте себе, что ваша программа содержит цикл, который должен быть выполнен большое количество раз. Для того, чтобы проверить правильность выполнения всего этого цикла в пошаговом режиме, вам пришлось бы очень долго щелкать мышкой. В подобных случаях применяются точки останова (Breakpoint).

 

Определение. Точка останова – это специальная метка, которую в отладочном режиме программист может поставить против любой строки программы.

 

Затем программа запускается под управлением отладчика. Но это – не реальная работа. Это лишь имитация работы микроконтроллера. Программа выполняется строка за строкой, пока в очередной строке не встретится точка останова. Обнаружив такую точку, отладчик приостанавливает выполнение программы.

Выглядит это таким образом, как будто за один шаг вы выполнили большой кусок программы. Теперь вы можете снова просмотреть и изменить содержимое любого регистра. А затем продолжить отладку. Причем, вы можете продолжить ее как в пошаговом режиме, так и запустить программу в режиме автоматического выполнения до следующей точки останова.

Для управления точками останова программа имеет несколько встроенных директив, которые показаны в таблице 1.2.

 

Таблица 1.2 – Директивы управления точками останова

Название Пункт меню “Debug” Кнопка Горячая клавиша Описание
Поставить точку останова Toggle Breakpoint F9 Поставить (снять) точку останова в строке, где находится курсор
Убрать все точки останова Remove all Breakpoints   - Убрать все поставленные ранее точки останова
Создать программную точку останова New Breakpoints/ Program Breakpoint   -   - Создать точку останова путем задания программного условия
Создать точку останова по данным New Breakpoints/ Data Breakpoint   -   - Создать точку останова путем задания условия по данным

 

 

Для того, чтобы поставить точку останова в какой-либо строке программы, нужно сначала поместить в эту строку текстовый курсор. Затем выбрать директиву «Поставить точку останова» (см. табл. 1.2). Точка останова выглядит как коричневый кружочек напротив выбранной строки программы на левой границе текстового окна.

Если поместить курсор в строку, где уже есть точка останова, и выполнить еще раз директиву «Поставить точку останова», то точка убирается. Убрать сразу все поставленные точки останова можно при помощи директивы «Убрать все точки останова».

Второй способ простановки точек останова – задание их через меню. Предназначенный для этого пункт «New Breakpoints» меню «Debug» имеет два подпункта. При помощи подпункта «Program Breakpoint» можно устанавливать программные точки останова. То есть точно такие, какие мы ставили предыдущим способом.

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

Для этого вам необходимо заполнить поле «Break execution after: —hits» («Остановить выполнение после: — проходов»). Если число в этом поле не равно нулю, то программа остановится в данной точке останова не с первого раза, а лишь тогда, когда пройдет через нее указанное количество раз.

Если вы установили вашу точку останова не через меню, а напрямую в тексте программы, вы все равно можете вызвать описанный выше диалог и изменить в нем количество проходов, щелкнув; мышью по строке с описанием нужной точки останова во вкладке «Breakpoints and Tracepoints».

При помощи подпункта «Data Breakpoint» пункта «New Breakpoints» меню «Debug» можно задавать точки останова по данным. При выборе этого пункта меню открывается диалог, в котором вы можете выбрать любую из переменных вашей программы или любой ресурс микроконтроллера (из открывающегося списка) и поставить точку останова по обращению к этой переменной (ресурсу).

Программа позволяет выбрать целый ряд условий, при которых наступит останов программы. По умолчанию останов происходит при любом обращении к этой переменной как в режиме чтения, так и в режиме записи. Вы можете выбрать другое условие. Например, при равенстве переменной определенному значению. Выбор условия производится при помощи поля «Break when:» («Остановиться если:») и поля «Access type:» («Тип доступа»). Имя переменной выбирается при помощи поля «Location».

Диалог простановки точек останова обоих видов можно вызывать не только через меню. В верхней левой части вкладки «Breakpoints and Tracepoints» для этого имеется специальная кнопка.

 

 

После того, как вы проставили все точки останова, вы можете запускать программу в режиме автоматического выполнения. Для управления отладчиком в этом режиме программа AVR Studio также имеет несколько специальных директив (см. табл. 1.3). Запуск автоматического выполнения программы производится при помощи директивы «Пуск».

Пока программа находится в режиме автоматического выполнения, новое состояние регистров не отображается. Указатель текущей команды также отсутствует. В нижней строке главной панели программы в правой ее стороне находится индикатор состояния. В режиме останова это желтый кружочек с минусом посередине. Слева от него находится слово «Stopped» (Остановлено). В режиме автоматического выполнения программы желтый кружочек превращается в зеленый с плюсом внутри. Вместо слова «Stopped» появляется слово «Running» (Запущено).

 

Таблица 1.3 Директивы управления процессом отладки

 

Название Пункт меню “Debug” Кнопка Горячая клавиша Описание
Запустить Run F5 Запуск автоматического выполнения программы с текущей команды
Остановить Break Ctrl+F5 Остановка автоматического выполнения программы
Сброс Reset Shift+F5 Исходное состояние (сброс микроконтроллера)
Закончить отладку Stop Debugging Ctrl+Shuft+F5 Закончить отладку

 

Если вы неправильно поставили точку останова или забыли ее поставить, программа будет находиться в режиме автоматического выполнения бесконечно долго. Для досрочной остановки программы используется директива «Остановить». Если в процессе отладки программы понадобится начать все сначала (симитировать сброс микроконтроллера), это можно сделать при помощи директивы «Сброс». По окончании отладки программы необходимо перейти в режим редактирования. Для этого служит директива «Закончить отладку».


 

Исправление ошибок

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

В табл. 1.4 приведены все директивы работы с закладками.

Для создания новой закладки нужно установить в нужной строке текстовый курсор и выбрать директиву «Поставить закладку». При повторном вызове этой директивы в той же строке, закладка убирается. Проставив несколько закладок, можно передвигаться по ним при помощи директив «Перейти к следующей закладке» и «Перейти к предыдущей закладке». При помощи соответствующей директивы можно убрать все закладки.

 


 

Таблица 1.4 – Директивы работы с закладками

 

Название Пункт меню “Debug” Кнопка Горячая клавиша Описание
Поставить закладку Toggle Bookmark Ctrl+F2 Поставить (снять) закладку в строке, где находится курсор
Поставить к следующей закладке   - F2 Переместить курсор к следующей строке с закладкой
Перейти к предыдущей закладке   - Shift+F2 Переместить курсор к предыдущей строке с закладкой
Убрать все закладки Remove Bookmarks Ctrl+Shift+F2 Удалить все поставленные ранее закладке

 


 

 

ЛАБОРАТОРНЫЕ РАБОТЫ


2.1 Лабораторная работа №1

 

Микропроцессорное управление светодиодным индикатором

в простейшем режиме коммутац



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 1464; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.235.196 (0.111 с.)