Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать – избавлять программу от лажи :-) прим. автора) Кто-то использует для отладки USART, кто-то цепляет на свободную ногу мк светодиод, кто-то записывает отладочные данные в EEPROM итд. Одним словом вариантов тут масса. Но самым удобным способом отладки на мой взгляд, является отладка с использованием специальных устройств называемых отладчиками. Отладчик позволят построчно исполнять программу зашитую в микроконтроллер, ставить точки останова. В процессе отладки программисту доступны все регистры микроконтроллера. Так же с помощью него можно прошить микроконтроллер и изменить фьюзы.
Представляю вашему вниманию отладчик JTAG ICE:
Житаг штука хорошая. Но есть один маленький минус. Контроллеры поддерживающие отладку через jtag, это все контроллеры начиная с Atmega16 и старше. Для некоторых мк из семейства tiny существует отладочный интерфейс Debug Wire, но такой отладчик еще вроде-бы ни кто не делал самостоятельно. Схема отладчика состоит из двух частей:
Схема согласования с ПК
Непосредственно сам отладчик
При выборе первой части схемы всё зависит от того есть ли у тебя свободные 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 преобразователя). Так же не забываем объединять земли и питание. Жду отзывов и вопросов в комментариях.
Прошивка и печатная плата
Первоисточник на английском
Первоисточник на русском