Вы находитесь на странице: 1из 7

HWman 5 января 2015

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


DIY или Сделай сам

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

Меня уже давно спрашивают — можно ли прошивать hex файлы при помощи 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\):

Тут их пара–тройка

Как видите, есть все популярные микроконтроллеры фирмы ATmel, в частности


ATmega328P ATmega8 ATtiny13 ATtiny2313 и всякие другие
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 это у меня такой у вас наверное будет другой в
как у меня на скрине, только не COM19, это у меня такой, у вас, наверное, будет другой, в
любом случае точно не COM1, первый это системный, актуален только для

программаторов, которые подключаются к реальному COM порту, например,


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

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

Маловато будет

Лично я тестировал только на программаторах AVRISP(Arduino с прошитым скетчем


ArduinoISP) и USBasp, на двух микроконтроллерах — ATmega8 и ATtiny13.

Чтобы можно было шить/читать/изменять фьюзы/ убить микроконтроллер при помощи


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

Прошивка и программирование ATtiny13 при помощи Arduino.

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

...
// pin name: not-mega: mega(1280 and 2560)
// slave reset: 10: 53
// MOSI: 11: 51
// MISO: 12: 50
// SCK: 13: 52
...

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

Ну и по аналогии… Ищем карту пинов, например, в даташите (техдокументация на МК)


интересующего нас микроконтроллера, вот, к примеру, первая ссылка из гугла по запросу
«ATmega8 pdf».
Ладно, не буду больше томить, вот ссылка на программу с файлами из Arduino IDE.

Ссылка на ветку на русскоязычном форуме Arduino;

Калькулятор фьюзов;

Прошивка и программирование ATtiny13 при помощи Arduino;

Все мои публикации.

PS У меня было такое, что ATtiny13 перестала прошиваться, на попытки её


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

Теги: Arduino, SinaProg, hex, Прошивка, ATmel, ATmega328P, ATmega8, ATtiny13, 
ATtiny2313, ATmega32, AVRISP, USBasp, Arduino IDE, ArduinoISP

Хабы: DIY или Сделай сам

+14 145,4k 344

Редакторский дайджест
Присылаем лучшие статьи раз в месяц

Электропочта

Сергей @HWman
Techn0man1ac(техноманьяк)

Комментарии 8

Реклама

ПОХОЖИЕ ПУБЛИКАЦИИ
9 января 2017

Замена delay() для неблокирующих задержек в Arduino IDE

10 сентября 2014

Пара костылей для Notepad++ Arduino IDE (для Чайников)

29 ноября 2012

Роботизированный бас на Atmel ATMega328 и Arduino IDE

ВАКАНСИИ

Front-end разработчик - Vue (Сибирь или Дальний Восток)


от 120 000 ₽ · Conjoint.ly · Хабаровск · Можно удаленно

Senior Frontend developer (Angular)


от 150 000 ₽ · Skyeng · Можно удаленно

Ведущий/старший дизайнер
от 50 000 до 60 000 ₽ · Panda Media · Можно удаленно

Автор обучающих проектов по программированию (Frontend, JavaScript)


от 6 000 до 10 000 ₽ · Stepik · Можно удаленно

Специалист международной поддержки онлайн-продукта


от 25 000 до 35 000 ₽ · TMS Outsource · Можно удаленно

Больше вакансий на Хабр Карьере

ЛУЧШИЕ ПУБЛИКАЦИИ ЗА СУТКИ

вчера в 12:33

babooshka tv, как самодельный видео-показатор сместил «точку


сборки» моих пожилых родителей

вчера в 12:53

Ты добавил всего две строчки. Почему на это ушло два дня?

вчера в 11:16
Go и кэши CPU

вчера в 12:34

Валидация Kubernetes YAML на соответствие лучшим практикам и


политикам

вчера в 13:12

Расцвет, падение и возрождение AMD

ПАРТНЕРСКИЕ МАТЕРИАЛЫ

С промокодом «вторая волна» — это только про море

Промо

«ТехноТекст-2020»: напиши так, чтобы даже шедевры восхитились

Событие

Начинаем веселье и объявляем конкурс хабрамемов

Событие

Настройка языка

Техническая поддержка

Полная версия

© 2006–2020 «Habr»