Avr programmer from arduino

How to Program Any Type of AVR Microcontroller With Arduino

In this article we will learn how to program any type of avr microcontroller using arduino IDE via arduino.

Please subscribe to my YouTube channel.

In this article we will learn how to program any type of avr microcontroller using arduino IDE via arduino.

I am explaining a concept to program any avr microcontroller with help of Attiny85 example.

  • Take your arduino
  • Connect with your pc.
  • Open arduino IDE.
  • Go in file >> example >> ArduinoISP
  • Open ArduinoISP program.
  • Select correct board and port in tools.
  • Now upload the code.
  • In the circuit the SCK,MISO,MOSI,RESET pins of AVR are respectively connected with 13,12,11,10 pin of arduino

Arduino’s 13 pin ——————> SCK of AVR

Arduino’s 12 pin ——————> MISO of AVR

Arduino’s 11 pin ——————> MOSI of AVR

Arduino’s 10 pin ——————> RESET of AVR

Arduino’s GND pin ——————> GND of AVR

Here We are taking example of attiny85 but you can choose any AVR.

  • Search «Attiny85 arduino pinout» in google.
  • find the image same as given.
  • find the ICSP pins, SCK,MISO,MOSI,RESET and VCC,GND
  • Connect ICSP pins as shown in circuit.
  • Search «Program Attiny85 with arduino«.
  • Find the Board link in google results.
  • Copy the the board link for attiny85 the link given below.
  • Go to the arduino IDE.
  • Click on File -> Preferences
  • Paste the link in Boards Manager URLs. if there is other links, then paste link after comma «,».
  • Go the Board manager via «Tools >> Board >> Board manager«
  • Here search «Attiny85«.
  • You will get a Library install it.
  • Open the code which you want to upload in AVR or you an download the code from github page given below.
  • Select Attiny category in board.
  • Select processor as attiny85.
  • Select clock as internal 8Mhz.
  • Select programmer «Arduino as isp».
  • Click on upload bootloader.
  • After bootloader uploaded go to the sketch.
  • Go to the sketch >> Upload using programmer.
  • The code will be uploaded successfully.

if you uploaded my code then you can connect circuit as shown.

  • Push button is connected to 2nd pin of AVR
  • Two leds is connected at 3rd and 4th pin of AVR.
  • Now you can see the Push button turn on led Alternatively.

  • If you don’t want to mess with wires then you can use the hex shield.
  • The Gerber file and schematic is given below on github link .
  • The shield many type of controller all are written on the shield.
  • if any AVR is out of this list then you can program it via ICSP pins on shield.
  • the shield has crystal selection jumper for 8Mhz and 16Mhz.
  • This PCB is sent by PCBway you can order high quality PCB from PCBway.
  • Link to order PCB :- https://www.pcbway.com/

Источник

Превращаем Arduino в полноценный AVRISP программатор

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

Меня уже давно спрашивают — можно ли прошивать hex файлы при помощи Arduino? Изменять фьюзы? Считывать прошивку? И всякое такое… Ответ — можно, и я сегодня вам расскажу, как я это делаю.

(Данное видео дублирует представленную ниже информацию)

Arduino — как по мне отличный старт для новичка, но нужно расти дальше, мир микроконтроллеров прекрасен и дарит огромные возможности, но, увы Arduino это довольно-таки узкопрофильное направление.

Небольшая предыстория:
Одного прекрасного дня, я наткнулся на отличный проект на ATtiny13, но увы автор выгрузил в сеть только hex-файл и схему, ну и конечно же, я так и не смог его попробовать в железе. Меня этот вопрос мучил всё больше и больше, и тут я случайно наткнулся на одно видео в сети, где автор утверждал, что он при помощи Arduino прошил другой микроконтроллер, имея только hex-файл, ну и схему, само собой. Именно он мне подсказал — используй SinaProg, но с Arduino’вскими файлами…

Загуглив на тему SinaProg, я скачал SinaProg 2.1.1.RUS, но он работать отказывался с Arduino, потому я закинул пару-тройку файлов из Arduino IDE в папку SinaProg 2.1.1\data\ и всё заработало.

Пройдёмся коротко по возможностям софта:

В блоке Hex-file выбираем hex или eep(первый — прошивка, второй — содержимое энергонезависимой памяти).

А той части, где кнопка «>», мы можем видеть всякие сообщения, типа «OK», или «ERROR», сама же кнопка «>» открывает логи Avrdude.

В блоке Flash есть кнопки:

Program — запись hex-файла в микроконтроллер(возможно, когда выбран Hex-file);
Verify — проверка прошивки, что в микроконтроллере, и hex-файла(проще говоря, их сравнение), если всё норм — программа говорит OK;
Read — считать hex-файл.

С блоком EEPROM всё по аналогии.

Далее блок Device, тут можно выбрать нужный микроконтроллер, вот весь список поддерживаемых(список выдрал из файла Device.txt, который лежит в папке SinaProg 2.1.1\data\):

Шутка, вон их сколько:

AT90CAN128
AT90CAN32
AT90CAN64
AT90PWM2
AT90PWM2B
AT90PWM3
AT90PWM3B
AT90USB1286
AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82
AT90s1200
AT90s2313
AT90s2323
AT90s2333
AT90s2343
AT90s4414
AT90s4433
AT90s4434
AT90s8515
AT90s8535
ATmega103
ATmega128
ATmega1280
ATmega1281
ATmega1284P
ATmega128RFA1
ATmega16
ATmega161
ATmega162
ATmega163
ATmega164P
ATmega168
ATmega169
ATmega2560
ATmega2561
ATmega32
ATmega324P
ATmega325
ATmega3250
ATmega328P
ATmega329
ATmega3290
ATmega3290P
ATmega329P
ATmega48
ATmega64
ATmega640
ATmega644
ATmega644P
ATmega645
ATmega6450
ATmega649
ATmega6490
ATmega8
ATmega8515
ATmega8535
ATmega88
ATtiny11
ATtiny12
ATtiny13
ATtiny15
ATtiny22 2343
ATtiny2313
ATtiny24
ATtiny25
ATtiny26
ATtiny261
ATtiny44
ATtiny45
ATtiny461
ATtiny84
ATtiny85
ATtiny861
ATtiny88
ATxmega64A1
ATxmega128A1
ATxmega128A1D
ATxmega192A1
ATxmega256A1
ATxmega64A3
ATxmega128A3
ATxmega192A3
ATxmega256A3
ATxmega256A3B
ATxmega16A4
ATxmega32A4
ATxmega64A4
ATxmega128A4

Как видите, есть все популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8, ATtiny13, ATtiny2313 и всякие другие…

Далее — кнопка Search, если её нажать, то программа попытается прочитать сигнатуры того микроконтроллера, который подключен к программатору, проще говоря, поищет микроконтроллер. Потом может ответить „OK“ или „ERROR“ в информационном блоке, если всё нормально, или нет, соответственно.

В блоке Fuses есть предустановки для ATmega8 для работы на разных частотах, но, увы, только для ATmega8 и ATmega32, можно добавить в файле Fuse.txt (который лежит в папке SinaProg 2.1.1\data\).

Есть кнопка Program — записать предустановки, смотрим на абзац выше.

А так же Advanced — лихая кнопка, после её нажатия можно увидеть вот такое окно:

Device signature — какие-то циферки, я так понял это идентификатор микроконтроллера, по ним программа опознаёт, что за микроконтроллер мы ей суём.

Информационная часть, всё как выше.

Чуть ниже идут фьюзы… если уж зачешется, то не забывайте их сначала считать кнопкой Read(чтобы не нарочно изменить важные фьюзы, например «SPIEN» или «RSTDSBL»), записать фьюзы — кнопка Write, кнопка Chip Erase стирает микроконтроллер, что-то примерно напоминает — форматирование флешки на компьютере(но фьюзы не устанавливаются по умолчанию, так что забывать об этом не стоит).

Пару слов о фьюз-битах — это такие как бы тонкие подстройки микроконтроллера, то частоту поднять, то убавить, то вкл/выкл тактирование от внутренней RC цепочки то ещё что-то… в общем, туда лезть только в крайнем случае, иначе можно заблокировать микроконтроллер(нашаманить так, что перестанет работать, серьёзно), и уже без Atmega fusebit doctor никак.

Вот первая ссылка с гугла по запросу «калькулятор фьюзов», но предупреждаю, тыкать что-то там, не зная зачем оно, и потом это записывать в микроконтроллер — ни к чему хорошему не приведёт, я-то знаю.

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

Итак, последний блок основного окна программы — Programmer, тут выбирается тип программатора, если вы используете Arduino в качестве программатора — ставьте всё, как у меня на скрине, только не COM19, это у меня такой, у вас, наверное, будет другой, в любом случае точно не COM1, первый это системный, актуален только для программаторов, которые подключаются к реальному COM порту, например, Программатор Громова. На ноутбуке COM-порта может не быть, а на компьютерах, как правило, COM-порт ещё есть, особенно тех, что постарше. Можно использовать и другой программатор, к примеру, USBASP, только не забываем выбрать его в списке, скорость для него я ставлю такую же как и в случае с AVRISP.

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

Gromov
USBtiny
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2
Bascom
Blaster
BSD
Butterfly
C2N232I
DAPA
DASA
DASA 3
Dragon_DW
Dragon_HVSP
Dragon_ISP
Dragon_JTAG
Dragon_PP
DT006
ERE-ISP-AVR
Frank-STK200
Futurlec
JTAG 1
JTAG 1Slow
JTAG 2Slow
JTAG 2
JTAG 2Fast
JTAG 2ISP
JTAG 2dW
JTAG mkI
JTAG mkII
MIB510
pAVR
Picoweb
Pony-STK200
ponyser
SI Prog
SP12
STK200
STK500
STK500 HVSP
STK500 PP
STK500 v1
STK500 v2
STK600
STK600 HVSP
STK600 PP
USBasp
Xil

Лично я тестировал только на программаторах AVRISP(Arduino с прошитым скетчем ArduinoISP) и USBasp, на двух микроконтроллерах — ATmega8 и ATtiny13.

Чтобы можно было шить/читать/изменять фьюзы/ убить микроконтроллер при помощи Arduino, предварительно нужно зашить скетч ArduinoISP, подключив всё, как я писал, например вот тут:

Если в двух словах, то подключаем пины Reset, MOSI, MISO, SCK микроконтроллера, который будем прошивать/считывать прошивку/изменять фьюзы так, как указано в скетче в комментариях, а именно:

Вот пример подключения к ардуине ATmega8:

Ну и по аналогии… Ищем карту пинов, например, в даташите (техдокументация на МК) интересующего нас микроконтроллера, вот, к примеру, первая ссылка из гугла по запросу «ATmega8 pdf».

PS У меня было такое, что ATtiny13 перестала прошиваться, на попытки её программирования, после того, как я попробовал запустить её на частоте 128 kHz, откопал где-то вот такой, слегка модифицированный код ArduinoISP который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Источник

Avr programmer from arduino

С последней версией 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. Восстановление «мертвых» микроконтроллеров после неудачных экспериментов

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

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

Если ATmega328P-PU пришли с завода (изначально на работу с внутреннего генератора), схему необходимо всё равно собирать с внешним кварцем и двумя конденсаторами ?
Мне в итоге нужно получить микроконтроллер с прошитым загрузчиком для работы с внешним 16MHz кварцем и питанием +5В.

Всем спасибо, уже разобрался 😉
Оказывается, проблема была в номинале керамических конденсаторов в обвязке кварца.
Решил пересобрать на маленькой 170-ти контактной макетке. На внутреннем генераторе контроллер не заработал. А при установке этих конденсаторов обратил внимание на маркировку. По типоразмеру оказались одинаковые с 22pF, но только номиналом 100nF.
Сразу же заменил — и всё заработало!
Прошивал и на новой версии IDE Arduino 1.6.7 и на старой 1.0.1 — везде загрузчик успешно прошился.

Значит можно заливать прошивки которые не будут использованы в среде Ардуино?
И что для этого надо сделать где установить и прочее

Какая то каша у вас )))
Прошивка — это бинарник для микроконтроллера AVR
Среда Ардуино IDE позволяет редактировать исходник на С++ (вернее на Wiring), компилировать при помощи входящего в состав GCC компилятора с использованием своих библиотек и заливать его в МК при помощи AVRDUDE через загрузчик, находящийся в контроллере по интерфейсу UART.
Также в Ардуино IDE можно настраивать работу с разными микроконтроллерами (не только AVR), загружать их в том числе и через различные программаторы

Если я правильно понимаю при такой схеме подключения нет необходимости в Uno ? Как вы описывали в другой статье программирование Atmega 328

В другой статье программатор USBASP а Ардуино УНО в качестве панельки для ATMega328, здесь в качестве программатора Ардуино. Любой — Nano/Uno?Pro Mini

Спасибо за ответ. я Так и понял. Если вдруг заинтересует Вас мог бы предложить тему создания умного дома начать с построения Блок схемы работы устройств.Например Orange Pi PC Plus + GL.iNet Mini WiFi Router Flash 64MB RAM. И соответственно устройств на базе ESP8266 в этой схеме.

ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn …. статья на esp8266.ru немного не дотягивает полнотой развертки…..может у Вас получиться более подробно обьяснить

Добрый вечер! А возможно ли как то сделать из ардуино уны высоковльтный программатор Fusebit Doctor?

Добрый вечер! А можно уточнить?
Если я хочу по вашему способу прошить китайский заводской USBASP программатор на основе Atmega8A с кварцем на 12 MHz(чертовы китайцы льют в «камни» старые прошивки- из за них выдают ошибку и не шьют микроконтроллеры)
при помощи Arduino Pro Micro, у нее кварц на 16 MHz и кристалл Atmega32u4- мне нужна какая либо обвязка внешняя к линии SCK? Или там можно в студии ардуино как-то справиться с проблемой разницы частот?

А какая разница на какой частоте работает программатор. Прошивка же не на тактовой процессора выполняется. Этим программатором из статьи я шил Меги 8 на 8МГц, Меги 328 на 16 и 8 и тиньки на всех их рабочих частотах. Главное, подключиться по ICMP. Там есть синхронизация

Кошак зачетный. Сидит и фигеет с происходящего)))

А ведь можно ардуино сразу к USB подцепить, напрямую. Чтобы как USBAsp определялся, ток где скетч на него взять?

А это все стандартное, можно Uno или Nano использовать, тогда и TTL конвертер нах не нужен.

Источник

Adblock
detector