Пользователь
0,0
рейтинг
22 сентября 2011 в 20:11

Разработка → Миниатюрный USB программатор для AVR микроконтроллеров из песочницы

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):



Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:



На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.



Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно



Прошивка управляющего микроконтроллера

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом :) Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:



После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:



Выбираем папку где лежат дрова и жмем Далее



Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:



Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера



Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.



Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по этой ссылке



Ну вроде все, если возникнут вопросы, постараюсь ответить.
@exersizze
карма
10,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (38)

  • +3
    Кстати, про маленькие программаторы:
    image
    diy.elektroda.eu/uprog-maly-szybki-przenosny-programator-avr-z-sd/?lang=en
    • +2
      интересно за что минус. штука отличная, да и весь сайт неплох, хоть и на польском. на electroda.pl отличный форум кстати
    • +1
      Блин, сделано классно
  • +1
    тот же avr910…
  • +1
    Дни МК на хабре? :)

    Думаю для статьи на хабре стандартные скриншоты установки драйверов в винде, хм, несколько излишни :)

    И раз заговорили о ценниках, то неплохо бы итоговую калькуляцию
  • +1
    5 баксов на ebay
  • –1
    С последней картинкой случился хабраэффект. С остальными тоже может.
    Попробуйте сюда перезалить: habrastorage.org/
  • 0
    По сравнению с оригинальным USBASP в схему/прошивку внесены какие-либо изменения или отличия только конструктивные (маленькая плата и TQFP корпус)?
    • 0
      прошивку не трогал, только переделал под мелкий корпус и убрал перемычку, которая нужна для прошивки управляющего мк (из тех соображений, что менять прошивку нужно не каждый день, а место занимает)
      • 0
        Это хорошо, значит программная совместимость полностью остается.
        Я бы только добавил еще стабилизатор на 3.3В и переключатель напряжения питания 5/3.3В. Это на тот случай, если придется прошивать этим программатором контроллер, запитанный от 3.3 вольт.
        • +1
          Да, вот это хорошая идея. Поскольку может понадобиться прошить контроллер в готовом устройстве, где переферия не толерантна к 5-и вольтам.
  • +1
    Перезалил картинки. По деньгам: вышло меньше 100 рублей + вечер выходного дня :)
  • 0
    Какое дежавю. Особенно учитывая, что часть скринов из XP, а часть из W7.

    А можно вставить в статью какие-нибудь интересные картинки?
    Просто приведенные изображения (фотографии) уж больно профессионально сделанного устройства.

    Поймите правильно, я не отрицаю, что автор сделал такой же…
    Но я так чисто паять не умею, и уж точно не оставил бы на текстолите надписть USBasp (мне то она зачем на программаторе для личного использования?)

    • +1
      Да, вот последняя картинка хороша — то что надо для привлечения внимания.
    • +3
      ХР стоит на старом компьютере, из под нее и прошивался контроллер «пятью проводками». А дальнейшая работа с программатором уже из под Win7. Спасибо за высокую оценку качества изготовления ;)



      Плата на фотографии — мой испытательный полигон с мк Atmega32 и с дисплеем от Nokia 3310.
      • +1
        А разработку платы справа опишите? Или хотя-бы ссылку дайте, где почитать
        Хочу дать своим студентам собрать, как задание на курсовой проект.
        • +1
          Описание этой платки можно посмотреть здесь.
          • 0
            Вот там (по ссылке) действительно могучий проект, гораздо лучше програматора — лучше бы его привели.
            Или, все у нас впереди?
      • 0
        Гыг
  • +1
    Самое забавное что ваша плата почти 99% клон программатора PROTOSS. И не поймешь кто из авторов у кого спер)
    • +2
      Тут сложно Америку открыть. Контроллер, кварц, обвязка USB, пара светодиодов, резисторы да перемычки — ничего не добавишь и не выкинешь. Отличия могут касаться цепей питания, наличия/отсутствия всяких защит, да программной части. Пожалуй, всё.
  • 0
    Напоминает USBASP
    • +1
      Прошу прощения. Не внимательно прочитал )
  • 0
    Тоже хотел собрать что-то подобное. Но к сожалению, такие программаторы не подходят для контроллеров ATtiny25/45, так как их нужно прошивать в режиме HVSP.
    • 0
      Это в случае если вам нужны все 6 ног контроллера.
      • 0
        Первый раз прошить tiny25 и установить фьюз RSTDISBL (вы ведь о нем говорите?) можно через SPI. А вот чтобы этот фьюз снять и прошить контроллер повторно, уже нужен высоковольтный программатор.
    • 0
      Вот вам отличное руководство на русском языке, менше габартитами за указанное здесь и дешевле, поскольку на «тиньке»
      • 0
        неакуратно прочитал… да. но все-же там идея как обойти ограничения — прошыть програму и только тогда ставить фюзы
  • 0
    USBASP уже давно не актуален и собирать его нет смысла. т.к. есть клоны ISP MK2 которые умеют шить по PDI и их можно прошить через USB бутлоадер уже встроенный на заводе. Т.е. решена проблема курицы и яйца.

    Также рулят программаторы на FTDI которые тоже не требуют прошивки, а также рвут USBASP по скорости прошивки.
    • 0
      По простоте сборки usbasp и ему подобные остаются в лидерах, по сравнению с тем же на ft232, для которого еще надо постараться плату вытравить :)
      А вот с JTAG согласен, рулит! Хочу себе JTAGICE собрать, но в наличии только atmega32. Не знаете ли, существует прошивка под этот камень?
      • +2
        Ну травануть плату под FT232RL ничуть не сложней чем под TQFP который вы применили. А под AT90USB162 на котором сделан ISP так вообще также.

        easyelectronics.ru/files/AVR/jt32.zip
        Вот вам прошивка ICE для меги32. Там же и фуз биты.
        • 0
          спасибо!
    • 0
      Поддержу уважаемого DIHALT.
      Программаторы на FTDI не требует прошивки — и в этом их огромный плюс.

      Вообще, насколько я понимаю, у новичков некоторая неразбериха в голове, что такое программатор и, самое главное, чем они отличаются друг от друга.
      Отлично написанная статья про их различия на примере программатора FTDI friend от автора (adafruit). Все исходники есть на GitHub, так что можно повторить самому, если есть желание сделать программатор самому.
  • 0
    В перемычке Slow SCK тоже надобности нет: скорость обмена можно задавать программно. Например, в мультипротокольном avrdude параметром -B (с прошивкой ревизии 2009.02.28 и свежее).

    Ещё полезно к USBasp прикрутить опторазвязку, решив две проблемы:
    1) обеспечить гальваническую развязку для обслуживания устройств с отсутствием таковой
    2) обеспечить преобразование уровней между программатором и обслуживаемым МК при необходимости
  • 0
    Я не электронщик. Меня смущает то на схеме не указанно несколько контактов (соединения пинов МК) и часть конденсаторов ( С1 ) в сравнении с разведенной печатной платой.
    Хочу попытаться переразвести и уменьшить размер платы.
  • 0
    В работе оставшиеся ноги микроконтроллера не используются, поэтому ничего в этом нет что они никуда не подсоеденены.
    Конденсатор между шинами питания (С1 на плате) это просто фильтр по питанию, керамический конденсатор емкостью 0,1 мкф.
  • 0
    С avrdude работает, не знаете?
    • 0
      Так первоначально он только с avrdude и работал.
      Позже, когда начал приобретать популярность, стали появляться сторонние оболочки и поддержка средствами разработки.
      Вот новая версия платы для этого проггера, с возможностью менять напряжение питания.

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