Большинство Ардуин построено на микроконтроллерах типа ATmega, поэтому при желании они могут программироваться и отлаживаться с помощью стандартных средств для таких контроллеров. Если отладка посредством консоли не вызывает у вас никакого удовольствия, то можно попробовать другой способ отладки. Например, взять AVR JTAGICE3. Только вот не со всеми Ардуинами отладчик будет общаться стандартным образом через коннектор ISP (In-System-Programming).

Коннектор Atmel ISP сочетает в себе линии шины SPI и сигнал сброса RESET. SPI используется для загрузки прошивки, а благодаря RESET реализуется система отладки debugWire компании Atmel. debugWire представляет собой довольно необычный протокол, в котором для отладки используется только одна линия RESET. ATmega328p поддерживает debugWire, поэтому на Arduino UNO для отладки можно использовать ISP-коннектор. Но Arduino Micro основан на чипе ATmega32U4. В документации на него нет никаких упоминаний о debugWire, зато JTAG в списке имеется.
В JTAG используются 4 линии ввода/вывода. Если посмотреть на схему Arduino Micro, то можно увидеть, что линии JTAG (TDI/TDO/TMS/TCK) мультиплексированы с аналоговыми выводами A0-A3, поэтому при необходимости применения JTAG этими выводами придется пожертвовать.

JTAGICE3 имеет разъем с 10 линиями, назначения которых показаны ниже:

Поэтому нужно просто сделать адаптер для этих линий:

Можно сделать специальный JTAG-шилд:

В итоге получится такой бутерброд:

Для отладки нужно еще не забыть включить фьюз-бит JTAGEN.

Теперь с микроконтроллером ATmega32U4 можно без проблем общаться через JTAG.
Перевод © digitrode.ru