Меню

Программатор отладчик своими руками

Универсальный USB программатор

В интернете представлено множество схем программаторов микроконтроллеров. Представляю вариант внутрисхемного универсального USB программатора с возможностью отладки, которым пользуюсь я. Вы сможете собрать данный программатор своими руками.

Основой программатора является микросхема FT2232D. Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.

Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.

Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.

Выводы U2 (канал А):
24 — ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 — ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 — ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 — ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 — ADBUS4 – в режиме JTAG вход\выход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 — AСBUS0 – свободно программируемый вход\выход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 — AСBUS1 – свободно программируемый вход\выход во всех режимах.

В принципе, эти выводы многофункциональные. Их поведение определяется выбранным режимом при открытии порта.

Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().

40 —BDBUS0 – выход- в режиме UART TXD;
39 —BDBUS1 – вход- в режиме UART RXD;
28 — BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 — BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).

Ниже приведена печатная плата программатора

На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.

Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.

Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer’s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа .NET» М.,С-П. Питер, 2007.

Читайте также:  Рестайлинг ларгус своими руками

Скачать исходники ПО и печатную плату в формате P-CAD вы можете ниже

Борисов Алексей (Albor) г.Сызрань, Самарская обл.

Источник

Программатор отладчик своими руками

Программатор-отладчик для AVR микроконтроллеров STK-ICE

Автор: Serj_K
Опубликовано 29.04.2013
Создано при помощи КотоРед.

Как-то раз, в один не очень прекрасный день, мне понадобилось отловить проблему в реальном времени на работающем устройстве. У меня не было отладчика, только программатор STK-200. Но я знал о существовании клонов отладчика AVR JTAG-ICE. За два дня быстро повторил один из вариантов. Проблему отловил, а отладчик лёг в стол на долгое хранение. Распаять его рука не поднялась.

Имеющийся у меня программатор STK-200 прост и дёшев но использует устаревший и не очень удобный в работе LPT порт. Поэтому я решил изготовить новый программатор под интерфейс USB. Встал вопрос – изготавливать программатор непосредственно с USB интерфейсом или с использованием преобразователя USB-RS232? Я выбрал второй вариант, так как решился изготовить его на базе имеющегося JTAG-ICE. И вдруг меня посетила мысль – а нельзя ли просто дополнить JTAG-ICE дополнительной поддержкой программатора?

Для возможности такого варианта в прошивке JTAG-ICE должно оставаться достаточно свободного места, которое может включать имеющийся загрузчик, который будет уже не нужен. Поиск готового решения на просторах Интернет дал положительный результат. Буквально за несколько месяцев до меня такая же идея пришла в голову ещё одному человеку — ali_asadzadeh — и он её реализовал – поместил в JTAG-ICE свою реализацию программатора STK-500 — https://www.sonsivri.to/forum/index.php?topic=19994.0 . Эта страничка с моим переводом находится в архиве с исходниками прошивки. Главное достоинство этой реализации – использование аппаратной шины SPI и аппаратного формирования тактового сигнала для программируемого МК.

Скачав исходники и повторив данное решение, я обнаружил наличие некоторых проблем, в частности ошибки при работе с EEPROM на АТMega-128. Кроме того, не были реализованы некоторые функции программатора STK-500. Но метод, КАК это сделать, был рабочим.

Для проверки правильности работы программатора STK-500 я изменил исходники известного клона STK-500 от Petka под имеющуюся у меня схему JTAG-ICE. Всё заработало отлично, но данный вариант программатора тоже имел свои недостатки, главные из которых — программное формирование шины SPI и размер кода, который не помещался в свободное пространство JTAG-ICE. И здесь так же не были реализованы некоторые функции программатора.

Так как в исходниках ali_asadzadeh была явная ошибка, то я взял исходники от Petka и очень сильно их перелопатил, используя положительные наработки из обоих вариантов с добавлением недостающего функционала. С целью уменьшения размера кода напряжение целевого микроконтроллера не измеряется, а просто выдаётся константа, соответствующая напряжению 3,3В.

После того, как всё заработало, нарисовал новую схему и изготовил окончательный вариант устройства.

Схема содержит три независимые части:

1) Преобразователь интерфейса U1 – у меня выполнен на преобразователе USB-UART FT323RL. Может быть любым, главное получить сигналы RxD и TxD с правильными уровнями.
2) Гальваническая развязка U2 – у меня выполнена на ADuM1201. Выполняет две функции – собственно гальванической развязки и преобразователя уровней, когда целевой микроконтроллер питается напряжением, отличным от 5В. Гальваническая развязка отключается, если замкнуть хотя бы один джампер JPGND. Если данная функция не нужна, то можно U2 не ставить. Если нужно, то целевой микроконтроллер можно запитать и от программатора, для чего необходимо замкнуть джамперы JPVCC и JPGND.
3) Собственно программатор-отладчик U3. Для выбора режима работы служит джампер JP1. В замкнутом состоянии включается режим программатора STK-500, а в разомкнутом – отладчика JTAG-ICE. Джампер устанавливается в нужное положение до подачи питания на U3. Для подключения целевого микроконтроллера служат два разъёма для соответствующих интерфейсов — JTAG и ISP. На моей плате разъём для JTAG установлен сверху, а для ISP – на торце.

Читайте также:  Самоделки для ловли рыбы своими руками

Изначально я не ставил USB разъём, а подпаял тонкий USB шнур прямо на плату. Затем случайно увидел и сразу же купил печатную плату для преобразователя USB-UART под FT323RL и немного переделал конструкцию, получив более универсальный вариант с отсоединяемым преобразователем USB-UART, который можно использовать и для других задач.

Для того, чтобы запрограммировать микроконтроллер U3, понадобится внешний программатор, который подключается к разъёму Х2. При этом нужно замкнуть джампер JP_SPRG и подать питание на U3, замкнув джамперы JPVCC и JPGND и подключив USB разъём к ПК. Выбрать файл прошивки stk-ice.hex и записать его. После записи прошивки нужно отключить внешний программатор, снять джампер JP_SPRG и передёрнуть USB разъём. Если используется преобразователь USB-UART и установлен его драйвер, то можно проверять работу STK-ICE в нужном режиме.

В режиме программатора STK-500 имеется возможность устанавливать тактовую частоту ISP до 1,845МГц и частоту внешнего генератора до 3,686МГц.

После проделанной работы имеем два стандартных устройства в одном, которые официально поддерживаются ПО как от самой Atmel, так и от сторонних разработчиков.

Для обсуждения программатора лучше использовать имеющуюся тему, например https://radiokot.ru/forum/viewtopic.php?f=20&t=73283

В архивах исходники прошивки и схема с платой в Альтиуме и под ЛУТ.

Источник

Программатор отладчик своими руками

Отладчик AVR JTAG.

Автор: VDD
Опубликовано 10.11.2009

Однажды ваш покорный слуга решил, что ему необходим (сам не знаю, почему так решил) отладчик (debugger) для AVR. Что такое отладчик можно прочитать здесь. Если коротко, в отличии от обычного программатора он позволяет не только прошить микроконтроллер, но и наблюдать за выполнением программы, останавливать ее в любой момент (например при зацикливании, зависании вы увидите в каком месте кода это произошло и сможете попробовать понять почему), выполнять программу по шагам, менять содержимое ячеек памяти и регистров контроллера «на лету». т.е. ОТЛАЖИВАТЬ, искать ошибки, моделировать различные варианты выполнения программы. Сказано — сделано, но поинтересовавшись стоимостью AVR JTAG ICE II понял, что цена сего, безусловно прикольного девайса мне не нравится. Порывшись на просторах Интернета, я обнаружил, что существует клон предыдущей версии отладчика (JTAG ICE) и даже не один. Более того, некоторые его даже изготовили и используют. Но как всегда чего-то не хватает. Во-первых, все устройства почему-то используют com порт вместо уже ставшего стандартом USB. Во-вторых, когда я повторил одну из конструкций, моя AVR студия отказалась апгрейдить девайс, хотя и видела его, хотя я делал все по инструкции. В-третьих, люблю все мелкое и аккуратное и не люблю корпуса DIP. В итоге пришлось скомпилировать из доступной информации по вопросу собственное решение. Получилась такая вот «конструкция выходного дня».
Поскольку в основном я работаю с небольшими проектами, решено было осуществлять питание отлаживаемого устройства от USB через отладчик (5 вольт до 500 ма). Другие варианты питания отлаживаемого устройства в этом варианте отладчика не предусмотрены.
Во-вторых, для упрощения схемы и опять таки из-за отсутствия согласования уровней не стал делать буферизацию и весь обвес, связанный с возможностью внешнего/пониженного питания. В связи с этим не втыкайте устройство куда попало — можно испортить.
В-третьих, эксперименты с загрузчикам и автоматическим обновлением отладчика из avr студии привели меня к выводу, что 100% работоспособный девайс получается, если его прошить его в лоб непосредственно прошивкой из комплекта инсталляции вашей AVR студии при помощи ISP программатора (надеюсь, он у вас есть), хотя и с загрузчиком тоже в основном удается обновить прошивку через студию.
Т.е. я изначально делал не коммерческий продукт для личного использования. В итоге он мне понравился, и я решил с вами поделиться. К сожалению, он не может работать с контроллерами AVR младше меги 16. (ввиду отсутствия у них JTAG). Впрочем, в коде размером до 4 кб можно разобраться и так. Мне сей девайс помог разобраться в странностях поведения аппаратного I2С и отловить ряд собственных ошибок при работе с RT OS, возможно в чем-то поможет и Вам.

Читайте также:  Резная балясина своими руками

По схеме комментировать особенно нечего. FT232RL включена в соответствии с даташитом. Поскольку люблю все блестящее повесил 4 светодиода — питание, 2шт активность на FT-шке и, собственно, активность отладчика. Плата рисовалась ручками по даташитам, но собранное устройство полностью работоспособно и весело подмигивает светодиодами во время отладки, впрочем и остальные функции тоже выполняет. Все необходимые для работы сигналы выведены на 9-и контактный рядный разъем. В качестве ответной части к нему сделаны 2 шлейфа: боевой- AVR JTAG 10 pin (распиновка приложена) и шлейф для первичного программирования отладчика (нужен только в случае если версия студии поменяется). Корпус не изготавливался.

Плата нарисована в Sprint Layout 5.0. Изготовлена фотоспособом с использованием пленочного фоторезиста. Шаблон выводил на струйнике HP. Минимальная ширина дорожки 0.3мм, минимальный просвет 0.2мм). Возможно, умельцы и ЛУТом смогут изготовить. Я не стал пробовать. Все элементы 0805 и 1206 кроме дросселя (1210) и электролита фильтра питания (тип В). На плате стоят 4 чип — перемычки чтобы влезть на 1 слой (тип 1206) . Токоограничительные резисторы в зависимости от типа светодиода. Я использовал 510 Ом для желтых, зеленых, красных и 1 кОм для синего. Дроссель фильтра 10мкГ, электролит 10 мкФ 16 в. Кварц СТРОГО 7.3728МГц. Емкости к кварцу по даташиту ATMEGA16 — 12пФ. Остальные емкости блокировочные и цепь сброса микроконтроллера 0.1мкФ. Сопротивление в цепи сброса контроллера 10кОм.
Описание разъема на плате:
Считаем с права налево, смотрим со стороны smd компонентов (от квадратика).
1. Земля
2. +5вольт
3. NTRST
4. TMS
5. MOSI/TDI
6. MISO/TDO
7. SCK/TCK
8. RESET
9. NC

VSUP и VTREF соединены вместе в кабеле JTAG.

Где взять загрузчик?
Их много на просторах инета. Главное, чтобы он по размеру укладывался в 500 слов (words, 500w) и был совместим с АВР Студией. Сначала прошиваем его. Можно воспользоваться, например этим. При выборе загрузчика желательно ознакомиться с его описанием от автора.

Где взять прошивку?
В папочке AVR Студии */Atmel/AVR Tools/JTAGICE есть файл Upgrade.ebn . Это прошивка адаптера в формате EBN. Конвертируем ee при помощи EBN2HEX в простой и понятный большинству программаторов HEX. Затем прошиваем отладчик этой прошивкой по ISP. ВНИМАНИЕ. При прошивке снимите галочку очиски флэша чтобы не убить загрузчик.

Как установить фьюзы?
Вот так:
Boot Reset Fuse — on (0). Т.е. при Reset должен запускаться загрузчик
BOOTSZ1 — on (0), BOOTSZ0 — 0ff (1). — размер загрузчика = 512w.
CKSEL3..1 и CKOPT настроены на внешний резонатор 8MHz. (не перепутать с осцилятором. а то придется подключать внешний генератор чтобы перепрошить фьюзы)

Источник