Программатор usb avr: USB AVR программатор для микроконтроллеров ATmega, ATtiny – 403 — Доступ запрещён

ПРОГРАММАТОР AVR USB

   Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание устройства. Предохранитель защищает линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 впрямительные кремниевые, они предназначены для понижения питания микроконтроллера до 3,6 В. Согласно документации, контроллер может работать при таком напряжении питания до частоты чуть более 14 МГц. Светодиоды VL1 («RD”), VL2 («WR”) сигнализируют о текущих действиях программатора и обозначают режимы чтения и записи. Светодиод VL3 («PWR”) показывает подачу питания на программатор.

   Джампер J1 – (MODify) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 — NORMal. 

   Джампер J3 LOW SCK понижает тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Переключать джампер можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Джампер J3 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц. 

   Резисторы R10 — R14 предназначены для согласования уровней сигналов микроконтроллера программатора и внешних цепей (программируемый МК или другой программатор). Тактовая частота порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. 

Плата программатора микроконтроллеров avr через порт usb

   На вывод LED разъема ISP выведен меандр с частотой 1 МГц для «оживления» МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора. Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP (ATMEL AVR Open Source Programmer). Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в «0») биты SPIEN, CKOPT

, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в «1»). 

   Инструкция по установке и работе. Прошить контроллер. Подключить свежеиспеченный программатор к компьютеру через USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы. 

   На форуме находятся все файлы, а также печатная плата для нашего программатора avr. Здесь покажу технологию сборки USB программатора AVR и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

ПРОГРАММАТОР AVR USB

   Потом впаиваем на неё все детали. Не смог найти маленький кварц, поэтому впаял большой, но на длинных ножках, чтобы потом загнуть, чтоб не мешал при установки платы в корпус. Далее подбираем подходящий корпус, у меня был готовый.

Корпус для ПРОГРАММАТОРА МК AVR USB

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

сверлим отверстия и вот вам готовый прибор

   Если нет специальной измерительной аппаратуры, можно произвести проверку при помощи светодиода. Светодиод подключается анодом к контакту LED, катодом к любому контакту GND ISP-разъема. При подаче питания светодиод должен светится в «полнакала». При замыкании пинцетом ножек кварцевого генератора светодиод должен либо засветится в «полный накал», либо свечение должно отсутствовать. 

Схема программатора микроконтроллеров avr через порт usb

   Без ощибок собранный программатор с правильно запрограммированным микроконтроллером в настройке не нуждается. Но если у программируемого МК вход RESET подтянут к напряжению питания резистором, то номинал резистора не должен быть ниже 10 кОм – это связанно с пониженным напряжением питания управляющего контроллера в схеме программатора и введением ограничительных резисторов на шине ISP-разъема.

   Форум по usb программатору

   Обсудить статью ПРОГРАММАТОР AVR USB


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

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

Представляю схему универсального программатора, с помощью которого можно программировать все типы AVR микроконтроллеров. Универсальный usb программатор состоит из usbasp программатора и ZIF панели для программирования.

Схема usbasp

Ниже на скрине приведена схема программатора avr. Чтобы собрать zif программатор, понадобится zif панель на 40 выводов и микроконтроллер Atmega8.

Собрав по этой схеме usb программатор, можно будет программировать любые микроконтроллеры из серии AVR, достаточно только расположить нужный микроконтроллер в zif usbasp панели, установить перемычки в нужные места, подключить к USB и программировать c помощью специальной программы, например AVRDUDE_PROG.

Плата usbasp

Дальше на скрине показана плата программатора avr. Так выглядит печатная плата avr usbasp в проекте программы DipTrace.

Изготовление программатора avr usb

Несколько фото процесса изготовления печатной платы zif avr с металлизацией отверстий. Печатная плата usbasp программатора после металлизации отверстий и после нанесения паяльной маски.

Фото готовой печатной платы программатора avr.

Глянец паяльной маски FSR-8000.

Фото собранной печатной платы универсального программатора AVR.

Данная статья опубликована на сайте whoby.ru. Постоянная ссылка на эту статью находится по этому адресу http://whoby.ru/page/usb-programmator

Читайте статьи на сайте первоисточнике, не поддерживайте воров.

Как программировать

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

Еще хотел сделать акцент на порядок смены положения перемычек и расположения микроконтроллера в zif панели. Сначала usbasp программатор нужно отключить от USB порта, затем выставить перемычки для нужного микроконтроллера AVR, затем установить его согласно схемы (фото ниже) и только после этого подключать к USB порту.

Если менять положение перемычек и МК на «горячую», то возможно спалить микросхему, если что то случайно перепутали.

Прошивка через usbasp

Далее на фото показаны варианты расположения перемычек и установка определенного типа микроконтроллера в zif панель. На фото представлены два варианта для каждого типа микроконтроллеров, внешнее тактирование (с кварцем) и без внешнего тактирования (без кварца). Выбирайте любой удобный и необходимый в конкретном случае вариант.

Программирование Tiny 13, 15, 45

Программирование Atmega 16, 32, 8535

Программирование Tiny 2313

Программирование Tiny 26

Программирование Atmega 8, 48, 88, 168, 328

Программирование Atmega 8515

Внутрисхемное программирование

На плате имеется специальный 6 pin разъем, подключившись к которому, можно программировать микроконтроллеры, установленные на печатной плате устройств, не выпаивая их с платы. В данном случае, расположение перемычек не влияет на внутрисхемное программирование.

Файлы для сборки

В приложенном ниже архиве, находятся файл печатной платы программатора avr usbasp. Также в архиве есть драйвер usbasp программатора и прошивка usbasp usb, с помощью которой можно прошить наш avr programmer.

Если вы решитесь собрать данный универсальный программатор AVR, то хочу вас предупредить. ZIF панели бывают двух типов, с широкой и узкой посадкой для ножек. Нам нужна такая ZIF панель для программатора, в которую можно вставить все типы микросхем.

Посмотрите на фото и увидите отличия между ZIF панелями, покупайте с широкими вырезами для ножек, иначе программатор получится не полноценным в связи с ограничением установки некоторых микроконтроллеров.

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

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

Всем легкого программирования.

Статью написал: Admin Whoby.Ru

Еще записи по теме



Скоростной AVR USB программатор на FT232RL без вспомогательного контроллера

При работе с микроконтроллерами важнейшим девайсом являетя программатор, именно он может залить в МК нашу программу. Он же часто становится камнем преткновения на пути освоения AVR.
 

Дело в том, что для работы простейшего программатора, не требующего в своем составе микроконтроллера, нужен компьютер с COM или LPT портом, причем желательно с частотой процессора не выше гигагерца-двух. Да операционную систему подревней — WinXP или Win2K. А это ныне редкость.
 

С другой стороны, для USB программаторов нужно предварительно прошить контроллер. А чем его прошить? Вот тут и возникает проблема курицы и яйца — как прошить контроллер программатора не имея программатора.
 

Не так давно появилось решение позволяющее сделать надежный и быстрый USB программатор AVR на базе тупой, непрограммируемой, логики.
 

Bitbang, что это такое и с чем его едят
Это не что иное как прямое управление выводами какого либо порта. В COM порт можно отправить байт через какой либо высокоупровневый API и он просто выйдет через линию TX потоком стандартого RS232 сигнала.

А можно достучаться напрямую до регистров отвечающих за состоянием каждого пина порта и дрыгая их как нам угодно сэмулировать через тот же COM порт не только RS232, но и SPI, I2C или Dallas 1-wire, HD44780 протокол, применив простейший тупой обвяз. Это и будет битбанг.
 

В старых программаторах вроде SiProg (PonyProg) или в схеме Громова так и было сделано с COM портом. И работало надежно и стабильно. Но, увы, СОМ порт ушел в небытье, а при попытке сделать то же самое с виртуальным COM портом на конвертере USB-RS232 ничего не получалось. Т.к. заточен он был все же на работу нормального COM порта, а для битбанга приходилось извращаться. В результате такие схемы либо не работали вовсе, либо работали ОЧЕНЬ медленно, прошивая контроллер за час-полтора, что ни в какие ворота не лезет.

 

Все изменилось с появлением микросхемы конвертера USB-UART FT232R у которой стал доступен битбанг режим не через виртуальный COM порт, а напрямую через драйвер FTDI. И вот тут наступила нирвана.
 

За битбанг там отвечает 8 выводов. Вот их раскладка.

 
В даташите ее нет, но она есть в аппликухе Application Note AN_232R-01 for the FT232R and FT245R Bit Bang Modes
 

В результате, из одной только FTDI получается первоклассный скоростной программатор, прошивающий 16кб прошивки за 10-12 секунд и это вместе с верификацией!!!
 

А из деталей надо ТОЛЬКО микросхему FT232RL, два конденсатора на 0.1uF и гнездо USB. ВСЕ! Ну и проводочки естественно.
 

Схема включения получается следующей:


Но у этого программатора есть один минус — он не отдает линию RESET по завершении программирования. Поэтому чтобы схема стартанула надо выдрать из платы разьем ISP, что очень неудобно. Я взял и добавил к этой схеме буфферную микросхему. 74HC244, ту самую которая использовалась в программаторе STK200.
 

Эта микросхема является буффером и по сигналу ОЕ переводить выходные линии в Z состояние. Подал на ОЕ высоки уровень — считай что отрезал программатор от программируемой схемы. Осталось только тумблерок RUN/PROG поставить и одним движением осуществлять запуск.
 

Но тумблер мне было ставить вломы, поэтому я решил сделать кнопочный переключатель на RS- триггере. Сам триггер собрал на двух 2И-НЕ элементах микросхемы стандартной логики 74HC00 (вроде нашей К155ЛА3 только жрет намного меньше). На это ушло два вентиля. Кнопочки перекидывают его из режима RUN в режим PROG, кондер на одной из кнопок задает начальное положение при включении.
 

Ну а из оставшихся двух вентилей я скреативил генератор прямоугольного сигнала, на случай если по ошибке залочу фузами МК на внешний тактовый сигнал. Резистор и конденсатор для генератора взял первые попавшиеся на столе. Оказался на 22pF и 10кОм. Что дало в результате частоту около 2 с копейками МГЦ. Их также завел через буффер и вывел на штырьки.
 

Развел платку:

Вытравил и спаял:


 
Управляющий софт:
Теперь о софте. Шьется все посредством программы avrdude, причем, как я понял, это не простая дудка, а немного переделанная и с дополнительной библиотечкой именно для битбанга. Потому как со старой, то что под USBASP ничего не заработало. А также немного подправленный avrdude.conf, где определен новый программатор.
 

Добавлена секция:

1
2
3
4
5
6
7
8
9
10
#FTDI_Bitbang
programmer
  id    = "ftbb";
  desc  = "FT232R Synchronous BitBang";
  type  = ft245r;
  miso  = 3;  # CTS(11 PIN FT232R) 
  sck   = 5;  # DSR(9 PIN FT232R)
  mosi  = 6;  # DCD(10 PIN FT232R)
  reset = 7;  # RI (6 PIN FT232R)
;

#FTDI_Bitbang programmer id = «ftbb»; desc = «FT232R Synchronous BitBang»; type = ft245r; miso = 3; # CTS(11 PIN FT232R) sck = 5; # DSR(9 PIN FT232R) mosi = 6; # DCD(10 PIN FT232R) reset = 7; # RI (6 PIN FT232R) ;

 

Где:

  • id — это как мы будем звать наш программатор в командной строке avrdude.
  • desc — описание что за программатор
  • type — дает понять, что мы используем либу для FT245R (впервые было сделано на этой микрухе)
  • miso, sck, mosi, reset — какой ноге какая битбанг Dn линия соответствует. См. таблицу что была выше

Работает в винде (в ХП точно, в остальных не проверял, нету у меня их), в линухе и говорят даже на маке.
 

Линухом я не пользуюсь, мак для меня бесполезен (а с шалфея еще и прет круче! =) ), поэтому показывать буду в винде:
 

Итак, первым делом дергай у меня архив с похаченной дудкой и конфигом. Также надо тебе поставить драйвера FTDI и воткнуть железку в USB, чтобы в системе появился виртуальный COM порт. Это будет означать что все встало и работает.
 

Дальше распакуй архив с avrdude где нибудь поближе, C:\FTBB\ например. Консольные утилиты, особенно забугорные, очень не любят русские названия, а также длинные имена с пробелами.
 

Теперь разберемся с дудкой. Вообще это очень могучая программа, она поддерживает по моему вообще все возможные программаторы. Но консольная, так что потребуется некоторая сноровка. Для примера накачу бутлоадер на ATmega16
 

Итак, для прошивки нам потребуется командная строка такого вида:
 
avrdude.exe -p m16 -c ftbb -P ft0 -U flash:w:m16boot.hex:a
 

  • -p тип контроллера. m16 означает что у нас мега16, остальные ключи надо смотреть в хелпе к дудке.
  • -с тип программатора. В avrdude.conf он у нас описан как ftbb вот его и указываем.
  • -P порт на котором сидит программатор. В данном случае в комп воткнута только одна микросхема FT232RL так что ft0 если воткнуто несколько таких конвертеров то этот параметр может быть ft1, ft2 и так далее. Как определить сразу под каким номером у нас сейчас программатор я так и не дотумкал. Впрочем не особо и пытался да и нужды такой не было — определяю перебором, не первый так второй.
  • -U говорим что что то заливаем. Формат такой memtype:r|w|v:filename[:format] вначале указвыаем куда (flash, eeprom или fuse), потом что делаем читаем, пишем, проверяем, затем путь к прошивке. Прошивка у меня валяется в том же каталоге что и avrdude.exe поэтому и путь только лишь имя файла. Если же прошивка лежит где то далеко, то полный путь можно указать в кавычках, например, так: «c:\FTBB\m16boot.hex». А последняя «а» означает, что тип файла с прошивкой определить автоматом.

 

Включаем на программаторе режим программирования. Запускаем эту бодягу и… получаем облом. А почему? А потому, что изначально мега16 настроена на частоту в 1Мгц, а мы ей битбангом пытаемся загнать данные на максимальной скорости. Для обхода этой проблемы есть ключ снижения скорости
 

avrdude.exe -p m16 -c ftbb -P ft0 -U flash:w:m16boot.hex:a -В 4800
 

Шить, конечно, будет медленно, раз так в 10 медленней. Но ведь никто не запрещает вначале переткнуть fuse биты на более скоростную частоту, а потом вернуть обратно? 😉
 
Запустив это, ты должен увидеть на экране разные прогрессбары, вроде таких:


c:\FTBB>avrdude.exe -p m16 -c ftbb -P ft0 -U flash:w:m16boot.hex:a -B 4800
avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK

ft245r: bitclk 4800 -> ft baud 2400
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e9403
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be perfo
rmed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
ft245r: bitclk 4800 -> ft baud 2400
avrdude.exe: reading input file «m16boot.hex»
avrdude.exe: input file m16boot.hex auto detected as Intel Hex
avrdude.exe: writing flash (16310 bytes):

Writing | ################################################## | 100% 115.44s

avrdude.exe: 16310 bytes of flash written
avrdude.exe: verifying flash memory against m16boot.hex:
avrdude.exe: load data flash data from input file m16boot.hex:
avrdude.exe: input file m16boot.hex auto detected as Intel Hex
avrdude.exe: input file m16boot.hex contains 16310 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 109.06s

avrdude.exe: verifying …
avrdude.exe: 16310 bytes of flash verified
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you.

О fuse битах
Я их шью вот такой строкой (Warning!!! Справедливо ТОЛЬКО ДЛЯ ATmega16, для других AVR значение FUSE байтов другие — надо уточнять по даташиту иначе можно заблокировать кристалл!!!):
 

avrdude.exe -p m16 -c ftbb -P ft0 -B 4800 -U hfuse:w:154:m -U lfuse:w:228:m -U lock:w:63:m
 

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

А вообще, чтобы не заморачиваться со всемии этими строками и ключами создал себе командный файл burnboot.cmd в который вписал две строчки:
 

avrdude.exe -p m16 -c ftbb -P ft0 -B 4800 -U hfuse:w:154:m -U lfuse:w:228:m -U lock:w:63:m
avrdude.exe -p m16 -c ftbb -P ft0 -U flash:w:m16boot.hex:a

 

И теперь шью в один тычок. Вначале накатываются фузы, чтобы скорость тактовую поднять и шить на предельной скорости, потом вкатываю прошивку.
 

Также есть GUI оболочка на avrdude, правда у ней fuse биты тоже выставляются числом. Но зато можно пути выбирать через стандартные диалоги. Также, надеюсь YOURDEVICE допилит свою оболочку под USBASP до работы с этим программатором. Процесс уже пошел, но пока там сыровато и многие моменты не пашут.
 

Как юзать
1. Воткнуть ISP кабель в прошиваемую плату.
2. Нажать кнопку PROG — должна загореться зеленая лампочка. Программатор готов к работе.
3. Прошить прошивку, фузы, биты защиты.
4. Нажать кнопку RUN — программатор отпустит линию RESET и контроллер начнет выполнять программу.
 

Файлы и ссылки к статье
Модифицированный avrdude + все либы и конфиги для него. Там же GUI и мой батник
Схема программатора в формате Spring Layout
Страница автора bitbang метода для FTDI

В общем, программатор получился рулезный. Быстрый и удобный. На аппартном USB конвертере, не требует прошивки собственного контроллера как в USBASP и крайне прост, а в качестве бонуса дает еще и USB-UART интерфейс для отладки.

Остается лишь небольшая такая проблема, вытравить плату и припаять вот это:

Но я уверен, у тебя все получится, может не с первого, так с n-ного раза, но наверняка! =)

Программатор для AVR usb. (AVR910) |


Для программирования микроконтроллеров AVR требуется программатор. Проще всего сделать программатор для COM либо LPT. Но я работаю на ноутбуке, а в них сейчас устанавливаются только USB порты. Вот и назрела необходимость обзавестись программатором для AVR по USB. Сейчас, я скорее всего купил бы данный программатор. На ebay они стоят недорого, наверное, даже дешевле чем купить детали, сделать плату и всё спаять. Хотя если посмотреть с другой стороны, заказ с ebay будет идти по почте не меньше месяца, а собрать программатор avr usb своими руками, в силу его простоты, можно за вечер. Более того, если начинающий радиолюбитель сам соберёт программатор, то в дополнении к программатору он получит опыт, бесценный опыт, а это дорогого стоит.
Это второй мой USB программатор для AVR, первым я сделал программатор USB-asp, но он мне не очень понравился, так как иногда отваливался от моего компьютера, хотя на другом компьютере ничего подобного не наблюдалось. Я решил попробовать собрать другой программатор, и мой выбор пал на программатор AVR910. У данного программатора немного по другому реализована схема подключения по USB, и как позже оказалась, на моём компьютере всё работает очень хорошо. Я забыл о проблемах, которые у меня были с моим прошлым программатором. Описанный в данной статье программатор AVR910 является на данный момент моим основным программатором для AVR.
Схема и прошивка использованы с сайта проекта (http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm).

Питается программатор от USB порта. Для того чтобы не требовалось согласование с уровнями линий данных USB порта (3.6В) питание микроконтроллера составляет 3.6В. Для получения из 5В в USB порте 3.6В, используется схема их двух последовательно прямо включённых кремниевых диодов. На каждом диоде падает по 0.7В, а в сумме получается 1.4В. Диоды должны быть кремниевыми, не допускается использование диодов шотки, так как на них падает меньше 0,7В. Выходы разъёма программирования подключены через резисторы на 330 Ом для согласования уровней. Работает устройство на микроконтроллере AtMega8-16 на тактовой частоте 12МГц. На схеме приведены номера выводов для микроконтроллера в DIP корпусе, хотя я отраcсировал плату под SMD корпус, который называется TQFP. Программатор имеет индикацию записи, чтения, наличия питания. Также данный программатор имеет выход, на котором всегда присутствует меандр, частотой 1 МГц. Это очень классная и полезная штука для восстановления микроконтроллеров, у которых из-за ошибочно запрограммированных Fuse битов тактирование сконфигурировано от внешнего источника тактовых импульсов. Я таким образом уже несколько раз восстанавливал микроконтроллеры. Нужно всего лишь посмотреть в даташите на конкретный микропроцессор AVR, к какому выводу подключается внешний источник тактового сигнала, и подпаять к данному выводу источник меандра. Подключить программатор, и перепрограммировать fuse. Всё очень просто, но иногда здорово выручает!
Имеющиеся варианты реализации печатных плат под программатор AVR910 не совсем меня устраивали, и я выполнил трассировку своего варианта (скачать файлы проекта можно в конце статьи).

Защитный рисунок на фольгированный стеклотекстолит нанесён при помощи лазерного принтера и утюга.

После травления получилась вот такая красота. Я не сдержался, и процарапал тонер на дорожках между ножками микросхемы. Мне не терпелось проверить получились они или нет.


Для удобства пользования я отметил назначение каждого вывода программатора AVR910. Для это я нарисовал небольшую табличку, которую напечатал на глянцевой фотобумаге и наклеил на плату программатора двусторонним скотчем.

Групповую заготовку для таблички для печати на фотобумаге размером 10х15 я положил в архив со всеми файлами к данной записи. Скачать его можно в конце данной статьи.
Прошивку для программатора можно скачать по ссылке в конце статьи.
Fuse биты устанавливаются с соответствии с рисунком ниже:

Как запрограммировать микроконтроллер AtMega8 для программатора AVR910 можно посмотреть в моём видео:
Программирование AVR.
Корпус для программатора AVR910 я не смог подобрать, мне хотелось, чтобы программатор оставался маленького размера, и изначально я пользовался голой, никак не изолированной платой. Но затем я купил широкую прозрачную термоусадку и усадил в неё программатор. Что в итоге получилось вы видите на фото. По моему довольно интересно и даже симпатично.


С термоусадкой всё кажется просто, но мне было сложно сделать отверстия под штыри. Если протыкать отверстия шилом, то при усадке термоусадочная трубочка рвётся начиная от данных отверстий. Я даже испортил несколько заготовок, но у меня в конце экспериментов всё получилось. В итоге я отверстия не протыкал, а проплавлял горячим паяльником с жалом иглой. По краям платы я спаял концы термоусадочной трубки. Спаиваются они очень просто – нагреваются оба конца трубочки, затем быстро, пока они не успели остыть, зажимаются и удерживаются зажатыми до полного остывания. Получается достаточно прочный спай. Я зажимал медицинским зажимом, на термоусадке даже остались следы от насечек на его губках.
При первом подключении к компьютеру программатора AVR910 в системе появится новое устройство AVR910. Теперь необходимо установить драйвера и можно работать.
Я работал с данным программатором на 32 битных системах Windows XP и Windows 7. Всё работает очень хорошо и никаких проблем не возникает. Проблемы возникли у меня когда я попытался установить драйвера для 64 битной Windows 7. Дело в том, что этот драйвер не имеет цифровой подписи Microsoft и 64 битный Windows 7, будучи более защищенным в безопасности, блокирует все драйвера без цифровой подписи. Эту блокировку можно отключить, но это не совсем просто….. Так что имейте ввиду.
Заливаю прошивку в микроконтроллер я при помощи программы AvrOsp2. Она очень простая, не требует установки, бесплатна, поддерживает программатор AVR910 и огромное кол-во микроконтроллеров АВР, хорошо работает и имеет очень удобное меню для работы с FUSE битами. В общем, классная программка, мне она очень нравится, рекомендую! В видео ниже я показал процесс установки драйверов для AVR910, как настроить и пользоваться программой AvrOsp2.


В моей версии программатора я не установил выводной электролитический конденсатор на 22 мкФ, который устанавливается со стороны противоположной дорожкам и паяется в отверстия, которые находятся возле разъёма USB. Возможно потребуется установить дополнительный электролитический конденсатор ёмкостью 10-50мкФ параллельно впаянному керамическому конденсатору 0.1 мкФ, возле зелёного светодиода PWR. Ниже на картинке, от руки показаны места подключения.

Для работы программатора необходим микроконтроллер способный работать до 16 МГц. AVR AtMega8 выпускается в двух сериях, работающих до 8 МГц (серия L), они нам не подходят, так как проект работает от кварца на 12 МГц. Есть и обычная версия, которая работоспособна вплоть до частоты 16 МГц. Это то, что нам нужно. Ниже представлен кусочек даташита AVR AtMega8, в котором вычеркнуты версии микроконтроллеров которые не буду работать в данном программаторе, и выделены зелёной рамкой версии микроконтроллеров которые будут работать в данном проекте.

Скачать файлы проекта можно по ссылке — Programmator-dlja-AVR-usb.(AVR910)

UPDATE: Слава Корнев прислал модифицированную версию печатной платы. Модификация заключается в смене разъёма на ISP10.

Скачать можно здесь: Программатор-AVR910-с-ISP-коннектором

Рубрики: Инструменты радиолюбителя, Устройства своими руками | Тэги: AtMega48, AVR, AVR910, Инструменты радиолюбителя, программатор avr usb, Устройства своими руками | Ссылка

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

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

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

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

avrisp-mkII


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

avrisp-mkII

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

AVRISP mkII

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

Программатор Громова | Электроника для всех

Самый простой вариант программатора для AVR это пять проводков, припаиваемых к порту контроллера и втыкаемых в LPT порт. Не спорю, можно и так. Но я все же не рекомендую этот способ. Даже схему подключения давать не буду — если надо будет сам найдешь. Так как данный метод не очень стабилен, возможны сбои при прошивке, длина проводков ограничена двадцатью сантиметрами (если больше, то будет глючить), поэтому придется шариться в комповой заднице. Да и LPT порт спалить проще простого. В общем не рулез.

Шарясь по инету, я нашел отличный программатор, работающий через RS232 он же COM порт. А также удобную программу для прошивки контроллера UniProf от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder.

Саму программу UniProf можно скачать у меня, но лучше взять с сайта автора. Возможно там будет версия посвежее.

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

Это формат программы Sprint Layout которую можно скачать с моего сайта. Пустячок, а приятно. Впрочем, ее можно и на картонке спаять, слишком уж простая схема. Также есть альтернативная разводка платы которую прислал Shama, она на выводных резисторах

Для сборки программатора потребуется:

  • Три диода, любых из маломощных. Например 1N4148.
  • Семь резисторов на 1кОм. У меня резисторы типоразмера 1206
  • Если будешь делать по моей печатной плате, то можешь еще купить 3 резистора на 0 ом — перемычки, они же пофигисторы.

Печатная плата либо рисуется маркером, либо, как у меня, делается методом лазерного утюга.

Спаянную платку я запихал в корпусок, а провод подключил к компьютеру. Длина провода у меня составила метра полтора-два, а от программатора до контроллера стараюсь провод делать покороче.

Разьем DB9, что на фотке, я поставил для удобства. У меня туда подключаются разные прошивающие шнуры либо вот такой вот адаптер:

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

Запускай UniProf.exe и выбирай номер СОМ порта к которому у тебя подключен программатор. Сразу же должен определиться тип контроллера и высветиться над левым окном кода.

Не получилось? Тут три варианта:

  • Программатор спаян криво.
  • Дохлый контроллер.
  • Неправильно припаял проводки к микроконтроллеру.

Еще раз все досконально проверяешь и пробуешь снова. Должно получиться.

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

Скачиваешь Atmel AVR Studio — это официальная среда для разработки программ под микроконтроллеры AVR. Студия поддерживает все микроконтроллеры семейства Atmel AVR. Найти ее последнюю версию можно на сайте Atmel.com

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

Вот ее примерный текст:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
.INCLUDE "m16def.inc"
; это подключается список макроопределений 
; без него компилятор не будет знать под какой 
; именно процессор мы собираем программу
; если у тебя другой контроллер, то подставь 
; соответствующий инклюдник. Они находятся в
; папке AVR Studio по адресу 
; "AVR Tools\AvrAssembler\Appnotes\"
 
 
.MACRO outi 
LDI R16,@1 
OUT @0,R16 
.ENDMACRO 
; задаем весьма удобный макрос, позволяющий 
; записать произвольное заданное число в любой
; регистров за одну строку кода. 
.CSEG
.ORG 0x0000
RJMP RESET
 
.ORG 0x0030
; Директива начала кода с адреса 0х0030
; адрес взят с большим запасом, потому как
; у разных AVR разных размеров таблица 
; прерываний. Так что уж чтобы наверняка!
 
 
RESET:
; стартовая метка
 
OUTI DDRA,0xFF
OUTI DDRB,0xFF
OUTI DDRC,0xFF
OUTI DDRD,0xFF
; Конфигурируем направления портов на выход
; Если данный контроллер не имет, например, порта
; С, то эту строчку надо закомментировать.
 
OUTI PORTA,0xAA
OUTI PORTB,0xAA
OUTI PORTC,0xAA
OUTI PORTD,0xAA
; Выдаем на выходы 10101010, чтобы получить
; четкую картину того, что на портах произошли
; изменения. После выполнения программы
; на выходах микроконтроллера в шахматном порядке
; будут либо напряжение питания, либо земля. Что 
; легко проверяется либо вольтметром, либо простейшим
; пробником на светодиоде.
 
RJMP RESET
; Зацикливаем программу.

.INCLUDE «m16def.inc» ; это подключается список макроопределений ; без него компилятор не будет знать под какой ; именно процессор мы собираем программу ; если у тебя другой контроллер, то подставь ; соответствующий инклюдник. Они находятся в ; папке AVR Studio по адресу ; «AVR Tools\AvrAssembler\Appnotes\» .MACRO outi LDI R16,@1 OUT @0,R16 .ENDMACRO ; задаем весьма удобный макрос, позволяющий ; записать произвольное заданное число в любой ; регистров за одну строку кода. .CSEG .ORG 0x0000 RJMP RESET .ORG 0x0030 ; Директива начала кода с адреса 0х0030 ; адрес взят с большим запасом, потому как ; у разных AVR разных размеров таблица ; прерываний. Так что уж чтобы наверняка! RESET: ; стартовая метка OUTI DDRA,0xFF OUTI DDRB,0xFF OUTI DDRC,0xFF OUTI DDRD,0xFF ; Конфигурируем направления портов на выход ; Если данный контроллер не имет, например, порта ; С, то эту строчку надо закомментировать. OUTI PORTA,0xAA OUTI PORTB,0xAA OUTI PORTC,0xAA OUTI PORTD,0xAA ; Выдаем на выходы 10101010, чтобы получить ; четкую картину того, что на портах произошли ; изменения. После выполнения программы ; на выходах микроконтроллера в шахматном порядке ; будут либо напряжение питания, либо земля. Что ; легко проверяется либо вольтметром, либо простейшим ; пробником на светодиоде. RJMP RESET ; Зацикливаем программу.

А лучше не копипасти, а сразу скачай файл проекта.

Далее жми на кнопку компиляции (или F7) и лезь в папку своего проекта. Там тебя уже должен поджидать ****.hex файл с прошивкой.
Запускай UniProf.exe, жми на кнопочку с открытой папкой и надписью HEX. Выбирай свой свежескомпиленный проект и жми ок.
Вторым окном UniProf попросит тебя ввести данные EEPROM, у нас EEPROM не используется, поэтому нажимай отмену.
Все, теперь можно прошивать. Жми на красную стрелку с надписью Prog и жди. По окончании можешь нажать чтение и поглядеть что записалось в твой контроллер — должно показать то же самое, что и было уже загружено в окно.

Теперь тебе остается подать питание на свой микроконтроллер и посмотреть что появилось на портах. Увидел «гребенку» из высоких и низких уровней напряжения? Отлично! Ты прошил свой первый в жизни контроллер! Теперь ты можешь с головой занырнуть в изучение микроконтроллеров AVR.

Если не заработало, то вот возможные грабли и пути решения.

  • Современные компьютеры, с гигагерцовыми процессорами, новомодными Вистами и Семерками очень плохо дружат с этим программатором. Мало того, что у вас может банально не обнаружиться COM порта, а если и будет так еще не факт что все заработает как надо. Рекомендую собрать себе для радиотехнических опытов из подручного хлама что то вроде PIII 800/Windows’98. Бесплатно нарыть такое чудо проблем не составит и сжечь не жалко, если что не так
  • Данная схема не работает через переходники USB-COM или работает, но ОЧЕНЬ медленно. Скажем прошивка одного микроконтроллера может длиться часа полтора.
  • Питание, на первый раз, лучше всего брать с блока компа. Меньше вероятность что либо сжечь или ошибиться
  • Проверяте схему по 3-4 раза! Т.к., судя по комментам, большая часть проблем из-за кривого монтажа.
  • Перед запуском программы в МК НУЖНО ОТКЛЮЧИТЬ ПРОГРАММАТОР и подать на вход RESET +5 вольт через резистор в 1..10кОм. С подключенным программатором ничего работать не будет, т.к. он прижимает RESET и не дает кристаллу стартовать.
  • Если UniProf не определяет МК, возможно у вас слишком быстрый компьютер. Для компенсации этого «недостатка» нужно включить галочку «Тормоз» Она показывается если отключить снятием галки EEPROM панель отображения данных EEPROM.
  • Если галка Тормоз не помогла, то пробуйте на другом компе. Т.к. тут СОМ порт обрабатывается в нештатном режиме, а значит не факт, что ваш СОМ порт поймет все правильно.
  • На худой конец, если ничего не помогает, попробуйте программатор из 5 проводков или другую прошивающую программу, например avrdude. Провода делайте как можно короче! 10-15 сантиметров это МАКСИМУМ!
  • Читайте комменты к записи. Там многие косяки уже были разобраны. Возможно и ваш окажется среди них.

Дополнение от Outsider:
1. Если сзади у компа нет разъема COM-порта, то это не на 100% означает, что такого порта нет на материнской плате в принципе. Пока еще на матерях встречаются разъемчики с 9 штырьками в два ряда — подробнее нужно смотреть документацию к материнской плате. Я на своей ASUS P5K SE нашел и успешно заюзал.

2. Да, +5 и GND это не земля и контакт из COM-порта, а именно внешнее питание. Проще всего его добыть в компе — +5 есть в красном проводе на любом из разъемов, питающих жесткие диски. А GND — на корпусе самого компа. Или на черном проводе того же разъема.

3. Если с UniProf что-то не срастается, то можно попробовать avrdude. Чтобы это сделать, нужно прописать в avrdude.conf следующее:

programmer
id = «nikolaew»;
desc = «serial port banging, reset=dtr sck=rts mosi=txd miso=cts»;
type = serbb;
reset = 4;
sck = 7;
mosi = 3;
miso = 8;
;

А затем запустить avrdude со следующими параметрами:

avrdude -n -c nikolaew -P com1 -p m16

где «com1» нужно заменить на твой порт (если, конечно, используется другой), а «m16» на нужный тип микроконтроллера. Список поддерживаемых программой контроллеров можно найти здесь:http://www.nongnu.org/avrdude/user-manual/avrdude_4.html

Если все в порядке, то программа скажет:
avrdude: AVR device initialized and ready to accept instructions

Дополнение от Riko
Эксприменатально было выяснено, что для правильной работы этого программатора напряжение питания МК должно быть не ниже 5 вольт (но не выше 5.5!!!). То есть если МК подключен к трем пальчиковым батарейкам, то вы обламываетесь, так как там 4.5 вольта! Запитывайте от компа!!!

Дополнение от SLY_DEr
Не работало. Сменил резисторы с 3к (не было на 1к) на 460ом’ные — заработало, но с ошибками.
Решил чисто ради спортивного интереса снизить скорость ком-порта в диспечере устроиств и о, чудо, все заработало как надо. Скорость порта снизил с 9600к до 4800к и плюс убавил буфер приема и передачи (там же) до значений 4 и 6 соответственно.

Если что непонятно, то не стесняйся спрашивать у меня в комментах.

З.Ы.
Если не получается ну никак, то может быть ваша материнска плата не поддерживает столь нестандартное обращение с COM портом и стоит попробовать другие программаторы? Например, STK200 или FTBB. Они хоть и сложней, но зато работают более корректно, без извратов.

USBAsp USB SPI AVR — программатор

Описание

Характеристики USBAsp USB SPI AVR — программатора:

  • Работает под несколькими платформами. Linux, Mac OS X и Windows
  • Никаких специальных контроллеров или компонентов smd не требуется.
  • Скорость программирования до 5 кБайт / с.
  • Опция SCK для поддержки целей с низкой тактовой частотой (<1,5 МГц).
  • Размер: 64 x 20 x 10 мм
  • Длина соединительного кабеля: 30 мм.
  • Вес: 20 г.

Комплект:

  1. USBAsp USB SPI AVR — программатор x 1 шт.
  2. Соединительный кабель x 1 шт.

Особенности:

На плате имеются три перемычки, задающие разные режимы работы программатора:

JP1 — замыкается в случае обновления прошивки самого программатора.
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение).
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой. (на данной прошивке не требуется).

.

Список поддерживаемых AVR микроконтроллеров:

  • Mega Series: ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535.
  • Tiny Series: ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A.
  • Classic Series: AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535.
  • Can Series: AT90CAN128.
  • PWN Series: AT90PWM2, AT90PWM3.

Скачать Драйвер и ПО для USBAsp USB SPI AVR — программатора

USBAsp USB SPI AVR - программаторUSBAsp USB SPI AVR — программатор

Отправить ответ

avatar
  Подписаться  
Уведомление о