Семейство микроконтроллеров с архитектурой AVR стало де-факто стандартом для радиолюбительских поделок. Я начинал изучать контроллеры именно с этого семейства, но и сейчас нередко использую их в домашних конструкциях.
Вот уже более года для отладки прошивок я использую AVR dragon.
AVR Dragon – самый дешевый отладчик для микроконтроллеров AVR фирмы Atmel, поддерживающий debugWire.
Чем отличается программатор от отладчика?
Программатор – это просто устройство, записывающее программу в контроллер. Дальше программа исполняется сама по себе и если что-то пойдет не так, то узнать что именно — очень сложно. Отладчик позволяет остановить исполнение программы в любой точке и узнать значения всех переменных, регистров и вообще памяти, отладчик позволяет исполнять программу пошагово, посмотреть стек вызовов функций и кучу других полезностей. Вообщем, отладчик – это круто!
Чтобы было понятно, зачем мне нужно было покупать именно этот отладчик, а не собрать, к примеру, вот такой, кратко опишу разные интерфейсы программирования и отладки которые используются в контроллерах AVR.
ISP (In System Programming) – интерфейс внутрисхемного программирования, позволяет программировать контроллер не выпаивая из платы. Через ISP контроллер программируется с небольшой скоростью, но ISP обладает большим достоинством для начинающих – программатор для этого интерфейса состоит из четырех проводков. Во многом благодаря этому интерфейсу, Atmel стал лидером любительских конструкций. Для того, чтобы запрограммировать контроллер, к нему нужно подключить 4 сигнала – MISO, MOSI, SCLK, RESET.
HV prog – высоковольтное программирование. Умеет очень быстро программировать контроллеры, используется при массовом выпуске, в любительской практике практически бесполезен. (может быть использован для восстановления ISP, если вы его случайно отключили по невнимательности). К контроллеру нужно подключить 18 сигналов — PD[7…0], PC[7…0], XTAL, RESET.
JTAG – самый широко используемый отладочный интерфейс. О нем уже очень много написано, поэтому повторяться не буду. Присутствует в контроллерах с большим количеством ножек. Требует подключения пяти сигналов (TCK, TDO, TMS, TDI, RESET).
debugWire – проприетарный отладочный интерфейс Atmel, который позволяет следить за внутренними процессами контроллера по одному проводу (RESET). Так, как в любительской практике обычно используются контроллеры с маленьким количеством ножек, это просто замечательная альтернатива JTAG’у.
К сожалению, Atmel немного испортил всю замечательность идеи тем, что debugWire на новых контроллерах отключен по умолчанию, и включается с помощью ISP интерфейса (тоесть, прийдется сначала подключить к контроллеру целых 4 контакта, включить debugWire, и только после этого можно отключить 3 контакта SPI).
AVR Dragon позволяет отлаживать контроллеры с памятью до 32кБайт, а программировать умеет вообще все контроллеры AVR (кроме atxmega).
Конечно, за цену AVR dragon можно накупить очень много больших контроллеров ( 33 штуки atmega16, к примеру ) и использовать их с AVR JTAG ICE clone, так-что покупать дракона или нет – решать вам. Лично я люблю использовать хороший инструмент, поэтому купил.
Практически все поделки я собираю на контроллерах: atmega48, atmega88, atmega168 и attiny13. Это очень сбалансированные контроллеры! Все они имеют debugWire интерфейс.
Первая проблема, с которой я столкнулся, купив avrDragon – как-же его подключить к контроллеру? Дело в том, что на самой плате отладчика выведена только колодка. На противоположной стороне нарисована карта расположения выводов, но как они согласуются – далеко не очевидно! Я разок ошибся с подключением, поэтому выкладываю расположение контактов.
Каждый сигнал нужно подключить к такому-же на контроллере. Сигнал VTG ( Target Voltage ) служит для подстройки логических уровней отладчика к логическим уровням отлаживаемого контроллера и подключается к напряжению его питания.
Вторая проблема – DebugWire не работает, если у контроллера нет тактовой частоты! Я долго искал проблему в драконе и проводах, а оказалось, просто дорожка к кварцу была повреждена.
Третяя проблема – скорость отладки в AVR Studio была значительно выше, чем в IAR. Так как основное мое средство разработки все-же IAR, это меня совсем не радовало. К счастью, в последних версиях IAR’а скорость работы с debugWire значительно увеличилась.
Для подключения дракона к контроллерам, я спаял два проводка. Одни из них припаивается прямо к дорожкам, второй вставляется в разъем на плате. Так как на разъеме дракона нет ключа, я сделал свой – написал TOP. Кстати, провода очень удобно метить такой технологией – пишем маркером на термоусадке название сигнала и термоусаживаем ее – наши надписи теперь стали маленькие, красивенькие и ни за что не слезут с проводков!
Теперь типичная последовательность действий. Запускаем IAR. В опциях проекта меняем отладчик на Dragon (Project->Options->Debugger, устанавливаем Dragon). Подключаем дракона к плате, подаем питание. Теперь выбираем в меню Dragon->Fuse Handler. Устанавливаем те фьюзы, которые нам нравятся, разрешаем debugWire (фьюз DWEN). Отключаем питание, отключаем ISP от контроллера (можно и оставить, если SPI не используется), оставляем только RESET, VTG и GND подключенными. Включаем питание, жмем на кнопку “Download and Debug”. Вуаля:
Если захочется поменять фюзы, придется опять подключить ISP контакты. В подавляющем большинстве проектов SPI не используется, поэтому можно один раз подключиться и ничего не трогать.
У дракона есть несколько опций (Project->Options->Debugger->Dragon):
Supress download – если поставите галочку, будет спрашивать вас – загружать новую программу в контроллер или оставить старую? Используется для (весьма сомнительной) экономии времени и ресурса флэш-памяти.
Allow download to RAM – иногда в процессе отладки, требуется сохранить данные ОЗУ, а потом загрузить их обратно в контроллер. Эта опция позволяет это сделать. Я никогда ей не пользовался, поэтому ничего толком сказать не могу.
Target consistency check – проверяет правильность записанных данных.
Эти опции используются редко и не очень важны, а вот на второй вкладке есть очень важная опция:
Run timers in stopped mode – таймера контроллера продолжают работать, даже если программа остановлена. К примеру, это очень важно для ШИМов, если их остановить в непредвиденный момент, что-нибуть может выйти из строя.
У меня спрашивали – можно ли программировать контроллер по debugWire, или это только отладочный интерфейс? Ответ – можно. Но опять-же придется сначала включить debugWire с помощью ISP.
Недавно попробовал использовать JTAG с AVR ами. Впечатления самые положительные. Заливает прошивку значительно быстрее, чем debugWire. Умеет программировать фюзы.
На драконе есть еще макетное поле. Говорят, если впаять туда ZIF-панельку, то будет очень удобно массово программить контроллеры. Лично я этим не занимался, поэтому ничего сказать не могу.
Есть еще одна проблема. В схеме питания дракона разработчики допустили ошибку, и микросхема в блоке питания некоторых экземпляров сгорает. Atmel дает рекомендацию выпаять сгоревшую микросхему и припаять один проводок, при этом гарантия на дракона не теряется.
Эта проблема проявляется при прикосновении пальцем к микросхеме-стабилизатору напряжения, который возбуждается и перегревается. При этом материнская плата должна ограничить ток и отключить дракон, но дешевые материнки этого не делают и дракон сгорает. На картинке показано, куда не стоит прикасаться.
В прочем, пока микросхема не сгорела, переделкой заниматься не стоит. Главное – выключать дракона когда на долго отходите от него чтобы не устроить пожара. Дракон может оказаться огнедышащим!
Как на зло, сразу после написания этой статьи стабилизатор моего дракона сгорел. Я произвел переделку, и все заработало (даже лучше, чем до этого – меньше разрывов связи). Переделка очень простая. Нужно выпаять микросхему стабилизатора и пробросить проводок от USB разъема до танталового конденсатора. Микросхема-стабилизатор имеет термалпад, и поэтому отпаивается довольно сложно.
Возникает вопрос – зачем Atmel поставил на плату стабилизатор, если его можно без проблем заменить просто проводком? Сам Atmel на этот вопрос отвечает так —
Большинство компонентов на плате имеют диапазон напряжений питания 4. 5-5.5 вольт. Однако, стандарт USB говорит о том, что напряжение на шине USB в худшем случае может опускаться до 4.15 вольт ( если используется USB хаб с питанием от компьютера ). Для того, чтобы поднять напряжение с 4.15 до 5 используется стабилизатор.
Таким образом, если вы подключаете дракона напрямую к компьютеру или к хабу с внешним питанием, то после переделки дракон будет продолжать работать как ни в чем не бывало.
История покупки сего программатора началась еще пару лет назад (году так в 2012-ом) … даже тогда я уже активно занимался ардуинками, был куплен USBasp и написана статься о нем. Причиной же покупки Дракона явилось то, что внезапно, а именно при конструировании и прошивке Littlу-Wire, я вдруг обнаружил, что программатора AVR c HV-режимом (режим «высоковольтного» программирования) у меня то и нет! ;-(( В то время как обычных (ISP) включая только-что собранный Little-Wire — стало на один больше . .. вот.
Короче, обновить прошивку в Литле (в контроллере tiny85) — несудьба! Т.к. нога сброса, сконфигурированная как порт ввода-вывода, не позволяет обратиться к контроллеру по ISP. Обыдно … Ищу что делать … Нахожу несколько предлагаемых к сборке «конструкций» (в частности на tiny2313) — программаторами их не назовешь, они лишь «очищают» контроллер, т.е. приводят его к некоему «первоначальному» состоянию (сбрасывая в том числе и ногу ресет, запрограммированную на ввод-вывод к функции «ресет», после чего становится доступным ISP). Но это надо опять подбирать детали, собирать — да и решение имхо не самое удачное (в смысле удобное и правильное). Ищу что предлагает ебэй … Да, есть подобные устройства («чистильщики») уже в сборе — причем баксов так за 25. Дорого, а за что? — мысль опять: «может лучше собрать?» Далее думаю, странно это все как-то, а как оно в оригинале разработчиком предусмотрено? Стал читать доки — «проникся» режимом «высоковольтного» HV-программирования. И решил, что уж лучше заплатить больше денежек и купить функциональный программатор, чем тратить бабло на поебушку за 25 баксов . ..
Этим «функциональным» программатором и стал Дракон. Почему? — по критерию цена/функционал. Нужен был HV-режим и за разумные деньги. Дракон обошелся где-то в 50евро с ебэя из UK.
Да, перед покупкой я прочитал кучу материалов о Драконе и о том как народ трахается с ним, допиливает его, танцует с бубном … Но все равно решил взять, альтернатив то собственно и не было. Ждал долго, но вот приезжает Дракон … Распаковываю посылку и вижу (такой вот каламбур): «Дракона в раздраконеной коробочке!» Достаю плату — вроде новая, не паянная. Но зачем было рвать фирмовую коробочку сбоку (чтоб достать программатор?) когда она не заклеена и легко открывается штатным образом?! Что и зачем «химичил» продавец? Далее еще обнаруживаю и то, что коробочка «не родная»: серийные номера на наклейках на плате и на коробочке не совпадают! Ревизии тоже разные: на коробочке — A09-0061/11; на плате — A09-0062/10, а вместе с тем краской на плате указано A08-0396.D … Чему верить? Утешало лишь одно — что передо мной не та злополучная ревизия (A. 0601.3.1000.C) — которую даже официально разрешили колхозно фиксить.
Распаиваю разъемы — коннекчусь …
… если честно, то сейчас, уже два года спустя, и не вспомню — что там и как в деталях, но не срасталось. Помню лишь что ни один контроллер ни в HV, ни в ISP режимах прошить не удалось, перечитал разных форумов и доков, перепробовал разные версии «студий» и прошивок Дракона на разных операционках и компах … И один хрен: программатор вроде как откликается и работает (как устройство), но только до момента обращения к целевому контроллеру — тут же разные ерроры и ничего результативного … Забросил я Дракона подальше в закрома, предварительно аккуратно подклеив его раздраконеный «домик» скотчем.
И вот отпуск 14 года. Вернувшись творческой мыслью не только к сайту, но и к ардуинам — пишу эту статью — так как руки дошли и до Дракона. Думаю, не дам ему спокойно спать! Не исправен? — будем ремонтировать!!! Но сначала надо потестить что неисправно, а также почитать как это (возможно) ремонтировали уже другие. Коннекчу Дракона к ардуине по ISP — чтозафак?! — контроллер не распознается напряжение питания, ноль с чем-то вольта. Почему? Вскользь просматривая соседние вкладки в браузере, вижу намек, типа прошиваемый контроллер нужно питать отдельно (а не Драконом). Втыкаю USB-шнур в ардуину — и «о чудо!» — понеслась! Конечно сейчас не вспомню как я мумукался пару лет назад — но ввиду того что программаторы как USBasp так и Little-Wire сами питали целевую плату (целевой контроллер), то то, что Дракон (более продвинутый девайс) этого не делает — по меньшей мере странно (лично мне). А дальше, а дальше все хорошо … (или отоспался Дракоша?) — исходя из собранной у меня на харде тогда еще документации (которую я наверняка изучал) успешно оттестировал и HV-режим и прошивку в режиме ISP других разных контроллеров.
Напоследок несколько заметок из серии «для себя» (чтобы еще, если что через пару лет, не смотреть на Дракона как на новые ворота):
1. Распиновка «рабочих» коннекторов на жопе у Дракона указана «через жопу»! А именно: читать ее нужно глядя на Дракона сверху и развернув на 180 градусов! Разработчик видимо предполагал, что у пользователя будет два Дракона! Причем один (наверное сгоревший) будет лежать под рукой вверх тормашками и служить легендой по распиновке ;-))
2. «Поле для прототипирования» (вот словцо-то, чуть пальцы в узел не завязались) — никуда не подключено! Распаивать его смысла нет! По факту же 40 (или 28) контактов под кровати — тупо дублируются на 40 контактов вряд, и все! Ничего больше никуда не подключено, совсем! Видимо разработчик счел удобным (или решил поиздеваться?) … в общем перспектива городить огород из обжатых шлейфиков (приобретаемых отдельно), причем в узко ограниченном пространстве и каждый раз переделывать конфигурацию под очередной контроллер … мрак короче.
Ну и вдогонку:
1. ИМХО несколько странно, что хоть Дракон и является инструментом разработчика, но не имеет при этом никакого корпуса — и даже не то чтобы вид кустарный, да просто и в целом неудобно, и небезопасно (для Дракона с учетом его «чувствительности» к «помехам») … Доступных и изящных решений практически нет, за исключением пожалуй этого (владельцы 3D-принтеров могут «напечатать»).
2. Если все же впаять кровать в поле для прототипирования — наиболее изящным будет решение раздобыть (предварительно) «коммутационные адаптеры» подобные этим.
3. На самом деле есть возможность запитать Драконом внешнее устройство. Для этого нужно использовать пины из коннектора EXT POWER и коннектиться к ним отдельным проводом до целевого устройства. Или же, если разъем ISP разборный (составной) — линию VCC коннектить не к коннектору VCC на ISP — а к VCC на EXT POWER.
4. Ну а кто по финансам или иным понятиям «не тянет» на владение Драконом — могут рассмотреть к самостоятельной сборке конструкцию, совместимую с JTAG ICE (для себя ее сборку не вижу целесообразной, ибо есть Дракон).
Вроде все пока …
MiGeRA (июль 2014)
STK200 Dragon
Полный обучающий комплект для микроконтроллеров AVR с Dragon ICE и программатором
AVR-DRAGON
Запускается из Studio и включает все кабели для ISP, DebugWire и JTAG
Учебный комплект ATmega128
64-контактная плата STK300 с DRAGON ICE, а также обучение, пример кода и книги
Kanda AVR Dragon — это подлинный Atmel инструмент, а не клон, но мы включили все кабели ISP, DebugWire, питания, USB и JTAG необходимо упростить настройку и использование, в отличие от стандартной версии. Мы также включили адаптеры для подключения JTAG к платам STK200 и STK500 и подробные инструкции.
Dragon — полноценный эмулятор, не уступающий более дорогим ICE. Единственный отличие в том, что он не обшит. Atmel продает его без зацепок и с плохими инструкциями, что затрудняет подключение его к вашим целевым доскам. Мы исправили оба этих недостатка. Он также может питать вашу доску так что вам не нужен блок питания.
Kanda также поставляет STK200 Dragon Kit и комплект STK300 Dragon которые идеально подходят для обучения программированию микроконтроллера AVR. Комплекты включают
Комплекты STK200-X и STK300 дают вам полное представление о микроконтроллер и как его запрограммировать, чтобы он делал то, что вы хотите. Это позволяет разрабатывать собственные схемы, не полагаясь на дорогостоящие модули, такие как Базовые шилды Stamp или Arduino.
Разработка намного проще, если у вас есть известное аппаратное обеспечение и пример кода, поэтому наши комплекты включает плату STK200-X или плату STK300 с разъемами и периферийные устройства, такие как светодиоды, переключатели, АЦП, ЭСППЗУ, интерфейсы ЖК-дисплея и клавиатуры, а также последовательный порт. Две платы:
Плата STK200-X
Плата для 8-, 20-, 28- и 40-контактных микроконтроллеров
Плата STK300
Плата для 64-контактных микроконтроллеров
Если вы не имеете в виду конкретный проект, требующий большого количества контактов, STK200-X правильный выбор для большинства людей. Он имеет 40-контактный ATmega16, с 16 КБ памяти идеально подходит для большинства простых проектов, и ее можно заменить другими 40-контактными микроконтроллерами, до 128 КБ ATmega1284, поэтому у вас не будет нехватки памяти.
Эти комплекты производятся в Великобритании компанией Kanda, но мы поставляем их по всему миру.
AVR Dragon — это оригинальный продукт Atmel с нашими улучшениями
Производители Новые поступления и предложения Статьи Контакт О нас Карьера
Заказ на импорт Запрос ценыИзображение только для иллюстрации, пожалуйста, смотрите технические характеристики в деталях продукта.
Адаптер JTAG для чипов ATMEL AVR
Номер заказа: | 60646 |
---|
Альтернативный компонент ATMEL-ICE-PCBA в наличии 1 шт.
Больше не поставляется
Альтернативные компоненты: ATMEL-ICE-PCBA
MICROCHIP
+2
Спецификация в деталях продукта.
Артикул: | 60646 |
---|
Больше не доступно
Альтернативные компоненты: ATMEL-ICE-PCBA
В вашей корзине уже 0 шт.
В вашем запросе ценового предложения уже 0 шт.
Вы уже заказали: 0 шт. 3 МИКРОЧИП
Спецификация: