Tag Archives: mspdebug

Практика использования mspdebug. Процесс становления джедаев

Продолжаем накачивать наши интеллектуальные мускулы.

Подведём итог проделанной работе по поиску неисправности. Мы определили, что в нашей программе неправильно инициализируется регистр P1DIR, и скорее всего не правильно проинциализирован сторожевой таймер. Оба бага предположительно находятся в функции init_system.

В каком файле находится эта функция? Где её искать?

Ну, поскольку наш проект крошечный, то из двух файлов, один из которых мы уже посмотрели и её там точно нет, остаётся одно — указать на другой. Это наверно в школе даунов отметили бы высокой оценкой. Но если проект состоит из нескольких десятков файлов (под сотню), то процесс поиска функции может оказаться весьма увлекательным занятием.

Читать далее

Реклама

Практика использования mspdebug. Светодиодоморгалка

Я создал и отладил небольшой проект на базе платы MSP-EXP430G2 и установленным на неё микроконтроллером MSP430F2001.

IMG_1005

Смысл проекта — моргать двумя светодиодами: зелёным и красным с примерно одинаковой скоростью. Поскольку процесс моргания у светодиодов разный, то частоты моргания не будут точно совпадать. Моргание зелёного светодиода основано на программной задержке, а моргание красного — висит на прерывании от таймера.

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

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

Почему не работает? А на этот вопрос мы сейчас и будем искать ответ.

— От винта! (с) фраза из советского кинофильма «В бой идут одни старики»

Читать далее

Практика использования mspdebug. Отладка без программы

На этот раз программный код для заливки в микроконтроллер нам не понадобится. Сегодня мы потренируемся читать-писать память. А поскольку MSP430 относится к машинкам Фон-Неймановского класса и его регистры периферийных устройств размещаются в едином адресном пространстве, то доступ к этим регистрам точно такой же как и к обычным ячейкам памяти.

И в самом деле, запись байта в память RAM ничем не отличается от записи байта в порт ввода/вывода. Тоже самое касается и чтения. Фокус состоит в том, что к порту обычно что-нибудь подключается, например светодиоды, кнопочки или другие компоненты.

Говоря метафорами, порт — это некая комната в большом здании. Комната имеет двери в общий коридор и имеет окно. Ядро микропроцессора общается с «комнатой» через двери, а внешний мир «смотрит» в комнату через окно.

Продолжая аналогию, можно сказать, что ячейка памяти — это кладовка с одной единственной дверью. Что в ней лежит, внешний мир знать не может. Только ядро процессора имеет право попасть в кладовку — что-то туда положить или взять.

Читать далее

Практика использования mspdebug. Начало

mspdebug — это утилита (программа, работающая в компьютере), которая позволяет много чего полезного делать с микроконтроллером семейства MSP430. Утилита позволяет заливать код во флешь-память, считывать его обратно, записывать в файл. Утилита позволяет запускать и останавливать программу в МК, смотреть и изменять значения регистров, памяти. Устанавливать точки останова, проходить программу по шагам. И многое-многое другое.

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

Читать далее