Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать — избавлять программу от лажи :-) прим. автора) Кто-то использует для отладки USART, кто-то цепляет на свободную ногу мк светодиод, кто-то записывает отладочные данные в EEPROM итд. Одним словом вариантов тут масса. Но самым удобным способом отладки на мой взгляд, является отладка с использованием специальных устройств называемых отладчиками. Отладчик позволят построчно исполнять программу зашитую в микроконтроллер, ставить точки останова. В процессе отладки программисту доступны все регистры микроконтроллера. Так же с помощью него можно прошить микроконтроллер и изменить фьюзы.
Представляю вашему вниманию отладчик JTAG ICE:

Житаг штука хорошая. Но есть один маленький минус. Контроллеры поддерживающие отладку через jtag,  это все контроллеры начиная с Atmega16 и старше. Для некоторых мк из семейства tiny существует отладочный интерфейс Debug Wire, но такой отладчик еще вроде-бы ни кто не делал самостоятельно. Схема отладчика состоит из двух частей:

  1. Схема согласования с ПК
  2. Непосредственно сам отладчик

При выборе первой части схемы всё зависит от того есть ли у тебя свободные COM или USB порты.  Поскольку COM порт у меня всего один  и находится далеко под столом, то я решил использовать usb порт используя для этого свой преобразователь интерфейса USB-UART. Для тех кто хочет использовать COM порт я тоже нарисовал схему. В качестве преобразователя уровней там используется популярная микросхема MAX232. Главным минусов использования COM порта является отсутствие питания. В моем же варианте я беру 5 вольт прямо от USB порта,что очень удобно так как не болтается лишних проводов. Печатка разведена только под вторую часть схемы т.к.  сам преобразователь usb-uart у меня уже был в наличии, и я просто соединил две платы проводками. Используемый корпус — G1068B.

Теперь немного технических нюансов.  Фьюзы  микроконтроллера нужно выставить следующим образом:

Вообще по идее отладчик должен обновляться из студии но я не стал заморачиваться по этому поводу и не зашивал загрузчик. Саму прошивку можно взять из папки Atmel\AVR Tools\JTAGICE\Upgrade.ebn

Но прошивка эта в хитроумном формате EBN а нам для прошивки нужен HEX. Помочь сконвертировать  прошивку в нужный формат сможет программа EbnToHex. Или же можно взять готовых HEX в конце  страницы.

Схема отладчика ниже:

Если планируется использовать интерфейс USB то нужно исключить из схемы все элементы находящиеся внутри прямоугольника. А выводы TxD и RxD микроконтроллера припаять к преобразователю интерфейса USB-UART (TxD контроллера к RxD преобразователя и RxD контроллера к TxD преобразователя). Так же не забываем объединять земли и питание. Жду отзывов и вопросов в комментариях.

Файлы:

Прошивка (уже в формате HEX)

Печатная плата

Первоисточник