Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp_avr_2009.doc
Скачиваний:
50
Добавлен:
21.04.2023
Размер:
819.2 Кб
Скачать

4.2. Отладка программы в avr studio 4.16

Программная среда AVR STUDIO 4.16 позволяет производить отладку программ для микроконтроллеров семейства AVR, написанных на языке ассемблера и языке «Си». В данном разделе будет рассмотрено выполнение отладки программ, написанных на ассемблере.

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

Запускаем ассемблирование нажатием кнопки «Assemble and run» (ассемблировать и запустить). Происходит ассемблирование текста программы и выводится сообщение о наличии ошибок. Недоступные ранее кнопки становятся доступными.

Если мы хотим добавить к файлам, которые будут содержаться в папке проекта, листинг программы, то требуется сделать следующее: в меню «Project» выбрать пункт «Assembler Options» (опции ассемблера). Откроется окно, представленное на рис. 12, в котором требуется поставить галочку на опцию «Create List File».

Перед началом отладки требуется настроить тактовую частоту микроконтроллера, для этого в меню «Debug» выбираем опцию «AVR Simulator Options». В открывшемся окне выбираем требуемый параметр «Frequency» (частота).

Отладка может выполняться в пошаговом режиме или в режиме останова по контрольным точкам. В пошаговом режиме возможны следующие варианты: «Step Into», «Step Over», «Step Out», «Run to cursor».

Рис. 12. Вкладка «Опции ассемблера»

«Step Into» – (шаг в) выполнить очередную команду;

«Step Over» – (шаг через) выполнить очередную подпрограмму;

«Step Out» – (шаг из) завершить текущую подпрограмму;

«Run to cursor» – выполнять с текущей строки до строки, где стоит курсор.

При отладке программы кроме окна текста программы мы будем использовать окно процессора «Processor» и окно просмотра устройств ввода-вывода «I/O View».

В окне «Processor» отображаются следующие параметры:

«Program Counter» – программный счетчик, показывающий адрес команды, которая будет выполняться;

«Stack Pointer» – регистр указателя стека, определяющий "верхушку" стека (адрес RAM, где размещается начало стека);

Содержимое регистровых пар X, Y, Z;

«Cycle Counter» – счетчик циклов, показывающий количество циклов с момента запуска программы;

«Frequency» – тактовая частота микроконтроллера;

«Stop Watch» – часы, показывающие время выполнения программы. Могут быть в любой момент сброшены в ноль, и таким образом можно измерять время выполнения любого фрагмента программы или одной команды;

«SREG» – регистр состояния программы, содержащий флаги операций и биты управления программой. Любой бит этого регистра может быть изменен простым нажатием левой кнопки мыши;

«Registers» – отображает содержимое регистров общего назначения. Содержимое любого регистра может быть изменено. Существует еще одно окно для отображения содержимого регистров общего назначения (в меню «View» выбираем «Register»).

В окне просмотра устройств ввода-вывода «I/O View» отображаются все ресурсы микроконтроллера. Пункт меню «CPU» содержит регистры управления и статуса микроконтроллера. Все остальные регистры отображают содержимое устройств ввода-вывода. Каждый регистр ввода-вывода отображается как байт, но при нажатии на знак «+» может отображаться как совокупность отдельных бит. Каждый бит может быть установлен или сброшен пользователем.

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

Рассмотрим методику отладки программы в режиме симуляции:

Создадим новый проект. В окне программы напишем исходный текст программы, приведенный ниже, и выполним ассемблирование.

Пример 1:

START: wdr ; начало программы

ldi r16, $01 ; загрузить в регистр R16 константу 01H

ldi r17, $00 ; загрузить в регистр R17 константу 00H

mov r17, r16 ; копировать содержимое регистра R16 в регистр R17

rjmp START ; переход на метку

Пояснения к программе:

Запуск программы происходит с метки «START:». Команда «wdr» сбрасывает сторожевой таймер, если он активирован. В регистр R16 загружается константа 01H, а в регистр R17 загружается константа 00H. Содержимое регистра R16 копируется в регистр R17. Затем происходит переход на начало программы, т. е. на метку «START:».

Выполним отладку приведенной выше программы:

Для отладки понадобятся окно программы, окно процессора («Processor») и окно регистров общего назначения («Registers»).

Перед запуском программы (рис. 13): «Program Counter» – программный счетчик будет показывать нулевой адрес команды (0х000000); «Cycle Counter» – счетчик циклов показывает количество циклов, равное нулю; в окне программы желтая стрелка будет показывать на первую команду.

Рис. 13. Окно процессора перед запуском программы

При нажатии на кнопку «Step Into» (шаг в) происходит следующее:

– желтая стрелка переходит на следующую команду;

– «Program Counter» становится равным 0х000001;

– «Cycle Counter» – счетчик циклов показывает 1.

Следующей командой является «ldi r16, $01» (загрузить в регистр R16 константу 01H). После нажатия на кнопку «Step Into» произойдет следующее:

– желтая стрелка переходит на следующую команду;

– «Program Counter» становится равным 0х000002;

– «Cycle Counter» – счетчик циклов показывает 2;

– в окне регистров содержимое R16 становится равным 01Н и выделяется красным цветом.

Остальные команды выполняются аналогично, кроме команды «rjmp START» (переход на метку). При выполнении этой команды в программный счетчик («Program Counter») заносится новое содержимое, равное 0х000000, и происходит безусловный переход на этот адрес.

В приведенном примере пошаговой отладки не использовались устройства ввода-вывода. Отладка программы с их использованием аналогична рассмотренной программе, но требуется использовать окно портов ввода-вывода («I/O View»).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]