Site Loader

РадиоКот :: Универсальный AVR-программатор на Arduino.

РадиоКот >Схемы >Цифровые устройства >Примочки к ПК >

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

 

  Как то понадобилось мне позаливать скетч из Arduino IDE в мелкий восьминогий ATTiny85, как правило, для этого используется Arduino с соответствующим скетчем ArduinoISP.  Несколько китайских клонов Arduino Nano у меня имелось, поэтому и использовал их. Все бы хорошо, но мне не недоставало одного вывода. Точнее он имеется у тини (вывод RESET), но чтобы задействовать его как цифровой вход, нужно запрограммировать соответствующий фьюз. С помощью  ArduinoISP это можно сделать только один раз, и последующие попытки заливки скетчей с помощью этого и других программаторов ISP становятся невозможными, поскольку вывод с функцией RESET становится не доступным. Если дальнейшей модификации скетча (программы) не требуется, то и проблем нет, но в процессе разработки какого то устройства требуется неоднократная перепрошивка мк.   Выход из этой ситуации один – использование высоковольтного программатора. Для AVR контроллеров с выводами 8, 14 используется высоковольтное последовательное программирование, а для мк с выводами 20 и больше – высоковольтное параллельное. Я озадачился поиском подобного программатора, но для меня было принципиально важно, чтобы он был на основе Arduino и работал из под Arduino IDE.  Рассматривал вариант использования восстановителя фьюзов для тини, но уж очень хлопотная получается перепрошивка. Это нужно сначала восстановить фьюз, затем перепрошить мк, затем фьюз и т.д. В силу своих скромных способностей в программировании, вариант самому написать скетч для высоковольтного программатора на Arduino отпадал. А вот поиск в инете увенчался успехом.  Спасибо парню по имени

Matthias Neerache, который создал для нас этот уникальный софт для ардуино.

  Итак, какие функции умеет выполнять Arduino под управлением этой «подопытной обезьяны» (ScratchMonkey). Из мануала —

 ScratchMonkey использует расширенную версию протокола STK500v2. Он реализует следующие методы программирования:

— ISP (In-Sistem Programming) внутрисхемное программирование использует 4х проводный протокол SPI для программирования и поддерживается почти всеми AVR мк. Главный недостаток – при определенных установках фьюзов может быть не пригодным для использования. В ISP режиме ScratchMonkey работает аналогично встроенному в IDE ArduinoISP программатору. Однако, ScratchMonkey немного более универсальный, поддерживает микроконтроллеры с более чем 128КБ флэш-памяти, и может работать с различными настройками фьзов определяющих режим генератора тактовой частоты мк. Имеет дополнительный выход XTAL (сигнал тактовой частоты), что позволяет запрограммировать мк с настройкой фьюзов на внешний генератор. Кроме того, ScratchMonkey может эмулировать SPI (на те же пины) на более низкой частоте чем аппаратный SPI (Limp Mode), что позволяет программировать мк с внутренним генератором тактовой частоты, настроенным на 128 кГц.

— HVSP (High Voltage Serial Programming) высоковольтное последовательное используется для программирования мк 8 и 14 пин и не зависит от состояния фьюзов. Требует внешний источник 12В и транзисторный ключ для подачи высокого напряжения на RESET пин.

— HVPP (High Voltage Parallel Programming) высоковольтное параллельное используется для программирования мк от 20 пин и выше, не зависит от состояния фьюзов. Также требует внешний источник 12В и транзисторный ключ для подачи высокого напряжения на RESET пин.

— TPI (Tiny Programming Interface) Тини программный интерфейс для мк семейства ATtiny4/5/9/10 (SOT23-6 package). ТПИ использует только 3 вывода, и может работать либо в режиме низкого напряжения или в режиме высокого напряжения. RESET пин может использоваться как обычные линии ввода/вывода.

  Более чем достаточно функций для моих целей. Для начала тестирования составил простейшую схему (рис.1) на основе диаграммм из мануала ScratchMonkey и изготовил на макетке типа шилда для Arduino Nano (клона), Рис.2,3 (только ISP и HVSP режимы). Транзистор любой n-p-n.

Рис.1

Рис.1

 

Рис.3

 

  Для начала этот программатор нужно “прописать” в ArduinoIDE . Делаем так: в папке ScratchMonkey/hardware/scratchmonkey , находим и открываем файл programmers.txt , копируем из него строки:

scratchmonkey_stk500v2.name=ScratchMonkey (STK500 Mode)

scratchmonkey_stk500v2.communication=serial
scratchmonkey_stk500v2.protocol=stk500v2

scratchmonkey_stk500v2_hvsp.name=ScratchMonkey HVSP (STK500 Mode)
scratchmonkey_stk500v2_hvsp.communication=serial
scratchmonkey_stk500v2_hvsp.protocol=stk500hvsp

  Вставляем эти строки в аналогичный файл IDE: arduino-1.6.12/hardware/arduino/avrp/rogrammers.txt. Добавляем к этим строчкам еще по 3 строки (выделены на рис.4), без них не работает. Открываем ArduinoIDE и видим, что добавились два программатора ScrstchMonkey (Рис.5).

Рис.4

Рис.5

    В IDE открываем скетч ScratchMonkey.ino и прежде чем залить в Arduino добавим одну строчку. Дело в том, что при высоковольтном последовательном программировании было выявлено, что пин D11Arduino, подающий напряжение питания на мк при обращении к нему остается в 1, а значит программируемый мк остается под напряжением все время, что «не есть гуд».   Я не знаю с какой целью автор это упустил, но при параллелном программировании питание отключается после обращения к мк. Открываем вкладку с файлом SMoHWIF_HVSP.h,  находим функцию Stop() и добавляем строку digitalWrite(HVSP_VCC, LOW) Рис.6.

Рис.6

   Компилим и заливаем скетч в Arduino (без шилда). Вставляем Arduino в шилд, подключаем к разъему (ISP или HVSP) через переходник Attiny. Для режима HVSP подключаем 12V. В пункте Инструменты/Программатор выбираем соответствующий программатор (Рис.5). В пункте «Плата» выбираем предварительно установленные тини. Как добавить ATTiny в IDE здесь. Открываем в IDE файл скетча для тини и заливаем в мк кнопкой «Загрузка» или «Загрузить через программатор».

   Что бы сделать действительно универсальный программатор AVR микроконтроллеров из Arduino родилась такая схема, Рис.7, реализующая все возможности ScratchMonkey.

Рис.7

  Как видим схема гораздо проще, по сравнению с программаторами с аналогичными возможностями. На линии портов установлены ограничительные резисторы 1кОм, с целью предотвращения кз на этих линиях при неблагоприятных условиях. DD2 – dc/dc конвертер на микросхеме ME2149F 5/12V c Aliexpres Рис.8.

Рис.8

Или самодельный на MC34063, Рис.9. Рис.9

   SA1 включает высокое напряжение и переключает низковольтный и высоковольтный режимы. Светодиоды показывают состояние программатора. Разъем XR1 (Debag) для дополнительной отладки программатора, если что-то пойдет не так и сообщений avrdude не достаточно. Подключается к выводам RX и общий конвертера USB/UART, например к такому, Рис.10:

Рис.10

  На компе запускается еще один ArduinoIDE и включается монитор предварительно выбранного порта. В мониторе будет выводиться информация ввиде как на рис. 11 слева. Расшифровка этой информации также показана на рисунке. Режим отладки «включается» в файле SmoConfig.h, где в одной из строк

#undef DEBUG_ISP
#undef DEBUG_HVSP
#undef DEBUG_HVPP
#undef DEBUG_TPI
#undef DEBUG_COMM
#undef нужно заменить на #define. Залить скетч заново в Arduino. Следует отметить, что процессы чтения/записи в режиме отладки замедляются раз в 100.

Рис.11

При параллельном программировании к разъему HVPP контроллеры подключаются согласно таблице 1 и даташиту.

Рис.12

Чтобы работали индикаторы и программатор TPI, как заявляет автор, необходимо пропатчить исходники avrdude, заново собрать и скомпилировать.

Кому интересно как это делается можно посмотреть здесь , но сначала  нужно пропатчить ( внести изменения в исходники avrdude). Patch –файл можно найти в папке ScratchMonkey — avrdude.patch.

 

Пропатченные и скомпилированные файлы avrdude.exe и avrdude.conf  вставляются в папки ArduinoIDE вместо штатных файлов. В файл programmers.txt  вставляются строки:

scratchmonkey.name=ScratchMonkey ISP/TPI
scratchmonkey.communication=serial
scratchmonkey.protocol=scratchmonkey
scratchmonkey.program.protocol= scratchmonkey
scratchmonkey.program.tool=avrdude
scratchmonkey.program.extra_params=-P{serial.port}

scratchmonkey_hvsp.name=ScratchMonkey HVSP

scratchmonkey_hvsp.communication=serial
scratchmonkey_hvsp.protocol=scratchmonkey_hvsp
scratchmonkey_hvsp.program.protocol= scratchmonkey_hvsp
scratchmonkey_hvsp.program.tool=avrdude
scratchmonkey_hvsp.program.extra_params=-P{serial.port}

scratchmonkey_hvpp.name=ScratchMonkey HVPP
scratchmonkey_hvpp.communication=serial
scratchmonkey_hvpp.protocol=scratchmonkey_pp
scratchmonkey_hvpp.program.protocol= scratchmonkey_hvpp
scratchmonkey_hvpp.program.tool=avrdude
scratchmonkey_hvpp.program.extra_params=-P{serial.port}

 

Готово. В списке программаторов  IDE должны добавиться три программатора:

ScratchMonkey ISP/TPI

ScratchMonkey HVSP

ScratchMonkey HVPP

При программировании должны работать индикация и TPI программирование.


Так как ScratchMonkey использует avrdude, то он будет работать и с оболочками дуды. Например с AVR8-Barn-O-Mat (барномат), необходимо только в установках указать пути расположения файлов avrdude, тогда при следующем запуске «барномата» в списках программаторов увидим  ScratchMonkey. Оболочки удобны при заливке HEX-файлов.

 Успехов.

 

Файлы:
Пропатченная дуда
Схемы

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

ParaPROG

ParaPROG
AVR ParaPROG
Параллельный программатор для микроконтроллеров AVR
 
Новую версию управляющей программы для PC смотрим внизу странички.
Что и зачем:
Поводом для создания данного устройства послужило появление новых чипов AVR поддерживающих отладку по протоколу debugWIRE. Так как он не является протоколом программирования, то после смены исходного кода во время отладки и, естесственно, забыв отключить фуз DWENAVRStudio не может заново «подключиться» к отлаживаему кристаллу. Это значит, что фуз DWEN не может быть «сброшен» и, следовательно, отлаживаемый чип больше не может быть запрограммирован через SPI.
После «убийства» двух tiny2313 была написана программа для mega16, которая позволяла, подключившись к меге через житаг, в AVRStudio перепрограммировать фузы тини в параллельном режиме.
Правда это было несколько неудобно и была написана программа для PC, в которой была возможность программирования всех бит фузов для tiny2313.
Дальнейшим развитием стало введение возможности программирования, проверки и чтения Flash памяти, а также введена поддержка других МК.
Поддержка программирования EEPROM не вводилась в виду ненадобности. Вообще программа для МК должна быть написана таким образом, чтоб она сама устанавливала начальные значения EEPROM.
 
Самым очевидным недостатком данного устройства является то, что для сборки программатора AVR необходимо запрограммировать mega16. Однако такой подход имеет право на существование, т.к. даже Atmel предлагает для своего программатора AVRISP схему на своем же микроконтроллере.
Mega16, используемая в данном устройстве, может быть запрограммирована при помощи программатора AVReal и схемы FBPRG («6 проводков на LPT»). Или через интерфейс JTAG с помощью AVR miniICE
К сожалению COM порт компьютера не позволил реализовать «супербыстрое» программирование. Однако на глаз все равно оно проходит быстрее чем последовательное.
DIP корпуса использованы исключительно потому, что автором при отладке используются именно они. Желающие могут сами переделать всю эту конструкцию под SMD.
 
Все приводимое на этой страничке программное обеспечение распространяется свободно. Автор не несет никакой ответсвенности за возможный причиненный ущерб.
Исходные коды программного обеспечения не распространяются.
Дальнейшее развитие этого проекта будет производиться по мере необходимости автора и наличия свободного времени.
 
По всем вопросам можно писать на [email protected]

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

  • Программирование AVR в параллельном режиме.
  • Возможность «безболезненно» программировать фузы DWEN и RSTDISBL
  • Возможность программирования фуза SPIEN

Поддерживаемые микроконтроллеры:

  • ATtiny 2313
  • ATmega32, ATmega16, ATmega8515, ATmega8535, ATmega8, ATmega48, ATmega88, ATmega168

Схема:

Схема проста и не имеет каких то особенностей.

  • На микросхеме DA1 собран стабилизатор напряжения +5V
  • На транзисторах VT1 и VT2 реализован конвертер TTL — RS232
  • Микросхема DD2 может быть применена с любым буквенным индексом
  • Разъем XS2 служит для подключения к COM порту компьютера
  • К разъему XS3 подключается программируемый микроконтроллер.
  • Разъем XS4 предназначался для внутрисхемной отладки и может быть исключен или же использован для программирования mega16 по интерфейсу JTAG
  • Питание устройства осуществялется от внешнего стабилизированного источника +12V
Mega16 должна быть запрограммирована файлом code.hex из прилагаемого архива.
Фузы mega16 должны быть запрограммированы следующим образом:
В архиве также имеется схема в форматах PDF и PCAD2002, разведенная печатная плата для головного модуля устройства и адаптеров для различных видов МК.

Пример реализации:

центральный модуль

плата адаптеров


Работа с устройством:

Перед началом работы необходимо вставить программируемый микроконтроллер в соответсвующую панельку. Соединить центральный модуль устройства с платой адаптеров 20-ти проводным кабелем. Подать питание и запустить управляющую программу ParaPROG.exe

После старта управляющая программа имеет следующий вид:

Доступна только одна кнопка «Read Chip». При нажатии на эту кнопку программа ParaPROG осуществляет поиск программируемого микроконтроллера и пытается прочесть фузы и лок биты.

Если поиск устройства был неудачным программа выводит сообщение о неудачной попытке и остается в прежнем состоянии.

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

Значения фузов и лок битов выводятся в формате принятом Atmel. Т.е. 1 = бит не запрограммирован (соответсвует установленному флажку) и 0 = бит запрограммирован (соответсвует снятому флажку)

Кнопки выполняют следующие функции:

Read Chip
Нажатие на эту кнопку осуществляет синхронизацию управляющей программы и центрального модуля программатора, поиск программируемого микроконтроллера, читает сигнатуру, фузы и лок биты
Write Fuses
Запись фузов в соответсвии со значениями заданными флажками для фузов
Write Lock Bits
Запись лок битов соответсвии со значениями заданными флажками для фузов
Chip Erase
Стирает Flash память программируемого микроконтроллера и сброс лок битов
Write Flash
Программирование Flash памяти в соответсвии с файлом, имя которого задано в поле рядом с этой кнопкой
Verify Flash
Сравнение Flash памяти с содержимым файла, имя которого задано в поле рядом с кнопкой Write Flash
Read Flash
Считывание Flash памяти в файл, имя которого задано в поле рядом с этой кнопкой

Программа принимает для записи/сравнения, а также выходным для чтения Flash является файлы binary формата. Получить их можно при помощи утилиты hex2bin из прилагаемого архива.

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


Замеченные и пока не устранненные ошибки:

  • Так как при постоянно поданном напряжении +12V на Reset программируемые МК довольно сильно грелись, алгоритм работы устройства был сменен на временное включение режима программирования и немедленное выключение его после выполнения действия. Вледсвие этого при работе с некоторыми МК (например мега48) происходит рассинхронизация управляющей программы и основного модуля программатора. Поэтому рекомендуется иногда нажимать кнопку «Read Chip» проводя этим повторную синхронизацию (желательно перед каждым новым действием)
  • Иногда имя выходного файла при операции «Read Flash» самопроизвольно меняется на имя «Reading Flash»

Прилагаемые файлы:

Прошивка, управляющая программа, схема и печатные платы


Дополнения:

09.01.2006


Новая версия управляющей программы 0.2.0.7

Добавлено:

  • Поддержка ATmega162.
  • Возможность добавления пользователем новых кристаллов. Поддержка различных процессоров вынесена в INI-файлы. Теперь для добавления нового процессора достаточно создать для него файл. В этом файле помимо всего прочего есть дефолтные значения для фузов (из даташита).
  • После считывания битов конфигурации с чипа для каждого байта отображается его HEX-представление (для более удобного переноса значений, например, в скрипт пакетной прошивки PonyProg).
  • Значения фузов, не соответствующие дефолтным, отображаются красным цветом.
  • Окошко ввода ком-порта и сохранение этой информации, а также путей к файлам BIN и HEX, в файл конфигурации.
  • Ручной выбор программируемого кристалла. Это полезно, когда у программируемого чипа испортились байты сигнатуры и обычным способом он не видится программатором (иногда бывает 🙂 ).
  • Автоматический запуск конвертера hex2bin при выборе для заливки во флэш файла типа HEX.
  • Исправлена ошибка самопроизвольного изменения имени выходного файла при операции «Read Flash».

 

 

ParaPROG v 0.2.0.7

13.03.2007


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

Дополнения от Sailanser.

22.02.2008


РадиоКот :: «РЕАНИМАТОР» для AVR.

РадиоКот >Лаборатория >Цифровые устройства >

«РЕАНИМАТОР» для AVR.

Идея разработки этого устройства родилась после ошибочной записи значений фьюзов в ATmega8, после которой вывод сброса стал обычным вводом/выводом порта, синхронизация предусматривала внешний источник, да ещё и запрещалось программирование по SPI — короче говоря «полный набор». Поиск схем параллельного программатора по интернету и в печати не дал практически ничего, что удовлетворяло бы заданным условиям простоты и повторяемости. После изучения соответствующих даташитов решено было разработать устройство на одном микроконтроллере, которое восстанавливало бы значения фьюзов, необходимые для работы на обычном последовательном программаторе. Вообще-то, честно говоря, параллельный программатор больше ни для чего и не нужен в любительском конструировании — все функции программирования успешно выполняют широко распространённые последовательные «5 проводков», «STK-200», «AVR910», «usbasp» иже с ними.
Итак, задача поставлена — ищем решение. Начинаем, конечно, с выбора контроллера. Для параллельного программирования необходимо иметь как минимум 19 выводов ( см. таблицу).

Восьмивыводные кристаллы сразу отпадают. Можно, открывая ключи +5В и +12В от одного вывода, использовать 18 линий- в этом случае появляется возможность использовать 20-ти выводные корпуса, ATtiny2313, например. В своей же конструкции я использовал ATmega8515, исходя исключительно из удобства расположения портов (на одной стороне) и линий питания — всё для упрощения разводки печатной платы. Можно применить и 28-ми выводные контроллеры, но я изначально планировал последующее подключение LCD-индикатора и 4-х кнопочной клавиатуры. А, в принципе, собрать устройство можно на любом имеющемся кристалле с необходимым количеством выводов — длина кода — 330 байт.
Кроме того, для коммутирования напряжений питания 5 В и программирования 12 В необходимы соответствующие ключи. Изобретать велосипед я не стал, и использовал широко известное схемное решение в виде транзисторного ключа.
Как и в любой диалоговой системе необходимы устройства ввода и вывода — добавляем, соответственно, кнопку и светодиод.
В результате родилась схема, представленная на рисунке:

Схема, как вы видите, проста до безобразия и особых разъяснений не требует. Единственное, что вызовет определенные конструктивные затруднения — это подключение программируемых контроллеров к программатору. Можно это сделать, например, коммутацией проводниками на макетной плате, а можно (и гораздо удобнее) собрать универсальную плату расширения для основных типов контроллеров (или для тех, с которыми постоянно работаешь), подключаемую к программатору шлейфом.
Питать устройство необходимо от стабилизированного источника 12 В. На микросхеме IC1 собран стабилизатор напряжения питания 5 В. Кнопка SA1 «PROG»- даёт команду на перезапись фьюзов, светодиод зелёного свечения VD1 «DONE» — сигнализирует об успешном перепрограммировании. На транзисторах VT1 — VT4 собраны ключи для коммутации напряжений питания и программирования. Сразу оговорюсь, что схему можно совершенствовать сколько душе угодно. Допустим, установить стабилизатор на 12 В — в этом случае можно питать устройство от нестабилизированного источника 16-22 В. Возможно заменить транзисторные ключи на микросхему коммутатора тока и пр.
Конструкция программатора может быть любой — в зависимости от Ваших возможностей и умения. Я сам программатор сделал на печатной плате, а программируемые микроконтроллеры подключал через макетку. В дальнейшем планирую сделать универсальную плату расширения и подключать к программатору 20-ти жильным шлейфом. Детали любые малогабаритные, номиналы указаны на схеме.
Пару слов о программной части. Программа написана на языке С в оболочке WinAVR. Порядок действий в ней полностью соответствует даташиту ATmega8 (раздел о параллельном программировании).
Работать с программатором очень просто. Контроллер, в котором необходимо переписать фьюзы, вставляется в соответствующую панельку. Включается питание и нажимается кнопка «PROG». Загоревшийся светодиод «DONE» сигнализирует об успешной перезаписи. Питание выключается и, после изъятия из панельки, контроллер используется обычным способом.
В своей конструкции я подключал к программатору, кроме панели для ATmega8 ещё панель для ATmega16, поскольку алгоритм программирования для него почти такой же и прошиваемые значения фьюзов позволяют работать с последовательным программатором. В результате устройство даже в такой представленной «игрушечной» версии успешно «реанимирует» кроме ATmega8 ещё и ATmega8535, ATmega16, ATmega32 — это то, что я лично пробовал перепрограммировать
В дальнейшем я планирую дополнить программатор некоторыми функциями, расширить номенклатуру «реанимируемых» контроллеров. В планах добавить функцию считывания байта сигнатуры и, в зависимости от типа контроллера, прошивать его своими «даташитовскими» значениями. А, вообще, приведённых сведений более чем достаточно, чтобы пользователь мог сам модернизировать программатор — хоть в схемной, хоть в программной части.

Файлы:
Прошивка МК.

Вопросы, как обычно, складываем тут.


Как вам эта статья?

Заработало ли это устройство у вас?

Ардуино в качестве программаторов AVR контроллеров

С последней версией Arduino IDE перестал работать USBASP, с помощь которого прошивал массу контролеров.

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

Для Arduino на ATmega168/328 схема будет выглядеть так — между собой соединяем D11, D12, D13, а D10 контроллера программатора соединяем с RESET программируемого контроллера. Устанавливаем кварц для прошивки контроллеров, работающих от внешнего резонатора.

Для удобства работы собираю программатор на макетке. Для микросхем в корпусе DIP28 использую панель DIP с нулевым усилием.

Также на плате устанавливаю разъем под Arduino Pro Mini, на которых делаю все последние Arduino-проекты

Получаю такую платку

Устанавливаю на плату микроконтроллеры

Можно приступать к прошивке/

 

Для этого в Ардуину нужно записать скетч ISP-программатора

Затем выбираем тип программатора

И все. Программатор собран и настроен.

Немного о применении

  1. Загрузка скетча с 0-го адреса без загрузчика. Экономит память микроконтроллера и время загрузки. Особенно интересно в микросхемах с малой памятью — Atmega8 и различных Attiny.
  2. Установка загрузчика на «голую» Atmega328, чтобы в дальнейшем заливать в нее скетчи через RX/TX, как в обычную Ардуину.
  3. Замена загрузчика, например, на OPTIBOOT, нормально поддерживающий режимы сна и сторожевой таймер.
  4. Установка фьз-битов. Полезно при создании «батареечных проектов», когда отключается BOD — контроль входного напряжения и микроконтроллеру устанавливается режим работы с пониженной частотой, опять же для уменьшения напряжения питания до 2.8-3.3В и энергопотребления.
  5. Восстановление «мертвых» микроконтроллеров после неудачных экспериментов

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

со своего сайта.

Мегаклон программатор AVRISP MKII для микроконтроллеров AVR. / AVR / Сообщество EasyElectronics.ru

Долгое время я программировал микроконтроллеры AVR клоном программатором STK500. Он прекрасно уживается с AvrStudio4. И работает прямо из среды этой программы. Так что я программировал AVR чипы и был очень счастлив. Но время шло и появилась AtmelStudio5, потом AtmelStudio6 , и постепенно я переехал на более новую версию AtmelStudio6. Переехал не потому, что перестала устраивать AvrStudio4, а просто удобство писания прог на СИ в 6-ой версии, как мне показалось малек удобнее чем на 4-ке. Есть и подсветка синтаксиса и всплывающие подсказки ну и куча разных фишек при отладке.

Но к сожалению мой любимый программатор-клон STK500 работал с новой 6-ой версией через пень-колоду. То подключится, то не подключится. Ну и писал я поэтому проги на 6-ой версии, а зашивал чипы из под 4-ой. Со временем меня это достало. И я решил сделать себе новый программатор для 6-й версии студии.

Требования к программатору были таковы:
1. Чтоб был прост, без лишних наворотов и не нужных примочек.
2. Чтоб работал надежно как кувалда, долго и счастливо.
3. Высокая скорость прошивания чипов. Ибо мой клон STK-500 не шибко быстрый.
4. Должен очень стабильно работать с AvrStudio4 и AtmelStudio6.

Рытье гугла привело меня к программатору AVRISP MKII. Далее я нарыл вагон схем этого программатора. Все нарытые мной схемы оказались похожи друг на друга, отличия были в мелочах. Из всех этих схем я соорудил свою схему, простую, без наворотов, без лишних кнопок и кучи мигающих светодиодов. Ну скажите пожалуйста, зачем мне аж 7 светодиодов на программаторе, если в самом окне программирования есть прогресс-бар показывающий сколько осталось до конца процесса программирования. Над прогресс-баром есть еще лог сообщений, в котором тоже пишется, что происходит с чипом. Ну и если что то не так с программатором, то сама студия выдает отдельное окно с сообщением в котором написано в чем проблема. Итак, я решил снести из схемы все эти светодиоды и кнопочки. Достаточно одного светодиода для визуализации процесса прошивания.

Срезал так же интерфейсы TPI(для некоторых Attiny) и PDI для Xmega, ибо не планирую в ближайшем будущем с ними работать. Пока Atmega хватает. Схема моего программатора вся на 5 вольт. Однако я уже несколько лет программировал своим древним STK500 на 5 вольт и схемы на 3.3 вольта, проблем не было, ничего не сжег. Но это уж сами решайте, шить таким образом или не шить. Кстати на выводах стоят гасящие резисторы, поэтому, по идее можно шить схемы с чипами запитанными на 3.3 вольта. Итак вот сама схема.


Как видим программатор получился 3 детали 2 запчасти. Вот и весь программатор.

Все конденсаторы керамические. Микроконтроллер ATUSB162-16AU я использовал б/у. Термофеном из какого-то устройства выпаял. Так как у меня есть старый программатор, то прошивку я залил им. И меня не сильно интересовало, есть ли в ATUSB162-16AU загрузчик. Но если вы собираете свой первый программатор, то с завода изготовителя в этих чипах ATUSB162-16AU стоит загрузчик. И можно залить прошивку в чип без программатора. Для этого надо воспользоваться программой скачанной у Atmel. Называется она FLIP. Таким образом, можно одним движением руки собрать этот программатор, не имея в наличии второго программатора. Проблема «курица и яйца» не возникает.

Вот сама плата.

Уже спаянная.

Вид сверху.

Готовый полностью.

Прошивку для программатора я взял из проекта LUFA. Понятно что там нет готового файла *.HEX для заливки в ATUSB162-16AU. Поэтому я скомпилировал его так, как писал об этом здесь. Но вам этого делать не надо, так как прошивка, разводка платы в (Sprint-Layout) и схема в нормальном виде в топике. Кстати, если не ошибаюсь, то вроде как загрузчик в ATUSB162-16AU работает на 8MHz, а сам программатор работает на 16MHz. Учитывайте это. Но в топике есть прошивка и для 8ми Мгц

Грабли которые возникли при сборке и тестировании программатора: Граблей в общем то не возникло, поэтому особо писать нечего.

Настройки FUSE BIT для ATUSB162-16AU:
HIGH 0xD9
LOW 0xDE
Но если в чипе стоит загрузчик, то значения FUSE BIT будут другие.

Перед тем как втыкать программатор в USB порт вашего любимого компьютера, надо сперва поставить AtmelStudio6. Потом втыкаем программатор. Драйвера подхватываются автоматически. Если нет, то вручную указываем папку в которой находится установленная AtmelStudio6. Программатор я протестировал с AvrStudio4 и с AtmelStudio6.0, 6.1, 6.2. Тест происходил на Windows XP (32bit) и Windows 7 (64bit). В обоих случаях все поставилось и разу стало работать. На днях (16.12.2013) опробовал на Windows 8 (64bit), заработал как миленький.

Результат:
1. Схема получилась как и хотелось, с минимумом деталей. Для начинающих само то.
2. Испробован под 3 платформами WINDOWS. Нареканий не возникло.
3. Если честно, то я впечатлился скорости прошивания программатора. 54 кило прошивки программатор засандалил в кристалл за 4-5 сек (без верификации). Мой старый клон STK500 такой же объем прошивал где то за 60 сек.(без верификации). Разница в скорости прошивания явно очевидна.
4. Студии работают с ним, как с родным. Ошибок не появлялось пока не одной.

Так что считаю, что данный программатор достиг поставленных перед ним целей.

Вот видео-тест работы программатора с AvrStudio4 и с AtmelStudio6. На видео при тесте с AvrStudio4 винда глюканула малек. Она в принципе на том компе тормозит постоянно.

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

P.S.
Забыл сказать. На схеме есть два вывода RESET. Так вот, чтоб прошивать чипы используем тот RESET, который прикреплен к ноге PB4. Аппаратный RESET используется только лишь один раз, при загрузке прошивки в ATUSB162-16AU другим программатором.

Попытался запустить данный программатор в связке AVRDUDE 5.11.1 с привлекательной утилитой AURDUDE_PROG 3.2. Но пока не работает. Возможно если получится нарыть причину, то напишу.

P.S. №2
Заметил что каждые пол года AtmelStudio обновляется следующим сервис паком. И после каждого такого обновления программатор отказывается работать, ибо не совпадает версия прошивки программатора с требуемой. И каждый раз приходится заново перекомпилировать проект из LUFA. Потом заливать новую прошивку в программатор. Версия прошивки меняется в файле V2ProtocolParams.h

Это несколько неудобно. Вот на днях обновил Studio, воткнул программатор, хрясь а он не работает. Ибо студия требует обновить прошивку программатора. Засада. Вот я решил сразу этот параметр firmvare_version_minor поменять с запасом на последующие обновления студии. Сделал его 0x50. Прошил, проверил все работает. Надеюсь этого надолго хватит. В аттаче лежат прошивки для кварца на 8 и 16 MHz.

Программаторы / Arduino / RoboCraft. Роботы? Это просто!

Загрузить прошивку в МК AVR семейства Mega (а именно такой стоит в ардуине) можно разными способами(тремя видами программаторов):

Последовательным программатором по интерфейсу SPI
Через интерфейс JTAG
Параллельным (“высоковольтным”) программатором

Теперь по порядку.

SPI или ISP — внутрисхемное последовательное программирование(In-cirсuit Serial Programming).
Самый простой и распространённый, по-крайней мере у любителей, метод.
Как следует из названия — не нужно вынимать МК из платы — прошивка происходит прямо в схеме, через специальный разъём, что довольно удобно =) да и программатор довольно прост (естественно его можно просто купить):

STK200/300 — Наверное самый распространённый SPI-программатор для AVR. Это его буферизованная версия т.е LPT-порт компа защищён буферными элементами микросхемы 74LS244 от каких-либо непредвиденностей. Можно ещё добавить резисторы по 100-200 Ом между портом и микросхемой

вот попроще
, а вот знаменитые “пять проводков” проще некуда=), но и LPT ничто не спасёт в случае чего=)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Также есть COM-версия (прогромматор Громова)

Есть еще куча разных вариаций последовательных программаторов, через USB в том числе.

JTAG это собственно интерфейc (последовательный) для внутрисхемной отладки
(разработанный группой ведущих специалистов по проблемам тестирования электронных компонентов Joint Test Action Group), то есть прям почти на ходу можно в самые недра МК заглянуть — посмотреть что там во всех регистрах творится, ну и прошить можно заодно=) Но программатор относительно сложен (и весьма дорог) так что в любительских условиях это скорее экзотика.
Например AVR miniICE
.
.
.
.
.
.
.
.
.
.
.
.
Параллельный “высоковольтный” программатор стоит гораздо дороже, шьёт быстрее, и может помочь
“оживить” программно убитые МК.
Как, опять же, следует из названия данные в МК передаются параллельно т.е. требуется большое количество выводов МК, также требуется источник “высокого” напряжения 12в. Основное применение этого режима — массовая прошивка МК перед установкой в устройства в промышленных масштабах/условиях.
То есть схема посложнее будет=)
Вот например “Простой параллельный программатор для AVR” ну и конечно тут придётся МК из панельки выковыривать=)

DAPA
Ну а бутлоадер прошивается в ардуину через SPI.
Причём разработчики соригинальничали и придумали для этого свой программатор =)

Да ещё и периодически обзывают его ParallelProgrammer,(это у них сокращение такое — так он Parallel Port Programmer), а вообще зовётся он DAPA.

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

Программаторы для AVR | avr

Меня часто спрашивают, чем прошивать AVR-ки, поэтому тут решил выложить ссылки на программаторы.

[Программаторы AVR с интерфейсом USB]

AVR-Doper. Программатор, поддерживающий протокол STK500 (это значит, что с ним совместим большой набор утилит для программирования, в том числе AVR Studio и AVRDUDE), может поддерживать последовательное ISP-программирование, а так же высоковольтное HVSP программирование. Прошивает почти все известные чипы AVR. Можно изготовить самому, схема не очень сложная, есть готовые прошивки, исходный код полностью открыт. Для работы под Windows нужен драйвер, который есть в комплекте с исходным кодом.
AVRISP-MkII. Клон одноименного программатора Atmel, также поддерживает протокол STK500. Нет HVSP, но зато кроме ISP, поддерживает интерфейсы TPI и PDI, поэтому может прошивать также более современную серию микроконтроллеров XMEGA. Так же как и AVR-Doper, поддерживается многими популярными программами. Схема очень простая, шьет вообще весь ассортимент AVR (плюс XMEGA), поэтому этот программатор — хороший кандидат на самостоятельное изготовление или покупку. Схема простейшая, исходный код открыт, его можно скомпилировать практически на любой чип AVR с аппаратным интерфейсом USB. Для работы под Windows нужен драйвер, который есть в комплекте с исходным кодом. В качестве утилиты программатора лучше всего использовать AVR Studio версии 4.19.
mkII-slim. Еще один клон того же программатора AVRISP-mkII, для которого разработана печатная плата, так что его можно собрать в домашних условиях. Этот программатор имеет встроенный стабилизатор на 3.3V и позволяет перемычкой переключать напряжение программируемого чипа — 3.3V или 5V.
AVR Dragon. Популярный, не очень дорогой программатор и внутрисхемный отладчик Atmel, его клоны можно найти на eBay по ценам порядка 40 .. 50 долларов. Поддерживается AVR Studio, IAR Embedded Workbench и многими другими популярными средами программирования. Самому изготовить можно даже и не пытаться (исходного кода нет, схемы нет и она сложная, открыт только протокол STK500), но если у Вас есть деньги и желание серьезно заняться программированием — то купить AVR Dragon нужно обязательно. Для работы под Windows нужен драйвер, который устанавливается вместе с AVR Studio.
Atmel AVR JTAGICE mkII. «Тяжелая артиллерия» для программирования и отладки AVR. И ISP-программатор, и внутрисхемный эмулятор (JTAG, debugWIRE) в одном флаконе. Пользуюсь этой штукой давно, и вполне доволен. Работает через COM-порт и по USB. Стандарт де-факто (его понимает даже avrdude), хорош всем, кроме цены. Программы с которыми работает — AVR Studio, консольная штатная прога, avrdude. Поддерживаются интерфейсы отладки debugWire и JTAG, программируется весь ассортимент AVR, но нет поддержки высоковольтного программирования HVSP. Дорогое решение, поэтому рекомендовать для покупки трудно, а повторить самому нереально. Для работы под Windows нужен драйвер, который устанавливается вместе с AVR Studio.
USBasp. По-настоящему «народный» USB-программатор — из-за дешевизны изготовления, простоты схемы и открытых исходников его делают все кому не лень. USBasp стал уже стандартом де-факто и поддерживается большим количеством утилит программирования. Есть множество вариантов изготовления (ссылки смотрите на сайте автора), его также делают на продажу многие компании. Некоторые китайские поделки — клоны USBasp — можно купить на ebay или dealextreme по ценам порядка 4 долларов, однако его качество может оказаться очень плохим, поэтому будьте внимательны. Программатором USBasp поддерживается только интерфейс программирования ISP. Для работы под Windows нужен драйвер (есть на сайте автора). Протокол USBasp применяется для многих USB-бутлоадеров (благодаря открытости и простоте).
USBtinyISP. Полностью открытый проект с исходниками. Имеет 2 ISP-коннектора — на 6 pin и на 10 pin. Используется чип ATtiny2313-20P, схема очень простая.
USB AVR programmer. Не написано, что клон AVR910, но очень похож на него. Сделан на FT232BM и ATtiny2313. Полностью открытый проект — со схемой и исходниками.
AVRminiProg. Он же AVRminiISP, AVRminiJTAG, AVRminiDragon. Если автор не обманывает, то поддерживается программирование и отладка из AVR Studio.
vusbtiny. Наверное самый маленький в мире ISP-программатор с интерфейсом USB, и самый простой. 

[Другие программаторы AVR, подключающиеся через COM и LPT]

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

STK500. Разработка Atmel (ATSTK500). Подключается через COM-порт, поддерживает ISP и HVSP программирование. Очень серьезный инструмент, однако сегодня уже устарел. Схема и протокол открыты, но исходников firmware нет (firmware поставляется вместе с AVR Studio версий 4.11 build 401 и более поздних, находится в файле Atmel\AVR Tools\STK500\STK500.ebn — его можно напрямую прошить в At90s8535 или Mega8535 программатором наподобие AVR910). Заявлено, что прошивает все чипы Atmel в DIP-корпусах, поддерживает параллельное программирование. Подключается к компьютеру через COM-порт, работает вместе с AVR Studio, поддерживает отладку. Есть также клоны STK500 (некоторые подключаются к USB, так как имеют в себе мост USB-COM). Есть также некоммерческие проекты, например HVProg.
HVProg. Клон STK500, усовершенствованный проект Evertool Мартина Томаса. Совместим с AVR Studio, исходный код и схема открыты.
Serial AVR programmer (AVRProg). Очень простой ISP-программатор, подключающийся к COM-порту. Программа свободная, исходники и схема прилагаются. Есть даже версия,работающая с КПК — http://kazus.ru/forums/showthread.php?t=13574.
PicProg+. Производитель Фитон. Очень качественный программатор, подключающийся через LPT. Кроме AVR, шьет большой ассортимент микросхем и микроконтроллеров. Управляющая программа работает под MS-DOS. Программа К сожалению, авторы проект забросили, и программатор больше не обновляется и не поддерживается. А жаль, продукт был очень хороший.
ChipProg+. Тоже универсальный программатор от Фитона. Более современная версия, есть варианты с подключением по LPT и по USB. Программа управления работает под Windows. На мой взгляд, программа управления сыровата, и по функционалу и удобству уступает доисторической оболочке PicProg+, которая работала на MS-DOS. К сожалению, разработчики наплевательски относятся к вопросам пользователей по эксплуатации программатора, и не обращают внимания на запросы о добавлении поддержки новых чипов. Поэтому лучше этот программатор не покупать.
PonyProg. Весьма популярный и качественный ISP программатор с открытой принципиальной схемой. Подключается по COM и USB через переходник.
UniProF. Программатор «на проводках», очень простой, подключаемый либо к COM, либо к LPT. Схемы как таковой нет, настолько она простая. Работает только со «своей» программой, исходников которой нет.
AVReAl. Утилита программирования, работающая на Windows, Linux и FreeBSD. Программу можно использовать с коммерческой или некоммерческой целью, но её тексты закрыты, т. е. она бесплатна (freeware), но не свободна (free software). Утилита поддерживает одну из разновидностей схем «на проводках», но более продвинутая — позволяет использовать не только LPT-адаптеры, но и USB-адаптеры, сделанные на основе микросхем FT2232C, FT2232L, FT2232D, FT2232H, FT4232H, FT232H. Для получения более подробной информации прогуглите слово AVReAL.

AVR910 совместимые программаторы. AVR910 хорош тем, что поддерживается avrdude, Atmel AVR Studio и CodeVision, а протокол, схема и исходники firmware открыты. Плох тем, что изначально программатор разрабатывался для COM-порта, поэтому для прикручивания к USB нужен чип типа FT232, либо искать схему и прошивку на основе библиотеки V-USB (старое название AVR-USB). Клонов AVR910 расплодилось много. Вот несколько ссылок:

— Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (на основе V-USB. Автор PROTTOSS, чип ATmega8)
— Программатор для AVR (чип ATtiny2313, на основе COM-порта и/или FT232)
— мой порт AVR910 (на основе исходников PROTTOSS) на чип ATmega16. Позволяет на недорогой макетной плате AVR-USB-MEGA16 собрать свой программатор.
— AVR910 — Programmer fur AVR-Prog und avrdude — еще один клон AVR910, список поддерживаемых программ большой — AVR Studio (Windows), AVRProg (Windows), OSP II (Windows), AVR Codevision (Windows), WinAVR GCC (Windows), AVRDUDE (Linux, Windows, Solaris), UISP (Linux), AVR-Prog (Linux), Palm AVR (Palm PDA), AVRP (Linux, Windows, Amiga), BascomAVR (Windows), KontrollerLab (Linux).

STK200+/300 — совместимые программаторы [2]. Позволяют по очень простой схеме собрать программатор, подключаемый через порт LPT. Программатор Kanda Systems STK200/STK300 поддерживается многими оболочками для программирования: IC-Prog, PonyProg, UniProf, CodeVisionAVR C Compiler.

Olimex. Хорошие, недорогие, компактные программаторы и отладчики AVR (с подключением по USB) предлагает компания Olimex [1]. Компания надежная, в Россию высылает быстро.

[Ссылки]

1. Программаторы ISP и JTAG-отладчики компании Olimex.
2. Простейшие программаторы AVR, статья на radiokot.ru и на eldigi.ru.

alexxlab

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

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