JTAG-адаптер для Arduino Micro

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-7.jpeg

Коннектор 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 этими выводами придется пожертвовать.

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-1.png

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-2.png

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-3.png

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-4.png

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-5.png

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

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/75-jtag-adapter-dlya-arduino-micro/images/jtag-adapter-dlya-arduino-micro-6.png

Теперь с микроконтроллером ATmega32U4 можно без проблем общаться через JTAG.