Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

AVR910 USB пошаговая инструкция по сборке

Опубликовано 2013-01-31 12:29:13 автором Ruslan


Один из главных вопросов, который стоит перед начинающими программировать микроконтроллеры, – это выбор хорошего программатора.В своё время я тоже столкнулся с этой проблемой, перерыл кучу материала, и выбор пал на два простых программатора: программатор из пяти проводков и резисторов и AVR910 usb (можно приобрести у нас). Так как на тот момент мне хотелось побыстрей сделать “hello world” (помигать светодиодом), я сделал программатор из пяти проводков. Как собрать читаем в етой статье

Этот простой программатор – по-моему, лучшый вариант для быстрого старта начинающему. Однако он обладает и минусами: работает только через com- или lpt- порты, скорость заливки прошивки относительно небольшая.

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

AVR910 usb был моим следующим программатором. Его схема:

Данную схему можно собрать на макетке или использовать печатную плату

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

Джампер J3 используется для понижения тактовой частоты порта SPI МК программатора до ~20 кГц. Это необходимо для программирования МК AVR, тактируемых от внутреннего генератора 128 кГц. Нельзя переключать джампер в процессе прошивки

На ножку LED выведен меандр частотой 1 Mhz для оживления МК с ошибочно зашитыми fuse-битами, которые отвечают за источник тактирования МК

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

Программатор тестировался с программами AVRStudio, ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP, AVRDUDE

Итак, за дело. Для сборки нам понадобится:
Радиодеталь Модель КоличествоОсновная характеристика Магазин
МикроконтроллерAtmega8 1 сердце программатораКупить
Диод 1n40007 2 выпрямительный Купить
Светодиодлюбой 1 маломощный Купить
Конденсатор
электролитический 1 от 10 В 22 мкФ Купить
Конденсаторкерамический 2 22 пкФ Купить
Конденсаторкерамический 3 0.1 мкФ Купить
Резистормаломощный (0,25 Ватт) 9 330 Ом Купить
Резистормаломощный (0,25 Ватт) 2 68 Ом Купить
Резистормаломощный (0,25 Ватт) 1 10 кОм Купить
Резистормаломощный (0,25 Ватт) 1 1 МОм Купить
Резистормаломощный (0,25 Ватт) 1 1.5 кОм Купить
Резистормаломощный (0,25 Ватт) 1 100 Ом Купить
Кварц 1 12 МГц
Купить
Разъем USB USBB-1J 1 Купить
Разъем ISP BH-10 1 Купить
Предохранитель выводной 1 0,1 A Купить
Текстолитфольгированный 1 10 х 15 см Купить

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

устанавливаем fuse-биты, как показано на рисунке

нажимаем Program All

Распиновка разьема ISP программатора Всё, теперь наш программатор готов к использованию, и мы можем приступать к первому проекту на микроконтроллерах (мигания светодиодом)
Также имеются альтернативные прошивки для превращения avr910 usb в Stk500 или USBAsp

Комментарии – (4)

  • sem-ant говорит:

    ни как не могу найти перемычку J5 подскажите где находится
  • Gregory говорит:

    Собрал такой программатор, все нормально, ОС его видит,”устройство работает нормально”, только ChipBlaster,SinaProg, AVR8_Burn_O_Mat, CodeVision его не признают.AVR8_Burn_O_Mat сообщает:”avrdude: error: programmer did not respond to command: enter prog mod” и остальные сообщения такого типа. Что можно исправить? Или выбросить и пользоваться старым добрым STK200, который признают все программы? Спасибо!
    • Admin говорит:

      Вы чтото напутали. Я работаю им в CodeVision, все прекрасно работает без проблем. Разберитесь с настройкой COM портов.
  • Triger говорит:

    В описании данного программатора то ли случайно то ли специально внесены неточности … Перемычка J5 отсутствует – питание на ISP от USB – не подаеться .. соответственно при программировании чип не будет запитан от USB … На других сайтах где описываеться схема подобного устройства вывод 2 разьема ISP находиться под питанием … Вывод – принципиальная схема – правильная – печатная плата – не верна – при повторении программируемый контроллер не будет запитан от USB … Прошу прощения если это некропост но может комуто пригодиться …
Добавить комментарий
Для отправки комментария вы должны авторизоваться.

articles.greenchip.com.ua

Программатор для 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, Устройства своими руками | Ссылка

www.elenblog.ru

ISP Программатор avr910 для AVR микроконтроллеров схема и драйвера

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

Название программатора avr910 как ни странно это номер аппноута(документации по применению avr микроконтроллеров) под номером 910.
В данной документации собраны стандарты и требования к программатору для работы по командам требуемым для корректной прошивки микроконтроллера посредством интерфейса SPI.

В интернете есть довольно хороший проект программатора совместимого по набору команд с AVR910, автор проекта программатора PROTTOSS(prottos.com).

Схема программатора AVR 910:

Для защиты USB порта компьютера необходимо установить предохранитель, хоть USB портов в современном компьютере хватает с головой но все же выгорание одного порта маленькая трагедия для современного пользователя ПК.
Основа программатора AVR 910 это микроконтроллер ATmega8 без разницы можно использовать как микроконтроллер в DIP корпусе так и в TQFP.
Программатор AVR 910 имеет переключатель, который предусматривает заливку свежего программного обеспечения программатор со стороннего программатора. В исходном положении программатор работает в штатном режиме.
Программатор AVR 910 имеет три индикатора:
1. индикатор чтения данных из подключенного микроконтроллера,
2. индикатор записи данных в микроконтроллер,
3. индикатор питания программатора.

На всякий случай для защиты микроконтроллера от выгорания из-за превышения напряжения питания в схеме установлены два диода, которые понижаю примерно на 0,7 Вольта 5 Вольт, которые выходят из USB порта компьютера.

Одной из изюминок данной версии программатора является выведенный на отдельный вывод выход генератора с частотой 1МГц, его назначение следующее:
часто случается что микроконтроллер с неправильно запрограммированными фьюзами не хочет отвечать подключенному программатору. В основном фьюзы в таком случаи лечатся при помощи подключения генератора, частота которого должна составлять 1МГц или меньше.

Программатор AVR 910 имеет перемычку для понижения скорости работы программатора с подключенными микроконтроллерами, сделано для того, что бы понизить скорость работы до 20кГц.

Программатор совместим с такими программами и комплексами:
– пакет программ AVR Studio 5,
– вражеский CV AVR,
– ChipBlaster AVR.

Драйвер, программа прошивки и информация по сборке в архиве.

Скачать драйверы программатора avr910

Из личного опыта:
Программатор работает хорошо, единственное что не устроило это скорость работы.
Заливка программы в микроконтроллер ATmega328 заняла по времени почти 30 минут. К сведению объем памяти микроконтроллера ATmega328 32 килобайта.

avrlab.com

Фрикер Клуб » USB программатор AVR (AVR910)

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

Не вдаваясь в теорию, которой предостаточно в интернете, отмечу лишь основные моменты. Официальный сайт программатора http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm, там есть описание, драйвера и прошивка. Вроде бы этого достаточно, но, можно ошибиться на этапе программирования fuse-битов, и долго думать, почему это западло не работает.

Для программатора UniProf установка бит следующая:

Собираем программатор по предложенной схеме, разводку платы делал под ATMega8 – 16AU, поэтому брать нужно именно его, а не 16PI, все SMD компоненты размера 0508. В эту схему можно добавить стабилитроны для защиты линий данных USB порта, т.к. по инструкции напряжение не должно превышать 3.6 вольта, это не обязательно, может работать и так, однако есть вероятность ушатать порт.
Собранный программатор подключаем через пять проводков к LPT, перемычку ставим в режим MODIFY, запускаем UniProf, проверяем почему не заработало, материмся и идём собирать примочку к COM порту, может случиться и так, что через LPT шиться не станет, не вытянет уровни.

Допустим что UniProf радостно сообщил нам что mega8 найдена. После этого нужно снять галку EEPROM (его шить не нужно), нажать кнопку ERASE, Open HEX, выбрать прошивку, нажать Prog. После успешного программирования необходимо выставить FUSE биты, как показано на рисунке. LOCK-биты трогать вообще не нужно.
Теперь для проверки закрываем программатор и заново его запускаем, если контроллер не определился, то не работает кварцевый резонатор. Проверяем генерацию осциллографом, смываем лишний флюс, проверяем номиналы конденсаторов  (у меня заработало с номиналом 4,7pf).
Если всё заработало, то ставим перемычку в режим NORM, подключаем к компьютеру. Венда сразу должна определить USB Programmator и предложить поискать драйверы в интернетах, на что указываем ей путь к файлу inf. Теперь в системе появится виртуальный COM порт, на который можно настроить CodeVisionAVR.

Файлы по теме:

UniProf — программатор «по пяти проводкам» LPT\COM

AVR910.Driver — драйвера для Windows

USB.910.Programmer — прошивка hex

usb_prog_smd — плата в формате Layout 5.0

(C) exchange
www.phreakerclub.com

phreakerclub.com

Программатор AVR910 USB • hardlock.org.ua •

Всё честно спёрто с этого сайта с согласия автора. Я только добавил схему и печатную плату для TQFP корпуса ATmega8.

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

Конструкция:

Схема программатора приведена на рисунке ниже. Предохранитель F1 служит для защиты линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 – обычные выпрямительные, с прямым падением напряжения ~0,6…0,7В, предназначены для понижения питания микроконтроллера DD1 до 3,6 В. Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи. Светодиод VL3 служит для сигнализации подачи питания на программатор.


Оригинальная схема автора

Джампер J1-J2 служит как для начального программирования микроконтроллера (замкнут J1 – MODify), так и для использования в качестве разъема программатора (замкнут J2 – NORMal) . Резисторы R10 – R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера.

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

Cкорость работы порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для tiny/mega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. На вывод LED разъема ISP выведен меандр с частотой 1 МГц для “оживления” МК, у которых были ошибочно запрограммированы фьюзы, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора

Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, AVROSP (ATMEL AVR Open Source Programmer), CodeVisionAVR . Кроме того, программатор тестировался с программой AVRDUDE, однако, программа с данным программатором не совместима, так как не все команды протокола AVR910 отрабатывает корректно. Программатор позволяет программировать все контроллеры AVR, поддерживающие ISP (In System Programming – Программирование В Системе), а так же МК серии 89S – 89S53 и 89S8252. На данный момент с вышеперечисленными программами протестировано программирование контроллеров 89S53, 89S8252, 90S2313, 90S8515, ATtiny13, ATtiny26, ATtiny45, ATtiny2313, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega16, ATmega32, ATmega64, ATmega128, AT90CAN128.

Я настоятельно рекомендую повторять схему один-в-один, так как выкидывание “лишних” деталей из схемы может привести либо к неправильному функционированию программатора, либо к возможному выходу из строя USB порта на РС, за что, естественно, я ни какой ответственности не несу.

Прошивка FUSE BITS:

Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированны (установленны в “0”) биты SPIEN, CKOPT и SUT0. Обычно МК, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Так же желательно (но не обязательно) запрограммировать (установить в “0”) бит BODEN, что разрешит работу встроенного в МК broun-out детектора. При незапрограммированном бите BODLEVEL уставка срабатывания broun-out детектора будет на уровне 2,4…2,9 Вольт… Остальные биты должны быть незапрограммированны (установленны в “1”)

Инсталляция:

Windows XP

Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. ОС найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к файлу prottoss.avr910.usb.inf. При предупреждении, что драйвер не имеет цифровой подписи, послать ОС в эротическое путешествие. Небольшие проблемы у меня возникли, когда, после установки, программа AVRProg v. 1.4 не смогла найти программатор, так как ОС присвоила ему номер COM9. После мониторинга портов оказалось, что AVRProg ищет устройство только на портах COM1 – COM4. Изменить номер порта можно, если зайти в диспетчере устройств в: AVR910 USB Programmer -> Свойства–> Параметры порта -> Дополнительно -> Номер COM-порта

Windows 2000

В принципе, инсталяция не отличается от описанной выше для Windows XP, но есть одно НО – задержки в драйвере usbser.sys портят цепочку команд от ПО на РС до программатора и, соответсвенно, цепь ответов обратно от программатора до ПО на РС… Проблему я пока не установил, но есть решение…Конечно не самое красивое, но работает надежно Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки …\winnt\system32\drivers\ и …\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP2 можно взять здесь или во вложениях. Естественно, что драйвер придется подменять загрузившись под другой ОС (например с загрузочного диска). Так как ядра этих двух ОС очень схожи, то драйвер от ХР прекрасно себя чувствует под 2000 По крайней мере, я протестировал еще несколько устройств, прикидывающихся USB CDC Class, и все они работали как обычно… Попытки инсталировать драйвер от ХР через установочный файл, к сожалению, ни к чему не привели. Если кто то знает, как это можно сделать, буду признателен.

Файлы:

Все архивы содержат файл прошивки, установочный inf-файл и схему в формате Adobe pdf. Кроме этого старые версии содержат описание в виде старой html страницы.

avr910_usb_programmer.files.ver.1.04.rar Версия от 16.12.2006. Добавлено подключение внутреннего pull-up резистора ко входу MISO МК программатора во время программирования таргета. Возможно, будет полезно при чтении плат с пониженным напряжением питания, да и вообще, думаю, положительно скажется на надежности чтения программируемого МК…

avr910_usb_programmer.files.ver.1.05.rar Версия от 17.01.2007. Добавлен джампер J3 LOW SCK для понижения тактовой частоты порта SPI программатора. В настоящий момент самая свежая версия прошивки

avr910_usb_programmer_source.v.1.05.rar Исходники версии 1.05 Заточенно и обкатанно на IAR v.4.10B

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



Так, а теперь немного отсебятины. Схему я всё таки немного переделал, но суть осталась та же.

Схема для корпуса TQFP

Для минимизации размеров печатной платы было решено применять ATMega8 в корпусе TQFP. Изменилась также разводка ISP коннектора (мне так удобней). Добавлена возможность питать программируемое устройство от программатора (от USB). Для этого перед программированием нажимаем кнопку SELF POWER. Перемычки J3 LOW SCK и MODIFY / NORMAL заменены кнопками. Так красивее и удобнее.

Печатная плата ниже. В формате Sprint-Layout v5.0 можно взять тут. На плате продублирован выход LED / XTAL для удобства пользования.


Печатная плата

Внимание!!! Печатная плата обновлена. подтягивающий резистор на RESET был неправильно разведён и конденсаторы по питанию отсутствовали.

Прошивал этот программатор следующим образом:

  • подключил к USB (питание МК осуществляется от USB)
  • подключил его к программатору STK200/300 (он у меня был собран давно),

  • нажал кнопки SELF POWER и MODIFY. (Тем самым подаём питание на STK200/300 и соединяем вывод RESET с колодкой программирования) кнопка SELF POWER для питания ПРОГРАММИРУЕМЫХ устройств, в том числе и программатора, который туда подключен, а не наоборот.
  • с помощью PonyProg залил прошивку. Им же выставил FUSES. Должно получиться вот так:

FUSES в PonyProg`e

Остаётся лишь добавить, что этот программатор успешно работает у меня на 3-х ноутбуках. Собирал его из-за отсутствия LPT и COM портов в этих самых ноутах.

Вот что должно было получиться (кликабельно):


Вид 1

Вид 2

Изготавливаем корпус из заглушки для флопика.

Изготавливаем корпус 2

В корпусе (вид свурху)

В корпусе (вид снизу)

Половинки корпуса приклеены к плате с помощью жидкого метала (2-х компонентной эпоксидной смолы).

hardlock.org.ua

Переделываем AVR 910 в USB ASP для штатной работы драйвера в x64 Windows — Good Chip

При переходе  с Windows x86 на Windows x64 столкнулся с проблемой, что мой программатор AVR910 от Protoss не желает в ней работать. Точнее x64 Windows отказывается устанавливать драйвера без цифровой подписи. Подписать родные драйвера от Protoss  не представляется возможным без покупки лицензии Developer у корпорации зла. Остается как вариант либо отключить проверку подписи драйверов. Либо перевести ОС в Тестовый режим. Постоянная работа в тестовым режиме тоже не сулит ничем хорошим, да и решение — это не решение, а костыль….  Альтернатива только найти драйвер подписанный сертификатом.

В процессе решения данной проблемы мой взгляд пал на альтернативные прошивки для AVR910 by Protoss. Так я встретил довольно много переделок  AVR910 в STK500… На форуме некий Ink подготовил несколько альтернативных прошивок для AVR910.

  • Doper-CDC —  нам не подходит, так как там используется тот же lowcdc.sys без подписи…
  • Doper-HID — нам подходит, он вообще не требует стороннего драйвера, но скорость записи в 260 б/с вызывает панику…
  • USBasp — имеет скорость записи в 1.5 кБ/с, и использует драйвер libusb. Который мы и будем использовать.

libusb  начиная с версии 1.2.0 имеет цифровую подпись, соответственно эти драйвера будут работать в штатном режиме на x64 системе.

Скачать — прошивка для превращения AVR910 в USBASP.

Fuse bit:

  • Должны быть запрограммированы  — SPIEN, CKOPT, SUT0 и BODEN;
  • Или High Fuse:0*CF; Low Fuse:0*AF;

Скачать —  драйвер для Windows (x64 и x32). Этот драйвер проходит проверку цифровой подписи! При установки необходимо разрешить установку драйвера неизвестного производителя!!!

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

Для прошивки контролеров программатором USBASP необходимо другое программное обеспечение:

  • AVRDUDE — консольная кроссплатформенная программа для прошивки микроконтроллеров.
  • e-Xtrem burner — индийская разработка конкретно для USBASP.
  • SinaProg — GUI для AVRDUDE
  • AVRDUDE PROG — еще один GUI для AVRDUDE

В статье AVR910 программатор — описано как собрать программатор, приведена печатная плата и список деталей.

Так же как установить драйвер для USB ASP для Windows 10 (7/8) x64 с помощью программы Zadig можно прочитать тут.


Купить готовый программатор на aliexpress

 

ISP Программатор для ATMEL AVR ATMega ATTiny

MiniPro TL866CS

good-chip.in.ua

AVR-USB-MEGA16: как сделать AVR910-совместимый программатор (STK200) | avr-working-with-usb

Давно точил зубы на программатор AVR910, поскольку он довольно популярный, и поддерживается многими программами. Я знаю как минимум 3 программы, работающие с ним – avrdude, AVR Studio, CodeVision AVR.

Этот программатор давно разработала сама компания Atmel (кажется аж в 2000 году), и полностью опубликовала всю документацию по нему, включая схему, код firmware программатора и протокол работы. Именно по этой причине AVR910 стал стандартом де-факто и до сих пор популярен. Изначально программатор AVR910 был рассчитан на подключение к компьютеру через последовательный COM-порт, и это со временем стало его серьезным недостатком – COM-порты трудно найти в современных компьютерах. Поэтому стали появляться клоны AVR910 (см. Ссылки), которые можно было подключить через USB. Эти AVR910-программаторы использовали для подключения к USB удачную микросхему FT232 (преобразователь USB <-> COM-порт), либо библиотеку V-USB компании Objective Development. На основе библиотеки V-USB делалось firmware, поддерживающее CDC-класс, к которому не нужен драйвер – нужен только информационный inf-файл. Этот класс организует в компьютере виртуальный COM-порт, через который и ведется обмен данными с AVR910.

Мне попались в руки исходники программатора PROTTOSS на чипе ATmega8 (выражаю большую признательность автору). Этот программатор основан на старой версии библиотеки V-USB (см. ссылки). Я портировал его код на чип ATmega16, что позволило без особого труда сделать из макетной платы AVR-USB-MEGA16 программатор, совместимый AVR910 и подключаемый по USB. Схема программатора видна на рисунке (красным цветом показаны дополнительные детали и соединения, которые надо установить на макетное поле платы). В результате получается программатор, полностью аналогичный функционально программатору PROTTOSS-а.


    
На схеме фиолетовым цветом показана доработка макетной платы AVR-USB-MEGA16, чтобы получился программатор AVR910. Кварц необходимо поменять на 12 МГц (на макетной плате AVR-USB-MEGA16 может быть установлен кварц на 16 МГц. У меня в плане доработать исходники, чтобы можно было использовать все кварцы, которые на сегодняшний день поддерживает библиотека V-USB – 12, 15, 16, 16.5 и 20 МГц). На макетное поле установлено 2 ISP-коннектора (6 pin мама и 10 pin папа) для подключения программируемых устройств, а также установлены 2 светодиода – зеленый RD и синий PWR, перемычка LOW SCK и необходимые резисторы. Красный светодиод D1 (он уже был установлен на макетной плате) показывает режим записи программируемого устройства. Зеленый светодиод RD показывает режим чтения. Синий светодиод PWR показывает, что наличие питания на программаторе и показывает активность программатора (его включает и выключает процедура FlashTstLed, вызываемая из главного цикла main). Перемычка LOW SCK переключает скорость чтения и записи программируемого устройства. Когда перемычка снята, то скорость максимальная (используется аппаратный SPI), а когда установлена, то скорость искусственно снижается (при этом протокол SPI реализован программно). Более подробно про алгоритм работы перемычки LOW SCK и всего программатора можно почитать на сайте PROTTOSS (см. ссылки) – он остался без изменений.

На фото представлен внешний вид получившегося программатора. Цифрами в кружках показано назначение отдельных деталей на плате.   

1 – разъем miniUSB J1, через который программатор подключается к компьютеру.
2 – ISP коннектор U1, который используется для записи firmware в макетную плату AVR-USB-MEGA16. Через него нужно записать в микроконтроллер U2 программу для работы программатора (двоичный файл Debug\Exe\avr910protoss.bin или avr910protoss.hex из архива проекта, см. ссылку 1).
3 – кварц U4, который надо поменять на 12 МГц (на макетной плате AVR-USB-MEGA16 установлен кварц на 16 МГц).
4 – разъем U3 JTAG, который может использоваться для программирования и отладки firmware (если Вы счастливый обладатель JTAGICE mkII).
5 – красный светодиод WR – когда программатор что-то пишет в программируемое устройство, светодиод мигает.
6 – зеленый светодиод RD – когда программатор что-то читает из программируемого устройства, светодиод мигает.
7 – коннектор для подключения внешнего напряжения питания 5 В – этот коннектор устанавливать необязательно. Я его припаял и использовал при отладке. Можно использовать для умощнения питания при программировании устройств, потребляющих более 70 ма. Внимание! Будьте осторожны с полярностью и напряжением (оно должно быть точно 5 В +/- 0.2 вольта) дополнительного источника питания – чтобы не спалить USB-порты и плату программатора.
8 – штырек, на который я отдельно вывел сигнал 1 МГц (нужен для приведения в чувство микроконтроллеров, у которых ошибочно зашиты фьюзы для использования внешнего кварца), который у PROTTOSS почему-то называется LED. Этот сигнал также выведен на 10-pin коннектор, и я его вывел на отдельный штырек для удобства. Устанавливать необязательно.
9 – перемычка LOW SCK.
10 – синий светодиод PWR.
11 – атавизм – перемычка, которую хотел использовать для сигнала RESET. Устанавливать не нужно.
12 – ISP коннектор 6 pin мама, предназначенный для программирования внешних устройств (рабочий коннектор программатора AVR910).
13 – ISP коннектор 10 pin папа, предназначенный для программирования внешних устройств (рабочий коннектор программатора AVR910).
    
[Отличия описываемого здесь программатора от программатора PROTTOSS]

1. Я применил на всякий случай 2 ISP-коннектора – один 6-выводный (мама), другой 10-выводный (папа). Оба коннектора имеют ставшие стандартными цоколевки, которые широко используются.
2. Перемычка J1J2, которая использовалась у PROTTOSS для прошивки firmware в сам программатор, убрана из схемы за ненадобностью, так как макетная плата AVR-USB-MEGA16 имеет для целей программирования firmware AVR910 отдельный ISP-коннектор U1 (помимо JTAG-коннектора U3).
3. Схема программатора питается не от 3.3 вольт, а от 5 вольт, и на коннекторы ISP выведено напряжение питания 5 вольт, которое можно использовать для питания программируемой платы (если, конечно, она не потребляет ток больше 70 мА). Для подключения дополнительного источника питания можно использовать коннектор 7 (например, если программируемая плата потребляет ток больше 70 ма).
4. Предохранитель по питанию F1 на 0.1 А отсутствует. В нем нет особой нужды, поскольку в протоколе USB оговорено ограничение тока, потребляемое устройством по шине USB (100 мА по умолчанию, и 500 мА для устройств повышенной мощности), и все современные материнские платы и ноутбуки аппаратно поддерживают ограничение тока.
5. Светодиод “PWR” подключен не к шине питания, а к порту микроконтроллера, что позволяет его использовать также и для отладки.

Больше принципиальных отличий нет. Если необходимо программировать микроконтроллеры не от 5 вольт, а от 3.3 вольт, то я советую Вам установить на макетную плату интегральный стабилизатор на 3.3 вольт (например, дешевый LM1117), и запитать все схему от него. Можно даже предусмотреть переключение напряжения питания перемычкой – либо 5 вольт (прямое питание от USB), либо 3.3 вольт (питание от выхода стабилизатора LM1117). Никаких изменений в схему программатора при этом вносить не нужно.

При первом подключении программатора Windows XP запросит драйвер – скормите ей inf-файл AVR910.Driver\2k_xp_32\avr910.usb.2000.xp.inf (находится в архиве пакета с документацией и исходниками, см. ссылки).

[Проблемы прошивки, которые нужно исправить]

1. Программа работает только с кварцем на 12 МГц, хотя библиотека V-USB позволяет также использовать кварцы на 15, 16, 16.5 и 20 МГц.

2. Программа не работает с программатором avrdude. По словам автора, причина в некорректной обработке команд LED_ON и LED_OFF протокола – avrdude посылает команду LED_XX и не посылает состояние светодиодов, а firmware программатора эту ситуацию некорректно обрабатывает.

Если кто-нибудь из читателей поправит код и решит эти проблемы, буду очень рад.

[Работа программатором через консольную программу avrdude]

Программатор avrdude доступен в исходниках и скомпилированном виде для систем Windows и *nix, его легко скачать в Интернет. Эта программа несомненно порадует Линуксоидов, поскольку с помощью неё можно работать с программатором AVR910 из *nix-систем. Но, к сожалению, у меня программатор AVR910 работал с avrdude некорректно – то, что записывалось в чип ATmega16, не проходило верификацию. Кроме того, работает avrdude на запись чипов с описываемым в статье программатором очень медленно – например, микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт 727 секунд (12 минут). Чтение происходит быстро – за 18 секунд. Наверное, это связано с некорректной работой avrdude с AVR910 от PROTTOSS.

Пример комплексной операции – стирание чипа ATmega16, записи в него файла avr910protoss.hex (формат Intel Hex) и сверки содержимого flash с файлом avr910protoss.hex:

avrdude.exe -p m16 -c avr910 -P com4 -U flash:w:”C:\asm\AVR910-protoss\Debug\Exe\avr910protoss.hex”:i -U flash:v:”C:\asm\AVR910-protoss\Debug\Exe\avr910protoss.hex”:i -e -F

Пример записи перемычек 0xBF (low) и 0x09 (high):

avrdude.exe -p m16 -c avr910 -P com4 -U lfuse:w:0xBF:m -U hfuse:w:0x09:m -F

Пример чтения flash в файл progmemory.hex:

avrdude.exe -p m16 -c avr910 -P com4 -U flash:r:”C:\asm\AVR910-protoss\Debug\Exe\progmemory.hex”:i -F 

[Работа с программатором из CodeVision]

В среде CodeVisionAVR работать с программатором AVR910 довольно просто (я экспериментировал с версией CodeVisionAVR 2.04.4a Advanced). Сначала настраиваете тип программатора – выбираете в меню Settings -> Programmer, выбираете тип программатора Atmel AVRProg (AVR910) и порт Communication Port. Тут надо указать тот COM-порт, который появляется в системе при подсоединении программатора к компьютеру (можно посмотреть через Диспетчер Устройств). Скорость выбираете 115200. Микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт примерно за 42 секунды, проверка записи занимала 23 секунды.

[Работа с программатором из AVR Studio]

Тут тоже все просто. Выбираете в меню Tools -> AVR Prog…, и программа автоматически находит программатор AVR910 (порт указывать не нужно). Выбираете файл для программирования (в формате Intel HEX), выбираете тип программируемого чипа и жмете кнопку Program. Есть также кнопка Advanced…, которая позволяет стереть чип и настроить его перемычки. Микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт примерно за 15 секунд (вместе с проверкой!). Отдельно проверка занимает примерно 3 секунды. Это наилучший результат! Такая высокая скорость, по словам PROTTOSS, получается за счет того, что программа от Atmel использует команды блочного обмена данными.

[Проблемы, которые у меня были с программатором AVR910 (PROTTOSS)]

1. Известная проблема несовместимости с avrdude.

2. “AVRProg error entering programming mode”. Симптомы такие – светодиоды при попытке программировать/прочитать чип моргают (т. е. программатор система видит, и обмен данными с программатором есть). Проблема была в том, что не контачил сигнал SCK в коннекторе ISP (он не доходил до программируемого чипа).

3. При перетыкании программатора из одного порта USB в другой меняется номер COM-порта, привязанного к программатору. Например, в одном порте он может быть COM3, а в другом COM4. В программаторе CodeVision AVR приходится менять настройку порта программатора, а в программаторе AVR Studio приходится перезапускать программу (AVRprog от AVR Studio находит порт автоматически, если он в пределах COM1..COM4). К сожалению AVR Studio, в отличие от CodeVision, не видит порты COM5..COM8 (при перетыкании они вполне могут привязаться к программатору).

В принципе, это не проблема, а так – фича. Такое поведение легко поправить, если в файле usbconfig.h ввести макроопределение USB_CFG_SERIAL_NUMBER_LENGTH не равное нулю, и usbCfgSerialNumberStringDescriptor со строкой серийного номера. Я попробовал – работает, COM-порт получается всегда один и тот же при включении в разные порты USB. Внимание – если Вы задали серийный номер устройства в usbconfig.h, то в компьютере нельзя одновременно использовать несколько программаторов с одинаковыми серийными номерами (хотя, собственно, зачем это надо?).

Вот так выглядят в реестре настройки программатора с назначенным серийным номером AVR910-AVR-USB-MEGA16. Теперь номер COM-порта при перетыкании по портам USB остается неизменным (COM3).

Старые ненужные настройки виртуальных USB COM-портов можно удалить. После удаления их настроек при подключении устройства Windows снова запросит драйвер. Удалять надо подпапки внутри папки HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_16c0&Pid_05e1. Обычно эти подпапки именуются загадочно типа 5&160f4e1&0&2 – это и есть серийный номер, который назначается Windows автоматически, если в устройстве серийный номер не задан. Если же серийный номер задан, то подпапка будет иметь имя, совпадающее с серийным номером (например, подпапка AVR910-AVR-USB-MEGA16). Чтобы удалить подпапку, нужно поставить разрешения (Permissions) на её удаление. Это делается просто. В редакторе реестра (в Windows XP это regedit.exe, в W2K это regedt32) кликните правой кнопкой на подпапке с именем, совпадающим с серийным номером, и выберите в контекстном меню “Permissions…”. В открывшемся окне для пользователя Everyone (Все по-русски) поставьте галочку на Full Control (полный доступ), нажмите OK. Теперь подпапка даст себя удалить.

Номер назначенного виртуального USB COM-порта программатора можно поменять вручную через Диспетчер Устройств. Это делается просто. Запускаете диспетчер устройств, идете в раздел “Ports (COM & LPT)”. Находите там порт, соответствующий Вашему программатору. Например, это “Communications Port (COM15)”. Мы хотим поменять COM15 на что-то более удобное, например COM3 (этот номер порта физически должен быть свободен, то есть сейчас в Диспетчере Устройств он должен отсутствовать или быть запрещен). Для этого кликните правой кнопкой на “Communications Port (COM15)”, выберите Свойства (Properties). На закладке Port Settings нажмите кнопку “Advanced…”, в выпадающем списке “COM Port Number:” выберите COM3. В этом списке может быть написано, что этот порт используется “COM3 (in use)”, но не обращайте на это внимания – Windows просто читает данные из реестра, где может быть указано, что такой порт когда-то использовался. После смены номера COM-порта в выпадающем списке жмем OK, еще раз OK. Если теперь обновить список оборудования в Диспетчере Устройств (меню Action -> Scan for hardware changes), то порт программатора теперь поменяется с COM15 на COM3.

4. При подключенном по USB программаторе не получается перетыкать программируемые платки в коннекторе ISP, если эти платки питаются через этот коннектор. Из-за броска напряжения по питанию программатор перестает функционировать, и приходится перетыкать интерфейс USB. Побороть эту беду можно несколькими способами – отключить у чипа ATmega16 Brown-Out детектор напряжения питания (соответствующими фьюзами), поставить фильтр по питанию коннектора ISP, запитать программируемую плату отдельно, либо подать дополнительное мощное питание +5 вольт на программатор (или применить все эти меры в комплексе).

[Настроечные биты микроконтроллера]

Для обеспечения работы микроконтроллера важно правильно выбрать значение его внутренних настроек (фьюзы, fuses). Самое главное, что необходимо обеспечить – правильную работу тактового генератора, за его работу отвечают фьюзы SUT1, SUT0 (start-up time, время запуска) и CKSEL3..0 (выбор источника для тактирования). По умолчанию выбран внутренний тактовый генератор 1 МГц, что не подойдет, так как для библиотеки V-USB надо обеспечить работу кварцевого резонатора. Вполне работоспособны следующие настройки для этих бит:

SUT1SUT0 = 11, CKSEL3..0 = 1111 (высокочастотный резонатор, время запуска 16 тыс. тактов CK + 64 мс)

SUT1SUT0 = 01, CKSEL3..0 = 1111 (высокочастотный резонатор, время запуска 16 тыс. тактов CK)

Остальные фьюзы не так важны, их можно оставить в значениях по умолчанию. Они выбирают включение/выключение различного функционала микроконтроллера (например, разрешение отладки, разрешение работы JTAG, разрешение программирования через SPI, разрешение работы узла детектора пропадания напряжения питания и т. д.). Советую обратить особое внимание только на фьюзы JTAGEN и SPIEN, так как от них зависит работоспособность программирования кристалла.

Для проверки правильности установки фьюзов используйте даташит на микроконтроллер, а также замечательный сайт, посвященный выбору фьюзов для микроконтроллеров AVR – Engbedded Atmel AVR® Fuse Calculator site:engbedded.com (строка для поиска Google).

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

0xBF LOW BYTE, 0x09 HIGH BYTE
0x9F LOW BYTE, 0XC9 HIGH BYTE

Основное отличие этих двух вариантов в том, что у первого разрешена отладка и JTAG, а у второго запрещены.

0xBF LOW BYTE, 0x09 HIGH BYTE
0x9F LOW BYTE, 0XC9 HIGH BYTE

Основное отличие этих двух вариантов в том, что у первого разрешена отладка и JTAG, а у второго запрещены.

Обратите внимание, что здесь рекомендуемые значения фьзов совпадают с предыдущей врезкой для микроконтроллера ATmega16. Ничего удивительного, набор фьюзов у микроконтроллеров ATmega16, ATmega32, ATmega32A одинаковый.

Если Вы используете загрузчик (к примеру USBasp для ATmega32 или BootloadHID для ATmega16) обратите внимание на фьюзы, которые управляют размером секции загрузки: BOOTSZ1 и BOOTSZ0.

[Ссылки]

1. Проект, описанный в статье, с исходниками – 091106AVR910-protoss.rar (для IAR EWB AVR 5.20), с документацией и драйвером для компьютера. Готовая скомпилированная прошивка для ATmega16 лежит в папке Debug\Exe архива (в форматах bin и hex). Только прошивку и драйвер (без исходников) можно скачать здесь – 091106AVR910-protoss-binaries.zip.
2. AVR910: In-System Programming site:atmel.com.
3. Программатор микроконтроллеров AVR / 89S совместимый с AVR910 site:prottoss.com.
4. Программаторы для AVR.
5. V-USB site:obdev.at – библиотека V-USB компании Objective Development, avr-usb-russian.rar – версия V-USB с русскими комментариями. Пошаговое руководство, как начать использовать библиотеку V-USB.
6. Макетная плата AVR-USB-MEGA16.
7. Программы для AVR. Там есть ссылка на закачку CodeVisioAVR, с которым работает программатор AVR910. 
8. AVR-USB-MEGA16: как сделать STK500-совместимый ISP и HVSP программатор (AVR-Doper).

microsin.net

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *