Программирование микроконтроллеров 1986ВЕ9x компании Миландр. Контрольные вопросы для самопроверки. Предназначено для студентов технических высших учебных заведений очной и заочной формы обучения, аспирантов, инженерно-технических работников
47 Рисунок 1.20 – Главное окно во время отладки программы Сейчас программа еще не начала свое выполнение. Если выполнить пункт меню Debug – Run (кнопка ), то программа будет выполняться до точки останова или непрерывно, если таких точек нет или они недостижимы. Чтобы приостановить выполнение программы, выполним пункт меню Debug – Stop (кнопка ). Программа приостановится в самом неожиданном месте. При этом автоматически откроется вкладка с кодом, на котором произошла остановка. Оператор, на котором остановилось выполнение, будет помечен маркером . Чтобы продолжить выполнение нужно выбрать Debug – Run. Для выхода из режима отладки и возврата к обычному редактированию программы следует снова выполнить пункт Debug – Start/Stop Debug Session. Иногда перед этим может потребоваться приостановить выполнение программы (Debug – Stop). Для создания точки останова следует установить курсор на требуемый оператор и нажать F9. То же самое доступно через меню Debug – Insert/Remove Breakpoint. Удобно также ставить точки останова, щелкая по полю слева от номера соответствующей строки. Точка останова помечается красным кружком (рисунок 1.21).
48 Рисунок 1.21 – Создание точек останова Попытка повторного создания точки останова на строке, где она уже есть, приводит к удалению ранее назначенной точки. Можно одним разом удалить все ранее созданные точки останова, выполнив пункт меню Debug – Kill All Breakpoints. Также можно временно отключить все точки останова: Debug – Disable All Breakpoints. Включать их потом придется только по отдельности: Debug – Enable/Disable Breakpoint. Для тренировки поставим точку останова, как показано на рисунке 1.21. Начнем процесс отладки, если это еще не сделано (Debug – Start/Stop Debug Session). Выберем вкладку Project вместо Registers в левой части окна и откроем модуль led.c. Найдем строку U_LED_Toggle (U_LED_0_PIN) в функции U_LED_Task0_Function и создадим на ней точку останова. Запустим программу (Debug – Run). Вскоре программа остановится на том месте, где мы задали точку останова (рисунок 1.22). Нажимая кнопку F5, будем запускать программу повторно, наблюдая, как через мгновение после нажатия программа вновь остановится на той же строке. При этом красный светодиод LED0 на плате будет то загораться, то гаснуть. Рисунок 1.22 – Использование точек останова
49 Так происходит потому, что в функции U_LED0_Task_Function организован бесконечный цикл, в котором после паузы в 500 мс (миллисекунд) состояние светодиода LED0 меняется на противоположное. В штатном режиме работы это выглядит как мигание светодиода. Для пошагового выполнения программы можно использовать следующие действия, хорошо известные программистам и доступные в любой современной системе программирования: Debug – Step ( ) – выполнить оператор с заходом внутрь функции; Debug – Step Over ( ) – выполнить оператор без захода внутрь функции; Debug – Step Out ( ) – выполнить код до выхода из функции. К примеру, выполним Debug – Step и попадем внутрь функции U_LED_Toggle (рисунок 1.23). Рисунок 1.23 – Пошаговая отладка Если снова выполним Debug – Step, то попадем внутрь библиотечной функции PORT_ReadInputData (рисунок 1.24). Рисунок 1.24 – Продолжение пошаговой отладки Выполним Debug – Run to Cursor Line, чтобы дойти до конца этой функции (хотя он и так близок), а затем Debug – Step Out для возврата из нее. Таким образом, на любом шаге можно просматривать значения переменных, находящихся в области видимости, регистров, участков памяти. Подробней об этом будем говорить в последующих разделах.
50 Задание Не забудьте выполнить резервное копирование проектов, описанное в разделе 1.1. Это необходимо, чтобы не портить исходные проекты. 1. В проекте Lab1_1 сделайте так, чтобы один светодиод мигал с частотой 4 Гц, а второй – с частотой 0,5 Гц. Пояснение. Для этого ознакомьтесь с содержанием модуля led.c и его заголовка led.h. Обратите внимание на программную реализацию мигания, понятие частоты и ее зависимости от периода сигнала. 2. В проекте Lab1_2 нужно вывести на индикатор бегущую строку с любым словом или словосочетанием на русском языке, состоящим из количества символов в диапазоне от 8 до 16. Строка должна находиться в самом низу дисплея и двигаться со скоростью в два раза большей, чем начальная. Пояснение. Для этого ознакомьтесь с содержимым модуля lcd.c. В заголовке mlt_font.h вы найдете кодировку русских букв. Там же приведены изображения всех символов шрифта. Контрольные вопросы 1. Как подключить отладочную плату к компьютеру? 2. Какие основные элементы имеются на отладочной плате? 3. Как подготовить проект к загрузке в микроконтроллер, и что при этом происходит? 4. Как загрузить программу в микроконтроллер, и что при этом происходит? 5. Как запустить процесс отладки программы? 6. Как поставить точку останова? 7. Какие действия используются при пошаговой отладке? 8. Как называется микроконтроллер, который применялся в работе? 9. Сколько флеш-памяти программ и сколько оперативной памяти данных доступно в микроконтроллере, используемом в работе? 10. Что такое HEX-файл?