02Igorek › Блог › Программатор USB ISP для AVR
Всем привет.Пришел долгожданный прогер, моя новая игрушка. Ждал его аж 2 месяца, поэтому ссылку давать не буду. Драйвера скачал, встали, прогер видится, все отлично. Рассказывать про него не буду, только, что он созданный немцем Томасом Фишлем. Прогер хороший, функционал большой
Пост буду редактировать в дальнейшем.Благодарю за внимание
Назначение джамперов:— разъем JP1 — предназначен для перепрошивки микроконтроллера программатора (для перепрошивки — необходимо замкнуть контакты)— разъем JP2 — напряжение питания программатора — 5 Вольт или 3,3 Вольта (по умолчанию — 5 Вольт, как на фотографии). Программируемый микроконтроллер, или конструкцию, в которой он установлен, при токе потребления 300-400 мА можно запитать с программатора, для этого на разъеме есть выход +5В (VCC).— разъем JP3 — определяет частоту тактирования данных SCK: разомкнутый — высокая частота (375 кГц), замкнутый — низкая частота (8 кГц)Подробнее о разъеме JP3Джампер JP3 предназначен для уменьшения скорости записи данных в микроконтроллер. Если у микроконтроллера установлена частота тактирования более 1,5 мГц — джампер может быть разомкнут, при этом скорость программирования высокая. Если тактовая частота менее 1,5 мГц — необходимо закоротить выводы джампера — снизить скорость программирования, иначе запрограммировать микроконтроллер не получится. К примеру, если мы будем программировать микроконтроллер ATmega8 (в принципе, практически все МК AVR настроены на тактовую частоту 1 мГц по умолчанию), у которого частота тактирования по умолчанию 1 мГц, необходимо будет замкнуть выводы джампера (как на фотографии). Лучше, наверное, держать этот джампер постоянно замкнутым, чтобы, забыв о его существовании, не мучиться вопросом — почему микроконтроллер не прошивается.
Программатор поддерживается следующим программным обеспечением:— AVRdude— AVRdude_Prog— Bascom-AVR— Khazama AVR Prog— eXtreme Burner AVR
Распиновка 10-контактного кабеля программатора USBASP:1 — MOSI — выход данных для последовательного программирования2 — VCC — выход +5 (+3,3) Вольт для питания программируемого микроконтроллера или программируемой платы от порта USB компьютера (максимальный ток 200 мА — чтобы не сжечь порт USB)3 — NC — не используется4 — GND — общий провод (минус питания)5 — RST — подключается к выводу RESET микроконтроллера6 — GND7 — SCK — выход тактирования данных8 — GND9 — MISO — вход данных для последовательного программирования10 — GND
AVR ISP Prorgammer
Программатор поддерживает следующие семейства кристаллов:
TinyAVR
ATtiny11L, ATtiny11, ATtiny12V, ATtiny12L, ATtiny13, ATtiny15L, ATtiny2313, ATtiny26L, ATtiny26, ATtiny28V, ATtiny28L
AVR
AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535
MegaAVR
ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega161, ATmega162, ATmega163L, ATmega169, ATmega8515, ATmega8535, ATmega2560, ATmega2561, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega649, ATmega6490
Отличительные особенности:
— внутрисхемное программирование (не требуются дополнительные переходные панели, при этом выводы программирования используются в проекте)
— поддержка программатора популярными компиляторами AVRstudio, IAR AVR, Image Craft AVR.
— автоматическая верификация (100% гарантия соответствия зашитого кода исходному)
— высокая скорость программирования, возможность прошивки серийного номера кристалла
я долгое время удачно пользовался и продолжаю пользоваться этим надежным и простым программатором, работающим через LPT порт.
Схема этого простого, но надежного программатора:
Двусторонняя плата помещается в разъем:
Мне понадобился второй программатор, а описанный ниже USB программатор не мог шить нужный мне микроконтроллер. Поэтому я решил повторить этот LPT программатор.
Компьютерные тенденции таковы, что LPT порт скоро исчезнет. Поэтому пора присмотреть альтернативу.
Универсальный программатор 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
Читайте статьи на сайте первоисточнике, не поддерживайте воров.
Переделываем AVR 910 в USB ASP для штатной работы драйвера в x64 Windows
При переходе с Windows x86 на Windows x64 столкнулся с проблемой, что мой программатор AVR910 от Protoss не желает в ней работать. Точнее x64 Windows отказывается устанавливать драйвера без цифровой подписи. Подписать родные драйвера от Protoss не представляется возможным без покупки лицензии Developer у корпорации зла. Остается как вариант либо отключить проверку подписи драйверов. Либо перевести ОС в Тестовый режим. Постоянная работа в тестовым режиме тоже не сулит ничем хорошим, да и решение — это не решение, а костыль…. Альтернатива только найти драйвер подписанный сертификатом.
В процессе решения данной проблемы мой взгляд пал на альтернативные прошивки для AVR910 by Protoss. Так я встретил довольно много переделок
libusb начиная с версии 1.2.0 имеет цифровую подпись, соответственно эти драйвера будут работать в штатном режиме на x64 системе.
Скачать — прошивка для превращения AVR910 в USBASP.
Скачать — драйвер для Windows (x64 и x32). Этот драйвер проходит проверку цифровой подписи! При установки необходимо разрешить установку драйвера неизвестного производителя.
Так как AVR910 от USBASP отличается лишь прошивкой, то просто заменив контролер программатора можно быстро превратить AVR910 в USBASP. Так для этих целей я подготовил два контролера.
Для прошивки контролеров программатором USBASP необходимо другое программное обеспечение:
В статье AVR910 программатор — описано как собрать программатор, приведена печатная плата и список деталей.
Купить готовый программатор на aliexpress
ISP Программатор для ATMEL AVR ATMega ATTiny
Общие сведения
Программатор USBAsp распространяется и открытым исходным кодом, так что при желании можно изготовить самому, скачав печатную плату и прошивку с сайта Thomas, из-за этого в различных интернет магазинах существует различные варианты программатора с одинаковым функционалом. В моем случае буду рассказывать о USBAsp V2.0 китайского производителя LC Technelogy.
Программатор собран на синий печатной плате, слева расположен USB-разъем необходимый для подключения к компьютеру. В центре располагается контроллер ATmega8A, рядом установлен кварцевый резонатор на 12 МГц и электрическая обвязка (резисторы, конденсаторы). Справа расположен 10-контактный разъем (два ряда, по пять выводов, шагом 2.54 мм), обеспечивающий обмен данными с прошиваемым микроконтроллером (интерфейс ISP). В комплекте поставляется кабель, с каждой стороны которого, установлен разъем IDC (10 выводов), для простоты прошивки некоторых плат (например Arduino), советую приобрести адаптер-переходник с 10-pin на 6-pin. Назначение выводов программатора USBAsp можно посмотреть на рисунке ниже, вид на стороне программатора.
Назначение выводов: ► 1 – MOSI ► 2 – VCC ► 3, 8, 10 – GND ► 4 – TXD ► 5 – RESET ► 6 – RXD ► 7 – SCK ► 9 – MISO
Световая индикация► Красный светодиод G — Включен ► Красный светодиод R — Обмен данными
Перемычки ► JP1 — POWER, управляет напряжением на разъеме ISP VCC (вывод 2), можно установить на + 3.3В, + 5В или вовсе убрать перемычку, если программируемое устройство, имеет собственный источник питания. ► JP2 — SERVICE, обновления прошивки USBasp. ► JP3 — SLOW, программирования на низких скоростях, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц.
Принципиальная схема программатора USBAsp V2.0 можно посмотреть на рисунке ниже.
Список поддерживаемых 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 программатора
Существует много версий печатной платы данного программатора, некоторые можно найти на официальном сайте USBasp. Однако, была сделана своя на основе выше представленной схемы.
К сожалению, из-за применения DIP переключателей, рисунок платы стал немного сложнее, что привело к применению 2 коротких перемычек, с целью чтобы печатная плата была по-прежнему односторонней.
Ниже результат печатной платы:
Как видно на рисунке, в программаторе не применялись SMD элементы. Пустое пространство на плате „залито” полем массы, главным образом для того, чтобы не вытравливать большое количество меди, а также снизить влияние помех на программатор.
Список элементов используемых в USBasp программаторе:
- R1: 10к
- R2: 180
- R3: 100
- R5, R6: 68
- R7: 2к2
- C1, C2: 22п
- C3: 10мк
- C4: 100н
- LED1: Красный светодиод на 20мА
- LED2: Зеленый светодиод на 20мА
- D2, D3: стабилитроны на 3,6В
- X1: Разъем USB, тип B
- SV1: Гнездо под разъем IDC-10
- Q1: Кварц 12МГц, корпус HC49-S
- SW1: Dip переключатель трехпозиционный
- IC1: Atmega8 (ПРИМЕЧАНИЕ: Не следует использовать микроконтроллер Atmega8 — PU из-за его ограничение максимальной тактовой частотой до 8 МГц!)
Перенос рисунка печатной платы USBasp программатора на стеклотекстолит выполнен с помощью метода ЛУТ (лазерно-утюжной технологии). Как это делать описывать не будем, поскольку данной информации в сети много.
Вкратце скажем, что сначала рисунок в масштабе 1:1 печатается на глянцевой бумаге, затем он накладывается на очищенную и обезжиренную медную сторону стеклотекстолита и фиксируется с помощью бумажного скотча. Далее бумажная сторона тщательно разглаживается утюгом на 3-ке. После все это дело вымачивается в воде и аккуратно очищается от бумаги.
Следующий этап – вытравливание платы в растворе хлорного железа. Во время травления желательно поддерживать температуру раствора не ниже 40 C, поэтому банку с раствором погружаем в горячую воду:
После завершения процесса травления необходимо удалить тонер ацетоном.
Остается теперь только просверлить отверстия. После завершения процесса изготовления платы можно приступать к пайке элементов USBasp программатора, начиная с перемычек.
Готовые к печати (в формате PDF) рисунок печатной платы находится в конце статьи. Вы также можете найти несколько вариантов на официальном сайте проекта.
Устройство программатора USBasp
Программатор состоит из небольшого числа деталей. Мозгом программатора является микроконтроллер Atmega8, который имеет всего 8 кб флеш памяти и 1 кб ОЗУ(SRAM).Вроде и слабенький микроконтроллер по современным меркам, но столько всего можно на нем сделать.Из-за особенностей работы программного USB м/к работает на частоте 12мгц. Соответственно, при написании своей прошивки необходимо учитывать это.
USBasp имеет 10 контактный разъем, на который выведены 6 выводов микроконтроллера: PB5 (SCK), PB4 (MISO), PB3 (MOSI, PWM), PB2(PWM), PD0 (RXD), PD1 (TXD).
Плата имеет два встроенных светодиода на выводах PC0 и PC1.Выводы м/к PB0,PB1 и PD2 используются для программного USB,PC2 выведен на перемычку JP3.Остальные выводы микроконтроллера не распаяны.
схема USBasp2.0
распиновка разъема USBasp
Установка WinAVR в Atmel Studio
1. В пункте меню “Tools (Инструменты)” выберите “External Tools (Внешние инструменты)”.
2. У вас откроется окно, где вы должны будете ввести имя вашего инструментального средства.
3. В пункте “Title (название)” введите имя вашего внешнего инструментального средства. Можно выбрать любое имя, но в рассматриваемом примере мы выбрали имя “USBasp”. Поставьте галочку в пункте ”Use Output Window” и снимите галочку с пункта “Prompt for arguments” как показано на нижеприведенном рисунке.
4. Теперь ведите “Command”. Там будет необходимо указать путь к “avrdude.exe” – его вы можете найти в папке где установлена WinAvr. Просто найдите “WinAVR-20100110” на диске “C” вашего компьютера – куда вы устанавливали WinAvr.
5. Введите аргументы. Это самый важный шаг в этой последовательности действий поскольку от них будет во многом зависеть корректность работы приложения. Поскольку в рассматриваемом нами случае мы используем внешние инструментальные средства, то можно ввести следующие аргументы:
6. Больше аргументов можно найти по этой ссылке.
7. Введите аргументы в поле для ввода аргументов. Оставьте поле “Initial directory (Начальный директорий)” без изменений.
8. После заполнения всех полей нажмите “Apply” и затем “Ok”.
В результате этих шагов вы сможете использовать внешние инструментальные средства чтобы загружать программы в микроконтроллер. Проверим это с помощью тестового проекта (программы) “blink.c”. Файл main.c вы можете найти в конце этой статьи. Теперь скопируйте main.c в Atmel studio.
Особенности программирования микроконтроллеров AVR
Микроконтроллеры семейства AVR — это весьма популярная линейка дешевых микроконтроллеров производства фирмы Atmel. Микроконтроллеры AVR получили широкое распространение благодаря очень низкой стоимости и наличию бесплатных средств разработки и отладки Atmel Studio и бесплатных компиляторов языка C. В настоящее время фирма Atmel поглощена фирмой Microchip, что позволяет надеяться на улучшение надежности этих контроллеров. Микроконтроллеры AVR примечательны микропроцессорным ядром на основе RISC процессора и неплохим набором цифровой и аналоговой периферии, объединенной на одном кристалле.
Особенностью программирования всех контроллеров AVR является наличие кроме основного интерфейса программирования, режима последовательной загрузки — ISP. Несмотря на то, что ISP режим вынуждает пожертвовать частью выводов микроконтроллера и не поддерживает все режимы программирования, он получил широкое распространение благодаря простоте и дешевизне загрузочных кабелей (часто загрузочные кабели гордо именуются программаторами).
Большой ложкой дегтя ISP режима (в отличие, например, от аналогичного режима микроконтроллеров PIC) является возможность перевести микроконтроллер AVR в такое состояние, из которого его можно вывести только с использованием полноценного режима программирования (параллельного или высоковольтного). Еще один недостаток ISP режима программирования AVR — это необходимость программирования уже установленного на плате контроллера, хотя это же может быть и достоинством. Программирование в плате возможно, если конструкция платы предусматривает подключение разъема внутрисхемного программирования.
Программаторы ChipStar поддерживают, как программирование микроконтроллеров AVR в панельке программатора (полноценные параллельный или высоковольтный режим), так и внутрисхемную последовательную загрузку (ISP) с использованием унифицированного ICPA адаптера (Inter Circuit Programming Adapter).
Программатор Громова
Я не ошибусь, если скажу, что 80% новичков, если у них на компьютере есть в наличии СОМ порт, собирают в качестве первого программатора Программатор Громова. Эта схема, при своей простоте и умелом обращении, настоящий шедевр). Действительно, ведь для того, чтобы собрать своими руками программатор, подключаемый к USB порту и имеющий в своем составе микроконтроллер AVR, который требуется предварительно запрограммировать, нужен опять таки программатор. А где взять новичку программатор, пусть и для подобной разовой прошивки ? Получается парадокс курицы и яйца), чтобы собрать USB программатор, нам необходимо сначала запрограммировать микроконтроллер программатора))).
Итак, давайте разберем, что же такое вообще прошивание микроконтроллера (МК) с помощью программатора, и как оно осуществляется? Для того, чтобы прошить МК, нам потребуется связка из самого программатора, устройства, спаянного на печатной плате, и программа, называемая оболочкой, работающая с этим устройством.
Под каждый тип программатора чаще всего требуется своя программная оболочка. Для сборки программатора Громова не требуется программировать микроконтроллер. В данном программаторе он отсутствует. Этот программатор работает с двумя широко распространенными оболочками для прошивания: PonyProg и Uniprof. У нас будут посвящены отдельные обзоры на эти программки. Данный программатор подключается к СОМ порту. Единственным препятствием для его сборки может стать физическое отсутствие данного разъема на материнской плате вашего системного блока. Почему именно системного блока? Потому что ноутбуки, а также современные модели материнских плат 2010 – 2011 года выпуска и выше часто имеют на контактах СОМ порта пониженное напряжение питания. Что это означает? Это означает, что вы можете собрать данный программатор, а он у вас не заработает. Но с компьютерами 2007 – 2008 года выпуска и старше, за исключением ноутбуков, данный программатор должен гарантированно работать. Подключение через переходники USB – COM не спасают в этом случае, так как при этом наблюдается в лучшем случае, сильное снижение скорости, в худшем, программатор вообще отказывается работать.
Чтение и запись фьюзов Ардуино
avrdude -C ../etc/avrdude.conf -c usbasp -p m328p -U lfuse:r:-:h
- -c <programmer> — псевдоним используемого программатора, в данном случае usbasp.
- -p <partno> — тип микроконтроллера. Я считываю фьюзы из Ардуино Уно, в которой установлен микроконтроллер ATmega328p, поэтому в качестве <partno> указано значение m328p.
- -U <memtype>:r|w|v:<filename> — комплексная опция для указания производимой с памятью операции (чтение. запись, проверка). -U lfuse:r:-:h означает, что требуется прочитать содержимое младшего байта конфигурации и вывести считанное значение на экран в щестнадцатеричном виде.
А вот и результат выполнения приведенной команды:
Если у вас в результате присутствует строка avrdude: warning: cannot set sck period, please check for usbasp firmware update, то не обращайте на нее внимание. Это всего лишь предупреждение, не ошибка, работе оно не мешает
Если вы всё же хотите от него избавиться, то нужно обновить прошивку USBasp, данная процедура подробно расписана в статье Прошивка USBasp. Как видно из скриншота, значение младшего конфигурационного байта равно 0xff, команда отработала успешно.
Теперь проверим запись фьюзов с использованием USBasp. Я изменю значение дополнительного конфигурационного байта с 0xFF на 0xFD, что приведет к установке порога срабатывания схемы BOD в 2.7В. Команда для Avrdude и результат ее выполнения приведены ниже:
avrdude -C ../etc/avrdude.conf -c usbasp -p m328p -U efuse:w:0xFD:m
Чтение и запись FLASH и EEPROM памяти Ардуино
В приведенных выше примерах команд для Avrdude в качестве параметра <memtype> использовались значения lfuse и efuse для доступа к конфигурационным байтам микроконтроллера. Данный параметр может принимать и другие значения, они приведены ниже:
- calibration — байты калибровки RC-генератора;
- eeprom — энергонезависимая память микроконтроллера;
- efuse — дополнительный конфигурационный бит;
- flash — FLASH память микроконтроллера;
- fuse — фьюз-байт для микроконтроллеров с одним fuse-байтом;
- hfuse — старший fuse-байт;
- lfuse — младший fuse-байт;
- lock — байт блокировки (ячейка защиты);
- signature — три байта что обозначают сигнатуру чипа (device ID);
- fuseN — байт с фьюзами для ATxmega чипов, N — целое число для каждого фьюза что поддерживается устройством;
- application — область приложений во Flash памяти для МК ATxmega;
- apptable — таблица приложений в области Flash памяти для устройств ATxmega;
- boot — загрузочная область Flash памяти для устройств ATxmega;
- prodsig — область с производственной сигнатурой (calibration) для устройств ATxmega;
- usersig — область с пользовательской сигнатурой для устройств ATxmega.
Таким образом, для чтения FLASH Ардуино Уно (микроконтроллера ATmega328p) может быть использована следующая команда:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:r:flash_dump.hex:i
Файл с содержимым FLASH памяти микроконтроллера будет создан в каталоге Avrdude. Либо можно прописать в команде полный путь к файлу.
Для записи в FLASH память содержимого файла flash_dump.hex можно использовать команду:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U flash:w:flash_dump.hex:i
Чтение EEPROM:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:r:eeprom_dump.hex:i
Запись EEPROM:avrdude -C ../etc/avrdude.conf -p m328p -c usbasp -U eeprom:w:eeprom_dump.hex:i
Запись загрузчика в Ардуино
Процедуру записи загрузчика я описывал ранее в публикации Arduino as ISP — программатор из Ардуино. Как и в прошлый раз для записи загрузчика мы будем использовать IDE Arduino. Последовательность шагов следующая:
Первый запуск USBasp программатора
Теперь, когда все детали спаяны, остается только «прошить» микроконтроллер Atmegę8 самого программатора. Для этого нужен отдельный программатор, это может быть, например, STK 200 (LPT порт), STK500 и т. д. LPT программатор подключается к USBasp через разъем IDC-10.
Обратите внимание, что распределение пинов в разъеме оригинального программатора (USBasp) находится справа, в то время как в версии, описываемой в этой статье – слева:
Распределение, показанное на рисунке справа, соответствует тем, которые применяет компания Atmel в своих оригинальных программаторах. Такое распределение уменьшает риск возникновения помех во время программирования в случае применения длинных проводов от программатора к контроллеру, так как каждая сигнальная линия экранирована массой, кроме MOSI.
На время программирования включите режим SELF путем переключения DIP переключателя № 3 в положение ON. Благодаря этому появляется возможность запрограммировать Atmega8. После завершения программирования, положение переключателя (3) должна быть переведено в состоянии OFF.
Последнюю версию прошивки можно скачать с официального сайта. Рекомендуем версию для Atmega8, которая находится в архиве: usbasp.2011-05-28.tar.gz.
Обратите внимание, чтобы перед программированием Atmega8 необходимо выставить фьюзы которые имеют следующие значения:
- # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
- # для Atmega48: HFUSE=0xDD LFUSE=0xFF
В случае успешного программирования, подключаем программатор к USB разъему компьютера, при этом должен загореться красный светодиод, а компьютер должен оповестить об обнаружении нового оборудования.
Строительство USBasp программатора
Существует много версий печатной платы данного программатора, некоторые можно найти на официальном сайте USBasp. Однако, была сделана своя на основе выше представленной схемы.
К сожалению, из-за применения DIP переключателей, рисунок платы стал немного сложнее, что привело к применению 2 коротких перемычек, с целью чтобы печатная плата была по-прежнему односторонней.
Ниже результат печатной платы:
Как видно на рисунке, в программаторе не применялись SMD элементы. Пустое пространство на плате „залито” полем массы, главным образом для того, чтобы не вытравливать большое количество меди, а также снизить влияние помех на программатор.
Список элементов используемых в USBasp программаторе:
- R1: 10к
- R2: 180
- R3: 100
- R5, R6: 68
- R7: 2к2
- C1, C2: 22п
- C3: 10мк
- C4: 100н
- LED1: Красный светодиод на 20мА
- LED2: Зеленый светодиод на 20мА
- D2, D3: стабилитроны на 3,6В
- X1: Разъем USB, тип B
- SV1: Гнездо под разъем IDC-10
- Q1: Кварц 12МГц, корпус HC49-S
- SW1: Dip переключатель трехпозиционный
- IC1: Atmega8 (ПРИМЕЧАНИЕ: Не следует использовать микроконтроллер Atmega8 — PU из-за его ограничение максимальной тактовой частотой до 8 МГц!)
Перенос рисунка печатной платы USBasp программатора на стеклотекстолит выполнен с помощью метода ЛУТ (лазерно-утюжной технологии). Как это делать описывать не будем, поскольку данной информации в сети много.
Вкратце скажем, что сначала рисунок в масштабе 1:1 печатается на глянцевой бумаге, затем он накладывается на очищенную и обезжиренную медную сторону стеклотекстолита и фиксируется с помощью бумажного скотча. Далее бумажная сторона тщательно разглаживается утюгом на 3-ке. После все это дело вымачивается в воде и аккуратно очищается от бумаги.
Следующий этап – вытравливание платы в растворе хлорного железа. Во время травления желательно поддерживать температуру раствора не ниже 40 C, поэтому банку с раствором погружаем в горячую воду:
После завершения процесса травления необходимо удалить тонер ацетоном.
Остается теперь только просверлить отверстия. После завершения процесса изготовления платы можно приступать к пайке элементов USBasp программатора, начиная с перемычек.
Готовые к печати (в формате PDF) рисунок печатной платы находится в конце статьи. Вы также можете найти несколько вариантов на официальном сайте проекта.
↑ By trial and error. Методом проб и ошибок
Было решено опробовать альтернативные прошивки к программатору AVR910, с помощью которых он превращается в другой программатор. Таких прошивок существует несколько, это прошивки STK500 Dooper CDC, STK500 Dooper HID и USBasp.STK500 Dooper HID отмел сразу, так как эта прошивка раскритикована в Интернете из-за очень маленькой скорости записи.
Попробовал прошить в первую очередь как STK500 Dooper CDC.
На ПК с установленной Windows 8.1, где прошивал, программатор с новой прошивкой определился, а вот на Windows 10 та же ситуация, что и с оригинальной прошивкой от Prottos. Уже после, в Интернете было найдено частичное объяснение этому. Оказалось, что устройство с прошивкой STK500 Dooper CDC использует тот же драйвер lowcdc.sys без подписи. А Windows 10 не доверяет даже некоторым подписанным драйверам.
Следующей была прошивка от USBasp. О, счастье! При подключении к ПК с Windows 10, устройство определилось как USBasp.
В папке с драйверами есть каталог безопасности, см. на скриншот.
Попытался выполнить условия, указанные в каталоге, то есть сделать сертификат доверенным. Через командную строку добавил сертификат драйвера в хранилище доверенных корневых сертификатов. Не помогло и это. Система всё так же уперто делала вид, что никаких драйверов не существует.