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


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


Пример

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

Ступив на следующую линию, вы увидите, что 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 свернуть / развернуть