Записная книжка разработчика

Мои проекты

Об отладке Arduino и VisualMicro

| Comments

Решил поиграться с Arduino. Для того, чтобы писать и отлаживать код, решил поставить что-либо более приспособленное для этой цели, чем Arduino IDE. Первое, что пришло в голову, это Eclipse + avr-gcc. Увы, настроить эту связку очень непросто.

В итоге без проблем установился только Arduino Eclipse Plugin отсюда: http://www.baeyens.it/eclipse/. Но, к сожалению, он не имеет возможности установки breakpoint-ов и просмотра переменных в программе.

Второй попыткой стала связка Microsoft Visual Studio 2012 и плагина Visual Micro. Всё поставилось без проблем (подсказка: на VS2013 плагин не ставится). Для наиболее простой установки плагина на VS2012 нужно сделать следующее: Установить Visual Micro, в VS вызвать add-in manager (меню Tools), в нем поставить чекбокс на Visual Micro Arduino. Потом идём в папку установки Visual Micro (например, C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino) и запускаем MicroManager.exe. Нажимаем на кнопку Reset напротив надписи Visual Studio 2012. Установка готова.

Открываем новый скетч (File->New->Scetch Project), копируем что-нибудь из примеров, подключаем Arduino и нажимаем F5. Скетч компилируется и загружается в ардуино. Теперь о точках останова.

Для того, чтобы все возможности отладки работали, выбираем проект в SolutionExplorer, в окне Properties ставим Misc->(MicroDebug) = Full. Также можно настроить раздел Micro Debug Reporting, если вы хотите видеть состояние дискретных и аналоговых портов.

Ставим брейкпоинт, как обычно, и снова загружаем код в плату по F5. Код загружается и останавливается на брейкпоинте. Для того, чтобы продолжить выполнение кода, нужно снова нажать на F5. Теперь самое интересное. При запуске появляется окно Test | Expressions, в котором можно просматривать значения переменных и выражений, но оно пустое. Для того, чтобы в нем отображались значения переменных в точке останова, нажимаем правой кнопкой мыши на красный кружочек, нажимаем When Hit..., ставим галочку на "Print a message", и вписываем, например, следующее: i={i=?}, n={n=?}, где i и n - имена переменных, которые нам нужно просматривать. Снова загружаем код в плату, всё работает, значения переменных отображаются.

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

Нажмите на картинку для увеличения.