Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическое занятие №11.doc
Скачиваний:
5
Добавлен:
26.11.2018
Размер:
5.55 Mб
Скачать

2 Практическая часть

  • Рассмотрел методы отладки ППО МК серии МС68

  • Выполнил примеры отладки ППО МК серии МС68.

  • Проанализировал результат отладки ППО МК серии МС68

Процесс отладки начинается с перевода программы в соответствую­щий режим.

то для перехода в режим отладки выберите пункт «Start Debugging» в меню «Debug»

В окне на передний план выходит вкладка «I/O View» которая теперь будет использоваться для просмотра содержимого всех регистров

окне 2 на передний план выходит вкладка «Breakpoints and Tracepoints», где теперь будут отображаться все точки останова.

В панели инструментов активизируются все инструменты, относящиеся к режиму отладки (до этого они были неактивны).

Пример Шаг в, Шаг через, Шаг из, Выполнить до

Отладка может выполняться разными методами:

Самый простой метод— пошаговое выполнение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выбор условия производится при помощи поля «Break When» («Остано-виться если:») и поля «Access type:» («Тип доступа»). Имя переменной выбира-ется при помощи поля «Location».

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

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

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

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

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

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

таблица 3.

Просмотр и изменение содержимого введенных переменных

Для оперативного просмотра и изменения содержимого введенных переменных в процессе отладки можно открыть специальное окно. Для этого достаточно выбрать пункт «Watch» в меню «View». Окно имеет четыре вкладки. Поэтому можно иметь четыре разных набора переменных.

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

Допустим, вы уста­новили курсор на переменную temp Тогда в открывшемся меню вы увидите пункт «Add Watch »: «temp ». Выберите этот пункт, и переменная будет включена в список «Watch».

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

Память данных (Data), ЕЕPROM или лаже содержимое РОН или портов ввода/вывода.

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

Если необходимо видеть одновременно содержимое сразу нескольких видов памяти, то можно открыть второе и даже третье подобное окно. Для этого надо выбрать пункт «Memory2» или «Memory 3» в меню «View».

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

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

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

Редактор программы AVR Studio дает полный спектр стандарт­ных средств редактирования.

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

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

Директивы работы с закладками таблица 4.