Уроки MSP430 LaunchPad. Урок 06: Избавляемся от ошибок

Отладчик MSP430, один из самых полезных инструментов, при разработке ваших проектов. Давайте рассмотрим, как использовать его основные функции. Загрузите вашу программу-мигалку, и запустите отладчик, но в этот раз не жмите [Run] пуск, оставьте программу в застывшем состоянии. Ваш экран должен выглядеть примерно как на картинке сверху. Обратите внимание на несколько моментов. По умолчанию, открыто шесть окон. Самое правое “Cheat Sheets”, дает подсказки и помощь, если они вам нужны. Можете просто его закрыть, если же оно вас по-настоящему раздражает, просто выберете в нем [Disable All Cheatsheets].



Пять оставшихся окон “Debug” отладка, “Variables” переменные (на скриншоте обозначено как “Local” локальные), текст программы, “Dissasembly” дизассемблер и “Consol” консоль. На консоль выводятся ошибки и замечания компиляции и загрузки, а также, иногда, куски самого кода. Окно текста программы, с ним все ясно, просто обратите внимание на подсвеченную строчку: void main(void) { и стрелку перед ней. Она указывает на место, где сейчас находится отладчик. Когда вы впервые загружаете код в флеш-память чипа, он сразу после включения замирает на начале программы. Окно переменных, показывает текущие значения переменных программы, и, как мы увидим далее, регистры MSP430. Окно отладчика так же показывает всю иерархию файлов проекта, но т.к. у нас только один файл с исходником, нам это не очень нужно.

Обратите внимание на ряд иконок окна отладчика. Вы можете увидеть иконку [Run] пуск. Другие, важные иконки рядом с [Run], это [Halt] стоп (похожа на кнопку паузы, она недоступна, пока отладчик стоит, и станет доступна после нажатия [Run]). Далее [Terminate All] остановить все. Эти три кнопки, управляют отладчиком, так же как кнопки [Пуск], [Пауза] и [Стоп] управляют музыкальным плеером. Далее идет ряд из стрелок, где первая [Step Into] шаг внутрь. Мы ее будем использовать сегодня. За стрелками иконка похожая на чип с двумя зацикленными стрелками. Она сбрасывает процессор в MSP430 и возвращает отладчик в самое начало.

Пример


До начала отладки нашего кода, давайте уменьшим число циклов мигалки до 6. Потом поймете, зачем. Просто найдите в коде число 60000, и поменяйте его на 6. Сверху окна CСS вы можете найти такие же иконки, как и в среде компилятора. Следом за иконкой [Build Active Project] компилировать текущий проект, иконка [Rebuild Active Project] перекомпилировать текущий проект. После того, как вы внесли изменения в код, нажмите иконку перекомпиляции и перезагрузите обновленный код в MSP430. (Если вы собираетесь внести значительные изменения в текст программы, лучше остановить отладчик и выйти в среду компилятора). Вернитесь вверх, и скажите CCS перезагрузить код в ваш микроконтроллер, и отладчик запустится с начала.

Теперь мы используем кнопку отладчика [Step Into] шаг внутрь, что бы пройтись по всему коду, шаг за шагом. Одно нажатие этой кнопки, и мы видим, что стрелка перепрыгнула через строку, и встала напротив WDTCTL. Вы могли заметить, что переменная счетчика цикла, уже появилась в окне локальных переменных (Local Variables). CCS загружает информацию о переменных, автоматически, до начала отладки. Ее значение в данный момент может быть абсолютно случайным, и бесполезно для нас. Мы скоро вернемся к этому окну.

До того, как мы сделаем «шаг внутрь» строки WDTCTL, откроем еще одно полезное окно. Выберите в меню View → Registers, и вы увидите еще одно окно переменных со всеми регистрами вашего микроконтроллера. (Невероятно полезная для обучения штука! Мы будем широко использовать ее, когда будем изучать периферию MSP430, запомните как открыть это окошко.) Внизу списка регистров, есть Watchdog_Timer сторожевой таймер. Откройте его секцию и найдите регистр WDTCTL. Отладчик показывает его текущее значение – 0x6900. Откройте секцию регистра WDTCTL, чтобы увидеть отдельные биты. Все они установлены в 0. Это обычная установка для сторожевого таймера, она приводит к периодическому перезапуску микроконтроллера. Теперь сделаем «шаг внутрь» вашего кода и посмотрим, что произойдет.

Ступив на следующую линию, вы увидите, что WDTHOLD, принял значение 1 (и покраснел, что означает, что на этом такте произошло изменение переменной) и значение WDTCTL теперь 0x6980. Вы можете вспомнить, что изменение сторожевого таймера требует пароля 0x5a. Когда же вы читаете байт пароля WDTCTL, он возвращает 0x69.

(Хотите насильно перезапустить ваш код? Попытайтесь написать WDTCTL = WDTCTL. Чтение WDTCTL вернет значение, которое не является верным паролем, и вы попытаетесь записать некорректный ключ в регистр. В такой ситуации MSP430 делает рестарт.)

Дальше можете найти регистры порта P1 и шагнуть через две строчки кода. Отладчик должен быть сейчас прямо на строке, где переключается светодиод, внутри бесконечного цикла. Прежде, чем идти дальше, выберете окно с локальными переменными. Там, по-прежнему должно быть случайное значение. Далее шагните на строчку переключения светодиода, он должен загореться на плате, а мы оказываемся внутри цикла задержки. Снова сделайте шаг отладки, отладчик останется на той же строке кода, но мы можем заметить, что переменная, в окне локальных переменных, поменяла свое значение. Счетчик увеличивает свое значение на 1, каждый раз, когда мы жмем [Step Into]. Когда он достигает значения count==6, отладчик переходит на следующую строчку программы. Еще шаг, и мы возвращаемся к переключению светодиода. (Рады, что поменяли 60000 на 6?) Вы можете продолжить шагать по коду, пройти весь цикл задержки, пока диод погашен, вернуться снова, и повторить сколько угодно раз. В любой момент, нажав [Run] пуск, вы можете предоставить MSP430 самому себе. Если захотите продемонстрировать кому-либо, что ваш LaunchPad работает, не забудьте увеличить длину цикла задержки. MSP430 работает достаточно быстро, что бы вы не заметили частоту мигания с задержкой в 6 циклов. =)

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

Упражнение: Попробуйте тот код, который вы писали для упражнения Урока 04. Он работает именно так, как вы задумали? Используйте отладчик, что бы пройтись пошагово по всему коду (не забудьте уменьшить циклы задержки) убедитесь, что все работает как должно.

Оригинал урока на английском: Tutorial 06: Getting the Bugs Out
  • +11
  • 17 ноября 2012, 04:38
  • Tabke

Комментарии (1)

RSS свернуть / развернуть
Спасибо за статью. Давно искал нечто аналогичное по MSP430.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.