Отладка Arduino через debugWire (Atmel Studio и AVR Dragon)

В этой статье поговорим о том, как отлаживать программы на плате Arduino UNO с помощью debugWire. Я частенько использую эту платку или Nano для отладки своих программ в Atmel Studio (использовать Arduino IDE у меня рука не поднимается). И так начнем.

Что можно сделать с помощью debugWire?

Прочитать память контроллера, выполнить пошаговую отладку кода, установить точки останова программы, прочитать регистры и значения на портах ввода/вывода и т.п.

Что для этого будет необходимо?

— Arduino Uno
— Atmel Studio 6
— AVR Dragon программатор-отладчик

Подготавливаем железо

В даташите на Atmega328 говорится:

«Конденсаторы, подключенные к пину RESET, должны отключены при использовании debugWire. Все внешние источники сброса должны быть отключены»

Если проверить схему Arduino Uno, можно увидеть, что к RESET подключен конденсатор 100нФ. В старых версиях Arduino необходимо было снять этот конденсатор для отключения RESET. На новых платах есть специальная перемычка, которая может быть разрезана и запаяна вновь, если потребуется.

Подготовка софта

Просто компилируем код в Atmel Studio, нет необходимости заливать программу отдельно через AVR DUDE, AVR Dragon сам сделает это через debugWire.

Подключаем железо

Подключаем ISP от AVR Dragon к ISP Arduino Uno. Обратите внимание, что контакт 1 подключается к PIN1 на другом устройстве, т.е. MISO подключается к MISO. AVR Dragon и Arduino запитываются каждый через свой USB разъем. В настройках выбираем использовать AVR Dragon в качестве отладчика.

Atmel studio debugwire arduino

Открываем меню программирования Tools > Device Programming

Atmel studio debug wire arduino

Внимание «шьем» фьюзы

Собственно устанавливаем фьюз-бит DWEN. В даташите также сказано что LOCK биты не должны быть запрограммированы.

Atmel studio фьюзы

Запускаем debugWire

1. После того как прошили фьюзы временно отключаем питание Arduino Uno.
2. Устанавливаем debugWire как интерфейс для программирования и отладки

3. Жмем «Start Debugging and Break» или Alt+F5. Можно просто нажать F5, а уже потом точки останова расставить. Отладка запускает прошивку тоже.
4. Отлаживаем программу, устанавливаем где надо точки останова, наблюдаем за регистрами и портами ввода-вывода.
5. Останавливаем отладку Ctrl+Shift+F5, изменяем код и возвращаемся к пункту 3.
6. Жмем меню «Debug > Disable debugWIRE» Это меню доступно только во время отладки, так что, если что жмем снова F5. После это DWEN сбрасывается и можно снова использовать ISP.
Вот и все.

Обсуждение статьи на форуме http://radiotech.kz/threads/otladka-arduino-cherez-debugwire-atmel-studio-i-avr-dragon.299/

8 Ответов в “Отладка Arduino через debugWire (Atmel Studio и AVR Dragon)

  1. Если статья написана для ардуинщиков — то дебильная!!!
    Что такое Arduino UNO и Arduino IDE я знаю и пользоваться умею.
    Что такое Atmel Studio и debugWire я НЕ знаю. Сложно приложить фотку или скриншот?
    «Просто компилируем код в Atmel Studio, нет необходимости заливать программу отдельно через AVR DUDE, AVR Dragon сам сделает это через debugWire.» Шедеврально!
    1) Код ==скетч? или всю прогу пишем в Atmel Studio?
    2)AVR DUDE — что это такое?
    3)AVR Dragon — что это такое?

    1. Это такой троллинг что ли? Если нет, то мне трудно даже представить зачем вам эта статья, вы уже все знаете, не стоит узнавать что-то больше, прошу вас!

    2. Интернет — открытая система, не нравится тут — иди на другой ресурс.
      Гуглом пользоваться не пробовал?
      там много интересного можно узнать.
      беда ардуино в том, что научившись что то делать в песочнице (не далее простеньких примеров и банальных задачек) «разработчик» считает, что все знает ( тут описано https://ru.wikipedia.org/wiki/Эффект_Даннинга_—_Крюгера ).
      прокачивайтесь и вам будет стыдно за ваши комментарии.

    3. У тебя оперативка только 2 слова тянет, дальше заголовок не читается. Далее получается ардуинщики это типа такая элита, и статьи для них в большинстве своем состоят из картинок, говори только за себя)

  2. Уберите из названия статьи слово Arduino, а то бред какой-то получается

    1. А что именно в слове Arduino вас смущает?

  3. debugWire классная штука, когда нет в чипе JTAG контактов. Пользовался успешно.
    Ардуино экзотика, потому как нет прямого способа глубокой отладки(только косвенно!).
    Было бы здорово тут увидеть процесс перевода скетчей в пригодный текст для Studio(лучше IAR). И тогда далее было бы понятно как действовать.

  4. «Просто компилируем код в Atmel Studio»
    КАКОЙ НАХ КОД?

Комментарии отключены.