USB программатор для AVR

Программатор это пожалуй один из основных инструментов разработчика устройств на микроконтроллерах. Ведь именно он позволяет вдохнуть жизнь в микросхему. Такой инструмент должен быть качественным и отвечать современным требованиям:

  • Иметь интерфейс USB, а не устаревшие COM или LPT
  • Поддерживаться популярными программами
  • Поддерживать прошивку самых распространённых контроллеров
  • Прошивать с высокой скоростью

Конечно программатор можно и купить, но у Atmel к сожалению слишком неадекватные цены на средства программирования и отладки. В сети очень много схем различных программаторов, но как правило вышеизложенным требованиям они не удовлетворяют. Особенно это касается интерфейса подключения к компьютеру. Например у  USBasp интерфейс USB реализован программно, и гарантии что он будет работать на всех компьютерах нет. Так какой же программатор собрать? Я предлагаю аналог AVRISP mkII.

avrisp-mkII


Клоном его назвать не поворачивается язык, уж слишком сильные схемотехнические различия между оригиналом и данным программатором. Аналог фирменного это очень хорошо, ведь фирменные программаторы поддерживаются AVR Studio и многим другим популярным софтом т.к. протокол обмена программы и программатора открыт. Открыт так же исходный код прошивки данного программатора. В будущем я планирую доработать его, добавив буфер и светодиод индикации активности.  Буфер нужен для того чтобы обезопасить микроконтроллер в случае если на выводы программирования попадёт повышенное напряжение или произойдет короткое замыкание. Буфер стоит копейки, а микроконтроллер далеко не самый дешевый. В данной схеме вся защита возложена на токоограничивающие резисторы, поставленные в разрыв линий программирования. Их можно и не ставить но безопасности ради я рекомендую. Вот собственно схема:

Впервые рисовал схему в Eagle так что сильно не пинать =) Рулезная вещица кстати!
С вывода UCAP можно снимать напряжение 3.3 вольта, через него запитан сам микроконтроллер. Это сделано для того, чтобы можно было безболезненно прошивать микроконтроллеры питающиеся от 3.3 вольт. У данного программатора  очень хорошо решена проблема «курицы и яйца». Обычно, чтоб сделать USB программатор вроде того же USBasp, сначала нужно найти другой программатор чтоб запрограммировать контроллер для будущего программатора. С этим программатором всё иначе. Туда уже зашит загрузчик который позволит обновить прошивку по USB при помощи утилиты FLIP от Atmel. Я к сожалению узнал об этом когда уже прошил контроллер другим программатором и эту возможность протестировать не удалось. Перемычка нужна видимо для управления загрузчиком. Для работы с программатором должны быть установлены драйвера. Как правило они ставятся вместе со студией. Если драйвера не нашлись то обновляем студию. Когда драйвера поставятся — можно шить. Список поддерживаемых контроллеров огромен, присутствует поддержка ATXmega (лично не проверял). Шьёт программатор быстро. Для эксперимента написал прогу которая занимает всю память контроллера Atmega32. Прошивка заняла 5 секунд, чтение примерно 2 секунды. Испытания проводились при тактировании контроллера от 16 Мгц. Это очень хорошие результаты, такого никогда не добиться на простейших пяти проводках или программаторе Громова. По сложности изготовления он примерно такой же как и два вышеупомянутых. Трудности могут возникнуть только с запайкой TQFP корпуса, да и они преодолимы. Я впервые за пол года накосячил в разводке платы пришлось допаять проводок:

AVRISP mkII

Резисторы можно заюзать самые обычные выводные, но я что-то совсем обленился сверлить дырки и перешел на SMD монтаж. Кстати типоразмер 1206 можно паять обычным паяльником с тонким жалом. Просто нужно немного приноровится. Исправленная печатка прилагается и в случае чего можно её поправить как нужно. В дальнейших планах засунуть всё это дело в нормальный корпус и юзать в качестве основного программатора.
Сайт автора
Ещё ссылка по теме
Прошивка
Печатная плата

USB программатор для AVR: 166 комментариев

  1. доброго времени суток!
    разработка отличная на вид. все спаял, решил прошить через isp при посредстве code vision. все нормально, нашелся, определился, но при заливке стал выдавать ошибки что-то в стиле «по адресу такому -то type mismatch. ошибок таких много. что бы это значило?

  2. Привет! Спасибо за проект! Печатка исправленная здесь? Очень хорошо что ненадо искать второй программатор, чтоб прошить контроллер (похож в использование на PICKit2 — подключил к USB и прошил) Спасибо!

  3. Medved Вы писали :
    Для эксперимента написал прогу которая занимает всю память контроллера Atmega32.
    А Вы не поделитесь этой прогой?
    Правда мне для Atmega16 нужно, но ведь ее наверное можно подправить .
    Спасибо.

      1. Спасибо за ответ!
        Так может подскажете как ее можно написать на СИ ? А то у меня что то ума не хватает. Правда программист из меня совсем никакой, но если что то простенькое то думаю осилю.
        Спасибо.

                    1. Тогда пока не знаю чем помочь. на следующих выходных (когда попаду домой) могу вытащить те драйвера которые использует программатор из своего компа…

  4. Приветствую=)
    Долго искал программатор для USB, оставил выбор на этом.
    Собрал, определяется, все радостно красиво, но при считывании фьюзов с МК выползает ошибка: AVRISP MKII couldn’t enter programming mode.
    В чем может быть проблемка?

  5. Добрый день. Я собрал тут подобный программатор, прошил его через FLIP. В винде определяется как AVRISP mkII. Только вот студии ни четвёртая ни пятая его не видят. Не конеклятся с ним. Чего у меня можт быть не так? Сразу скажу, что это мой первый шаг в сторону программирования микроконтроллеров. По этому не судите меня строго. Честно говоря я даже не всё понимаю из того что вы тут пишете :-) Если у кого то возникнет желание мне помочь, а за одно и просветить меня, буду весьма благодарен. Только прошу, обьясняйте попроще, пожалуйста :-)

      1. Ну да. И в устройствах было AVRISP mkII и WinDrivers, а студии не видели. Позже я сносил дрова и ставил всё заново. AVRISP mkII встал нормально, а WinDrivers пропал и больше не появлялся. Как его вернуть, к стати?

  6. Привет!!)Я только начал заниматься радио-электроникой и пока плохо разбираюсь в этом не судите строго за мои вопросы!)))
    Зачем нужна перемычка JP1???
    Почему на твоей плате

    1. JP1 нужна для того чтоб прошить контроллер если у тебя нет другого программатора. Устанавливаешь её и запускаешь программу FLIP, и при помощи нее шьешь ту прошивку которая в статье.

  7. А, то есть я её соединяю и прошиваю программатор,а потом как прошил разъединяю. А про программу FLIP можно по подробнее??Какая версия проги и т.д. Зарание спасибо!!!!)))

  8. И как пользоваться флипом? Я вот пробую твою прошивку открыть, а он мне пишет Connot open file. Расскажи пожалуйста по подробнее что и куда нажимать)

      1. И не будет гореть пока прошивка не зашита.
        Если флип ничего не нашел это очень странно, переустанови драйвера, переткни в другой порт, пошамань с бубном ну итд…

  9. Ну версия с тем что я неправильно что-то спаял сразу отпадает потому-что виндовс его увидел под именем at90usb162. щас попробую флип самый старый скачать

  10. а как понять что флип его увидел? я видимо вошол в демо версию и какието функции стали доступными. к примеру когда я нажимал на картинку usb шнура он мне какую-то ошибку выдавал а теперь нажал и появилась табличка usb port connection в ней open close cancel нажал open и что дальше делать?

    1. Даже не могу представить как это всё выглядит. Я флип не видел ни разу в жизни. Писал уже об это сто раз. Я не через него прошивал, а через обычный ISP программатор

    1. Снимаешь перемычку и переподключаешь девайс к компу. Должен определится как программатор. Драйвера должны сами поставиться если авр студия стоит. Когда дрова поставились, открываешь студию и пробуешь чёнить прошить через неё.

  11. Ураааааааааааааааааааа!!!!!! Прошил!!! Сначало нужно поставить драйвер на него взяв его из папки где установлен флип. найти там папку usb и нажать ok и все. а потом уже и флипом прошивать сам программатор! инфу брал отсюда http://blog.bubenov.ru/?p=48

    1. Смотри внимательнее. У программатора есть выводы MISO,MOSI,SCK и RESET. Точно такие же есть у контроллера. Нужно соединить одноименные выводы а так же землю программатора и землю контроллера. Ну и еще подать питание на контроллер. можно прям от программатора

  12. прошу помощи (((, прошил программатор флипом, установил авр-студио (вместе сней поставил дрова, в диспетчере задач Windows 7 есть устройство Jungo->AVR ISP mkII), но когда пытаюсь прошить микроконтроллер, cvavr после инициализации устройства выдает сообщение «AVRISP MkII could not enter programming mode», пробовал прошить atmega8 в DIP и в TQFP корпусах прямо на плате готовго устройства, которые уже сто раз прошивал программатором STK200/300. В момент прошивки 7-сегментный индикатор моргает, и вываливается ошибка. Как быть? Обвязку на AT90USB162 уже перепроверил несколько раз.

  13. Попробовал, не получилось. Еще обновил AVR Studio до версии 4.17 по совету CVAVR. Установился дополнительно WinDriver в группу Jungo, но так ни чего и не продвинулось с места. Medved спасибо за быстрый ответ.

  14. Нашел ошибку в пайке, резистор размера 0805 на 10кОм косался одной из двух дорожек идущих к программируемому выводу, не хватало его длины чтобы перепрыгнуть через две дорожки ))) В AVR Studo сразу же все заработало, а вот в CVAVR стало выдавать ошибку «Communication error? please check the following: ….». Есть у Вас какие-то соображния?

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