Собираем USB программатор совместимый с AVR910

Необходимость в USB программаторе для микроконтроллеров AVR возникла из-за отсутствия в нетбуке Asus Aspire One RS232 и LPT- портов.
Программатор предельно прост - требуется всего-навсего один микроконтроллер ATMEGA8-16PU, хотя ему и присущ один недостаток - его самого нужно предварительно запрограммировать.
Еще одним огромным плюсом программатора, то что его не нужно отключать от программируемого устройства. В режим программирования микроконтроллер вводится только когда нужно что-то с него считать или на него записать.
Схема программатора была опубликована в журнале "Радио" за 2008 год. Автор Рыжков Андрей.

Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в Application Note AVR109: Self Programming

Три светодиода сигнализируют об режимах чтения и записи, а также подаче питания на программатор. Питание программатора осуществляется от самого порта USB. Так как напряжение сигналов USB составляет 3.3 вольта, а напряжение питания, питающее программатор составляет 5 вольт, в схему введены два, последовательно включенных диода 1N4007 (подходят любые кремниевые диоды, в том числе и советские КД522). Прямой переход каждого диода "гасит" около 0.6-0.8 вольта, что в сумме дает около 3.6-3.8 вольт питания микроконтроллера. Можно поставить LDO стабилизатор LM1117 на 3.3 вольт, или в крайнем случае простой параметрический стабилизатор на стабилитроне. Тока по идее должно хватить.

Другим способом согласовать уровни, а точнее понизить уровень сигналов от микроконтроллера до 3.3-3.6 вольта, при этом оставив напряжение питания самого микроконтроллера 5 вольт, можно добавлением на сигнальные линии USB пары стабилитронов на 3.6 вольт, но об этом я напишу в следующей статье. И соответственно в следующей версии программатора.

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

Также из схемы (на плате он есть) убран джампер для ввода программатора в режим обновления прошивки, при нужде низкий уровень на 1-ю ножку микроконтроллера можно подать вручную или предусмотреть отдельный провод к ней от дополнительного программатора. Но так как текущая версия прошивки датирована 2007-м годом, ожидать частой его смены не стоит. При желании можно добавить на печатную плату дополнительный 5-ти выводной разьем программирования.
Вид программатора со стороны монтажа

Размеры программатора подходят для размещения его в корпусе от MiniDV видео-кассеты.
Для программирования был приспособлен программатор для COM-порта и программа UniProf

В момент программирования все запитывалось по стандартной схеме от USB-порта (при этом не нужно обращать внимания на сообщения Windows XP о найденном и неопознанном устройстве).

Файл прошивки контроллера, оригинальную схему и драйвера для Windows 2000/XP/Vista можно взять здесь.

После прошивки контроллера нужно прошить FUSE BITS: Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в "1").
Установки для "чистого" МК


Нужные нам изменения.

Учтите, что некоторые программы показывают fuse bits инверсно, для этого и приложен рисунок с установкой битов в чистом микроконтроллере.

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

35 комментариев:

  1. Это была первая конструкция. Уже собрана вторая, в габаритах флешки, скоро расскажу о ее конструкции.

    ОтветитьУдалить
  2. собрал. но при установке прогера в оборудовании он с ошибкой: запуск этого устр невозможен (код 10). винд ХР его определяет и сразу ставит свой драйвер без вариантов. удалил и насильно вручную поставил драйвер. и никак

    ОтветитьУдалить
  3. LED write read на PD6 и PD7 подключены на управление плюсом - это не ошибка? нагрузочная способность порта при 1 же низкая?

    ОтветитьУдалить
  4. О низкой нагрузочной способности при высоком уровне на выходе первый раз слышу. 40 мА может выдать на каждую ногу и 60 на порт

    ОтветитьУдалить
  5. Ошибки появляются при неправильной прошивке или монтаже. Фьюзы если не прошить нужные. Программатор должен работать на частоте 12 МГц, очень жесткие тайминги. А за определение виндовсом отвечает резистор R3, даже если остальной схемы не будет. Смотри правильно ли на усб разводка + и - не перепутаны?

    ОтветитьУдалить
  6. ошибку нашел как только сравнил со схемой протосса. вместо 4 ноги у тебя по схеме дата+ идет на 6. перепаял и сразу винд предложил поставить драйвер без проблем. теперь пытаюсь что нибудь запрограммировать. пока еще никак

    ОтветитьУдалить
  7. Схему поправил, цыферка неправильная получилась...

    ОтветитьУдалить
  8. не хочет все равно программировать. АВР прог не видит совсем а CV пишет AVRprog error entering programming mode

    ОтветитьУдалить
  9. Могу посоветовать программировать с постоянно включенным LOW CLK - если программируется новая мега8, то у нее низкая частота внутреннего генератора - 1МГц.

    ЗЫ: такие ошибки у меня были, уже в компактной версии, когда был плохой контакт на линии RESET.

    ОтветитьУдалить
  10. Около 30-ти таких программаторов собрал в габаритах флешки, раздарил, распродал остался 1 мой.

    ОтветитьУдалить
  11. ну ка поподробней за сколько продаешь?)и может подскажете где детальки на него в питере купить? а то юнону облазили и купили тока мега 8 и диодов немного(((

    ОтветитьУдалить
  12. напишите какие программы использовать для этого программатора.....

    ОтветитьУдалить
  13. Я программирую на CodeVisionAVR C компилятором. В нем удобно сразу прошивать встроенным программатором.

    Кроме того, если вы например пользуетесь другими компиляторами Си, в них как правило есть встроенные программаторы, с поддержкой AVR910 протокола. В крайнем случае можно использовать программатор ChipBlasterAVR программатор - это практически тот-же самый программатор, что встроен в CodeVisionAVR, но в виде отдельной утилиты.

    Есть еще программатор из комплекта программ самого ATMEL - AVRProg (я пользуюсь версией 1.37, а на сайте есть уже что-то около 1.42, но мне лень тянуть весь пакет из за программы в пру сотен килобайт)

    ОтветитьУдалить
  14. подскажите как и куда установить драйвер для программатора, чтобы потом он его нашел то я новичок в этом!спс

    ОтветитьУдалить
  15. Драйвер представляет собой по сути один-единственный inf-файл, в котором находится название устройства и информация что оно делает...
    Данный программатор представляет собой (с точки зрения виндовса) преобразователь USB-RS232 (COM-порт).

    Виндовс сама найдет ему место куда устанавливать.

    ОтветитьУдалить
  16. дайте ссылку откуда скачать драйвер inf то чего то я не могу его нарыть не де

    ОтветитьУдалить
  17. все нашол установил все что надо вроде работает,может подскажете где найти информацию CodeVisionAVR на русском что бы быстрей освоить ее!

    ОтветитьУдалить
  18. подскажите avrstudio устанавливается только на виндовc xp (sp2)? и почему ?

    ОтветитьУдалить
  19. Вот текст файла avr910.usb.2000.xp.inf
    Сохранить в файл и использовать

    ===================================
    ;
    ; PROTTOSS AVR910 USB Programmer Setup File
    ; Powered by PROTTOSS, mail to: prottoss@mail.ru.
    ; All Right Reserved
    ;

    [Version]
    Signature="$Windows NT$"
    Class=Ports
    ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
    Provider=%COMPANY%
    DriverVer=17/06/2009,1.0.0.1
    LayoutFile=layout.inf

    [Manufacturer]
    %MFGNAME% = ManufName

    [DestinationDirs]
    DefaultDestDir=12

    [ManufName]
    %Programmer% = Programmer, USB\VID_16C0&PID_05E1

    ;------------------------------------------------------------------------------
    ; Windows 2000/XP Sections
    ;------------------------------------------------------------------------------

    [Programmer.NT]
    CopyFiles=USBProgrammerCopyFileSection
    AddReg=Programmer.NT.AddReg

    [USBProgrammerCopyFileSection]
    usbser.sys,,,0x20

    [Programmer.NT.AddReg]
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,usbser.sys
    HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

    [Programmer.NT.Services]
    AddService=usbser, 0x00000002, DriverService

    [DriverService]
    DisplayName=%SERVICE%
    ServiceType=1
    StartType=3
    ErrorControl=1
    ServiceBinary=%12%\usbser.sys

    ;------------------------------------------------------------------------------
    ; String Definitions
    ;------------------------------------------------------------------------------

    [Strings]
    COMPANY="PROTTOSS"
    MFGNAME="PROTTOSS"
    Programmer="AVR910 USB Programmer"
    SERVICE="PROTTOSS AVR910 USB Programmer"

    ===================================

    ОтветитьУдалить
  20. По поводу AVRStudio - я пускал только на ХП и 98-й, люди рассказывают об успешных запусках под вистой. Под семерку пытаются...

    Хотя по идее компилеры должны работать, вот программаторы, из-за специфического способа доступа к портам могут глючить

    ОтветитьУдалить
  21. не знаю что делать у меня даже инсталяция не запускается на averstudio, ку да шо сохранять не могу понять (((.

    ОтветитьУдалить
  22. По поводу установки AVRStudio - вы вероятно пытаетесь ставить Service Pack для AVRStudio. Сам AVRStudio весит более 100мб

    ОтветитьУдалить
  23. так а на ноутбуке работать программатор будет или нет? уж очень надо!!!!

    ОтветитьУдалить
  24. Пожалуйста ктонибудь подкинте совет!!! У меня комп программатор опознаёт как неизвесное юсби устройство!!! Соответственно я не могу драва установить!!! Схема собрана правильно!!!! Что можно сделать чтоб избавиться от этой проблемы????????????????

    ОтветитьУдалить
  25. На ноутбуке работать будет. Если внимательно почитаете начало статьи, то сама цель создания данного устройства была в этом :)

    Если система опознает программатор как неизвестное устройство и вы уверены в правильности монтажа, тогда дело в неправильной прошивке. Или не выставленных или неправильно выставленных фузах...

    ОтветитьУдалить
    Ответы
    1. Подскажите, для того чтобы все это работало как надо, нужно ли сначала в совершенно другом программаторе установить фьюзы управляющей меги???

      Удалить
  26. Спасибо SergK!!! Скорее всего так!!! Ток я уже всяко разно его шил!!! Попробую ещё пару раз!!! Да куплю новый проц а то мож в нём ещё дело!!!=)))

    ОтветитьУдалить
  27. Я как-то тоже так бился, ну не работает и все... Думал что контроллер сгорел, но он у меня был впаянный, что оказалось хорошо, т.к. оказалось что таки дело не в микроконтроллере, а таки в монтаже.

    ОтветитьУдалить
  28. контролер прошит нормально
    фюзы тоже
    код 10 появляется

    ОтветитьУдалить
  29. SergK, а не скажете, какие у вас были проблемы? У самого схема опознаётся как PROTOSS AVR910 USB очень редко, сама микросхема-то не очень стабильно заводится. Думаю, может, дело в том, что я сразу за ATmega8-16AU взялся (всмысле что это TQFP). Может надо, как в оригинальной схеме, кондёров навтыкать?

    ОтветитьУдалить
  30. Возможно проблема с напряжениями. В данной версии программатора применена несколько кривоватая схема сопряжения напряжения питания МК (5В) и сигналов USB (3.3В), для этого в линию питания МК добавлены два диода, падение напряжения на каждом 0.8В и в результате получается приемлемый уровень сигнала.

    Проверяй напряжения питания на МК, должно быть около 3,4-3,6. Из-за такого низкого напряжения не все МК могут работать стабильно, можно немного поднять напряжение, вольт так до 4, некоторые мамки нормально относятся к повышенным уровням сигнала по USB

    ОтветитьУдалить
  31. Спасибо за статью!
    Скажите пожалуйста мне как начинающему: микроконтроллер ATMEGA8A-16PU подойдет, т.е. я его могу без опасений поставить вместо обычной 8-ой меги?
    Заранее спасибо за ответ!

    ОтветитьУдалить
  32. доброго времени суток всем кто на этом форуме!
    вот решил первый раз прошить мконтроллер ATMEGA 8 16 PU читаю статейку и понимаю так:
    сначала прошиваем hex файл и потом ставим галочки на FUSE и нажимаем программировать ? так получается в количестве два раза нажимать кнопку программировать я правильно понел? открываем hex файл и нажимаем program all и после прошивке ставим FUSE и нажимаем кнопку program all, ребята я правильно понел ?

    ОтветитьУдалить
  33. Сергей дайте ссылку на статью где описан программатор с 5вольтовым питанием мк

    ОтветитьУдалить