Отладчик JTAG ICE

Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать — избавлять программу от лажи :-) прим. автора) Кто-то использует для отладки 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)

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

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

Отладчик JTAG ICE: 47 комментариев

  1. Не совсем ясно, если подключить к обычному COM порту, будет работать?
    И еще, это не клон ДиХальтовского? А то у меня тот так и не заработал.

  2. Спасибо, попробую еще ваш сделать! Нужная вещь, но с тем что-то не сложилось!)))
    Кстати, а ваша плата в какой программе сделана? Не открывается у меня ничем.

    1. Плата сделана в программе ARES 7 Professional. Версия 7.6
      Но на моей плате нет ни USB-UART преобразователя ни COM-Uart
      Тебе проще будет развести свою наверное. да и моя под конкретный корпус заточена.

    1. А чё там запускать то =)
      1) Собираешь
      2) Подключаешь выводы TMS,TDI,TDO,TCK к одноименным ногам на микроконтроллере
      3) Соединяешь землю отладчика и землю отлаживаемого МК.
      4) Врубаешь всё это дело.
      5) Запускаешь студию, создаешь новый проект, в качестве отладочной платформы выбираешь JTAG ICE, потом выбираешь контроллер и жмем финиш.
      6) Пишем прогу и отлаживаем :-)

      ______________
      Примечания.
      а) У отладчика есть вывод RESET. подключать его не обязательно. (не спрашивай зачем он ;-) )
      б) Кварц строго указанной частоты.
      в) У отлаживаемого контроллера должен быть включен JTAG ! Иначе нифига не выйдет

  3. ))))) Ув. вот все именно так и сделал, но загвоздка в том, что Терминал возвращает какую-то хрень (при замкнутых ногах 14,15 Меги16 — возвращает нормально) и не находится Студией. Он у меня готовый есть, Хальтовский, только работать никак не хочет почему-то. Раз десять препрошивал — тоже самое, другие программы работают на этом МК нормально. Фьюзы правильно выставлены. Плату сто раз проверил, емкости тоже, кварц тот что надо!! А результат — ноль.((

    1. При замкнутых ногах и должен нормально возвращать! Ты ж замкнул приём и передачу))
      Если ноги не замкнуты то Терминал и должен возвращать хрень!)) Только это не хрень наверное а ответ на некорректные данные которые ты посылаешь отладчику через терминал.
      Кстати, мой первый отладчик не заработал. Я сломал себе весь моск.
      Мега16 была у меня в TQFP корпусе.. мучился два дня.. мега исправная но ни как не работал отладчик.. короче плюнул купил другую в дипе и все заработало

  4. » в) У отлаживаемого контроллера должен быть включен JTAG ! Иначе нифига не выйдет»

    Люди пишут, что Джтаг находится студией и без отлаживаемого МК.

  5. А, ну да, написано выше. ) Что ж, попробую ваш сделать. Может заработает, а то просто какой-то позор ))) Простейшее изделие и не работает.
    А вы свой собирали, работает??

    1. Работает конечно =)
      Имеются некоторые глюки, но они по словам многих, присущи большинству jtag отладчиков от атмел. Это даже не глюк отладчика а скорее глюк студии. Может в новой версии пофиксят..

  6. На схеме на выводы PA2(38) и PC0(22) подано напряжение питания, причем напрямую, даже без токоограничивающего резистора. Это на самом деле так задумано (если да, то зачем?) или же ошибка в схеме?

    1. Сложно сказать зачем. Ведь исходника прошивки у меня нет. Но ошибки в схеме нет точно т.к. я лично собирал этот отладчик и всё работало. PA2(38) нужнен скорее всего для измерения напряжения (при таком влючении студия показывает что напруга около 6 вольт) . А второй х.з. для чего. Короче если ты включишь их через резисторы то ничего страшного не случится я думаю

  7. подскажите плиз,
    1)ATmega16A-PU в dip40 корпусе подойдет?
    2)Прошивка (уже в формате HEX) как её шить, и через что?
    3)Можно ли шить телефоны этим отладчиком

  8. А у меня этот житаг отказался мегу 32 отлаживать… я уже хотел автора схемы и шаманов по прошивкам ругать. потом взял 128ю. Вот она нормально определилась и позволила над собой издеваться. Правда 32я была куплена года 4 назад…. и у нее в эррате что-то про житаг пишут, что ненормально он в ней пашет.

  9. Добрый день!
    У меня такая проблема собрал данный девайс вроде работает как нало все видит, шьет короче в этом нет проблем но при отладке программы при нескольких шагов отладки нажимая в АВРСтудии F11 глючит и тормозит и в конце концов просто виснет
    Может кто то сталкивался с подобным помогите

      1. Интересно, просто у меня в АврСтудио4 там галочка не стоит( по умолчанию
        серое поле и красненький вопросик) если галочку там поставить контроллер
        блокируется на ISP. Так один загубил…(

  10. А возможно ли видоизменить этот проект и в Мегу16 добавить функцию преобразования USB-UART? На сайте http://www.recursion.jp есть проект адаптера USB-UART на Mega8? значит 16-я мега должна с этой задачей справиться. Из данного же проекта использовать фунуцию UART-JTAG. В итоге получаем JTAG-отладчик с интерфейсом USB на одной микросхеме. Возможно ли это чисто теоретически?

  11. Не особо обращал на буквы в конце микросхемы , собрал девайс а он ни как ,оказалось Atmega16A и Atmega16U4 по сути разные приборы по крайней мере распиновка разная на что я и попал , корпус TQFP.

Добавить комментарий