Как прошить attiny13 через usbasp
Перейти к содержимому

Как прошить attiny13 через usbasp

  • автор:

Прошивка МК Attiny13A

Приветствую Вас, друзья мои!
Ну вот наконец-то я подошёл к стадии шитья крестиком микросхем.И это моя первая микруха, с которой мне пришлось иметь дело.Ну а теперь по порядку, и к возникшим у меня вопросам =)
Итак, для прошивки у меня имеется купленный в кЕтае, и установленный на ноуте USBasp программатор…Прошивать мне надо было микроконтроллер ATtiny13A-10SSU, а значиЦа нужен адаптер.Изготавливаем платку, печатка позаимствована на драйве, если не ошибаюсь то в одной из тем пользователя himiks , за что ему респект и уважуха =)

Далее встал вопрос распиновки программатора, поисковик нам в помосЧь

По "железной" части вроде разобрались, и встаёт вопрос:"А чем же шить?"
Снова поисковик нам в помосЧь, и решено работать в SinaProg 1.5.5.10 (графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор)
Далее слегка помучил вопросами автора делающегося устройства и прошивки sunny-space , ему тоже респект и уважуха =)
Ну и подключаем микроконтроллер

Запускаем прогу, выставляем параметры программатора и МК, нажимаем на «Search» где должно появиться сообщение «Searching … OK»., и заливаем "кекс" в МК

Пару сек и видим надпись ОК.Правда зашилась микруха или нет так и не понял, мож спецы по скрину подскажут =)
Далее надо зашить фьюзы.По дефолту было так как в проге, а надо так как слева…

Выставил фьюзы, жму записать, и…тишина, только полоска бегает с надписью о записи и сё.Пришлось рубануть прогу…После реконнекта младший изменился на х71, который отличался от нужного хF1 только наличием галочки

А отсюда значиЦа возник вопрос:"Фьюзы получаеЦа зашились?"
Ну и резюмируя, вот такой вот он первый опыт вышивания крестиком прошивки микроконтроллеров =)
Ну воть как-то так =)
✔ Всех Вам благ, и ровных дорог!Всем пис peace, и до новых встреч =)

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

А для какой шился контроллер если не секрет?

Для платы плавного розжига

Понял спасибо, у меня такой на заряднике сгорел, ищу вот где прошивку для него взять.

С китайскими USBASP вообще нездоровая ситуация. При получении прошивку менять однозначно на последнюю офф — после этого ругаться перестает. Я шил через 5 проводков. Сейчас перешил на прошивку от asprog — чтобы еще и флешки шить. У меня 2 версии — на одной просто процессор 8, на второй 8L. Кварцы одинаковые — по даташиту 8L не длжна работать на такой частоте — но работает. (я х.з.). Вчера попробовал прошить ими ATTINY13а — обломился. Не видит сигнатуры. Тьму прог перебрал — не помогло. Попробовал ими же друг друга перешить — аналогично, нет сигнатуры? Воткнул 5 проводков — на раз прошил оба и офф и от asprog. Проверил в asprog оба — отлично работают. Друг друга НЕ ШЬЮТ! Что на фигня? Все варианты пробовал — и слоу перемычку тоже. И местами менял…Провод-перемычку прозванивал и менял. Раньше ими же шил Ардуино мини со стертым загрузчиком — идеально все (тоже китайская, проц 328). Поздно уже было — бросил. Вечером еще добью до конца — попробую 5 проводков на ATTINY13а и еще раз прошить Ардуино мини через USBASP.
Дополнительная информация — ATTINY13а из магазина, ничего не менялось — делалась попытка читать только сигнатуру и состояние фьюзов — т.е. совсем без записи. Стоит Win7 32.

А так то после того, как увидел, какой фокус китайцы забабахали с FTDI и PL чипами — уже ничему не удивляюсь (3 дня тупил, пока дошло что просто переходники перестали работать — все 3 штуки одновременно! — установил обновления на винду называется!). Так что не сильно удивлюсь, если окажется что и меги8 в этих программаторах — подделка. особенно учитывая ту цену, по которой они продаются…

По поводу переходника и прищепки — удобнее 1 ногу сначала припаять, так на порядок легче "прилепить" правильно. У меня есть колодка под это дело и "прищепка" с переходными контактами — стоят копейки, работать на порядок удобнее.

все делал как описано и ничего. вообще не видит в упор 13 тиньку ни дип и смд. программатор тот же USBasp v2. перепробовал все совместимые и рекомендованые программы. так же и сами перемычки на программаторе. на разных виндовс, все бестолку

Как прошить attiny13 через usbasp

Микроконтроллеры AVR можно программировать через ICSP (ISP) интерфейс. Делать это не сложнее, чем пользоваться платой Arduino с загрузчиком (bootloader) в микроконтроллере. С технологией ICSP Вам также будет доступна среда программирования Arduino, а кроме того, и много других возможностей.

Возьмём AVR микроконтроллер ATtiny13 или ATtiny85 и попробуем программировать его используя технологию ICSP.

Для программирования микроконтроллера по технологии ICSP нужен программатор. Чаще всего, подойдёт самый дешёвый USBASP программатор. Казалось бы, программатор лишнее устройство, ведь для платы Arduino он не нужен. Но на плате Arduino уже припаяна микросхема, выполняющая ту же роль что и программатор USBASP для отдельно взятого микроконтроллера. И стоимость платы Arduino примерно равна стоимости микроконтроллера с программатором USBASP. Для знакомства с программированием микроконтроллеров проще приобрести плату Arduino, а работать с микроконтроллерами удобнее с программатором.

Рис. 1. Программатор USBASP.

Рис. 2. Интерфейс программатора для внутрисхемного программирования микроконтроллеров.

Рис. 3. Варианты интерфейсов для внутрисхемного программирования микроконтроллеров.

Рис. 4. Микроконтроллер AVR ATtiny13.

Для программирования микроконтроллера по технологии ICSP будем подключать к программатору следующие ножки микросхемы ATtiny13:

Pin м-к Сигнал Описание Pin ISP6PIN Pin ISP10PIN
5 MOSI Вход данных при программировании 4 1
6 MISO Выход данных при программировании 1 9
7 SCK Вход тактового сигнала при программировании 3 7
1 RESET Сброс 5 5
4 GND Общий провод 6 4, 6, 8, 10
8 VCC Питание микросхемы 2 2

Обратите внимание, что ножки микроконтроллера 5, 6, 7 задействованные в программировании микроконтроллера, после программирования могут быть задействованы как и все другие ножки микроконтроллера в ваших схемах. Если же к этим ножкам уже припаяны периферийные устройства, они не помешают перепрошивке микроконтроллера в дальнейшем.

Подключаем микроконтроллер к программатору согласно рис. 2, 3, 4 и табл. 1. Подключаем программатор в USB порт компьютера и пытаемся с помощью программы avrdude считать сигнатуру микроконтроллера:

Считаем сигнатуру другого микроконтроллера:

  • Электроника
  • Программирование
  • Назад
  • Вперед
  • Вы здесь:  
  • Главная />
  • Робототехника />
  • Программирование AtTiny 13, 45, 85

Прошивка микросхемы ATtiny13

В версии Arduino_ID_v1.0.4 ArduinoISP отсутствует.
Нужно загрузить библиотеку ArduinoISP.

Файл —>> примеры —>> ArduinoISP
Инструменты —>> Плата —>> Arduino UNO
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "AVRISP mkll"

Версия ArduinoISP version 04m3, 23 July 2011 Randall Bohn

Ошибка при загрузке программы: avrdude: stk500_getsync(): not in sync: resp=0x00
Отключил всё от выходов и входов Arduino UNO, ошибка пропала, программа загрузилась хорошо.

Файл —>> образцы —>> ArduinoISP
Инструменты —>> Плата —>> "Arduino/Genuino UNO"
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "AVRISP mkll"

Версия ArduinoISP version 04m3, 23 July 2011 Randall Bohn

Загрузка прошла без ошибок.

Файл —>> примеры —>> ArduinoISP
Инструменты —>> Плата —>> "Arduino/Genuino UNO"
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "AVRISP mkll"

Загрузка прошла без ошибок.

Файл —>> примеры —>> ArduinoISP
Инструменты —>> Плата —>> "Arduino/Genuino UNO"
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "AVRISP mkll"

Выскочила красная надпись:
Archiving built core (caching) in: C:\DOCUME

1\Temp\
Но это не ошибка, а информационное сообщение "Сохранение скомпилированного ядра (кэширование) в. (здесь директория)

Файл —>> примеры —>> ArduinoISP
Инструменты —>> Плата —>> "Arduino/Genuino UNO"
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "AVRISP mkll"

Загрузка прошла без ошибок.

Пробуем прошить ATtiny13

Микросхему ATtiny13 подключаем вот по такой схеме к Arduino UNO

Программа Arduino_ID_v1.8.9
Программатор Arduino UNO

Файл —>> Настройки —>> Дополнительные ссылки для менеджера плат:
Вставляем в поле ссылку ниже.
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.jso n
Нажать кнопку "ОК"

Инструменты —>> Плата —>> Менеджер плат —>>
И в самом низу листа выбрал:

DIY ATtiny by James Sleeman, http://spat4cs.gogo.co.nz/ версия 2018.9.9
Платы в данном пакете:
ATtiny4, ATtiny5, ATtiny9, ATtiny10, ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, and variants thereof

Платы загрузились с интернета в папку:
C:\Documents and Settings\пользователь\Local Settings\Application Data\Arduino15

Если что, то папку с платами ATtiny13 можно распаковать туда же, без установки, все платы будут работать так-же, архив лежит ниже по ссылке.
Разные версии cores13, для прошивки микросхемы ATtiny13 и не только.

Настройки для ATtiny13:

Инструменты —>> Плата: ATtiny13
Инструменты —>> Processor Version: "ATtiny13a"
Инструменты —>> Порт: "ваш порт"
Инструменты —>> Программатор: "Arduino as ISP"

Загрузил пробный скетч:

Такой скетч тоже работает:

Загрузка прошла сразу и без ошибок.

Что же среда делает при нажатии на кнопку «Записать загрузчик»?

Arduino IDE в данном случае просто выставляет нужные фьюзы микроконтроллера.
К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.

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

Прошиваем ATtiny13 с помощью программатора USBASP

Подключаем ATtiny13 к программатору вот по такой схеме.

Настройки для прошивки ATtiny13 программатором USBASP в программе Arduino ID v1.8.9

Инструменты —>> Плата: ATtiny13
Инструменты —>> Порт: "COM3"
Инструменты —>> Программатор: "USBasp"

Все версии программы Arduino ID успешно прошивают ATtiny13, при установке нужных библиотек в программу Arduino ID,
в нашем случае для ATtiny13.
Однако нужно помнить, что должны быть установлены свежие драйверы для программатора USBASP
А если программатор новый(только пришёл с али), то нужно его ещё прошить новой прошивкой для корректной работы.
Прошивка находится в архиве, имя usbasp.atmega8.2011-05-28.hex
Если хотите знать как обновить прошивку USBasp, пишите в комментариях, добавлю по мере возможности.

Не забываем ещё про перемычку в программаторе USBasp.
Перемычка JP1: питание программируемой микросхемы.
Перемычка JP3: Обязательно поставить, с этой перемычкой работают частоты — 9.6/4.3/1.2/

скриншот настроек в программе Arduino ID.

Без всего этого удачных прошивок может и не быть.

Прошиваем ATtiny13 с помощью программы SinaProg v2.1.1.Rus

Программатор USBASP.
Перемычка JP3: Обязательно поставить.
Скриншот настроек программы.
Фьюзы ни какие не трогаем, всё по умолчанию
Прекрасно зашиваются файлы *.hex

Прошиваем ATtiny13 с помощью программы AVRDude Prog v3.3

Программатор USBASP.
Перемычка JP3: Обязательно поставить.
Скриншот настроек программы.
Фьюзы ни какие не трогаем, всё по умолчанию
Прекрасно зашиваются файлы *.hex

Как прошить attiny13 через usbasp

Приветствую Вас, друзья мои!
Ну вот наконец-то я подошёл к стадии шитья крестиком микросхем.И это моя первая микруха, с которой мне пришлось иметь дело.Ну а теперь по порядку, и к возникшим у меня вопросам =)
Итак, для прошивки у меня имеется купленный в кЕтае, и установленный на ноуте USBasp программатор…Прошивать мне надо было микроконтроллер ATtiny13A-10SSU, а значиЦа нужен адаптер.Изготавливаем платку, печатка позаимствована на драйве, если не ошибаюсь то в одной из тем пользователя himiks , за что ему респект и уважуха =)

Далее встал вопрос распиновки программатора, поисковик нам в помосЧь

По "железной" части вроде разобрались, и встаёт вопрос:"А чем же шить?"
Снова поисковик нам в помосЧь, и решено работать в SinaProg 1.5.5.10 (графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор)
Далее слегка помучил вопросами автора делающегося устройства и прошивки sunny-space , ему тоже респект и уважуха =)
Ну и подключаем микроконтроллер

Запускаем прогу, выставляем параметры программатора и МК, нажимаем на «Search» где должно появиться сообщение «Searching … OK»., и заливаем "кекс" в МК

Пару сек и видим надпись ОК.Правда зашилась микруха или нет так и не понял, мож спецы по скрину подскажут =)
Далее надо зашить фьюзы.По дефолту было так как в проге, а надо так как слева…

Выставил фьюзы, жму записать, и…тишина, только полоска бегает с надписью о записи и сё.Пришлось рубануть прогу…После реконнекта младший изменился на х71, который отличался от нужного хF1 только наличием галочки

А отсюда значиЦа возник вопрос:"Фьюзы получаеЦа зашились?"
Ну и резюмируя, вот такой вот он первый опыт вышивания крестиком прошивки микроконтроллеров =)
Ну воть как-то так =)
✔ Всех Вам благ, и ровных дорог!Всем пис peace, и до новых встреч =)

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

А для какой шился контроллер если не секрет?

Для платы плавного розжига

Понял спасибо, у меня такой на заряднике сгорел, ищу вот где прошивку для него взять.

С китайскими USBASP вообще нездоровая ситуация. При получении прошивку менять однозначно на последнюю офф — после этого ругаться перестает. Я шил через 5 проводков. Сейчас перешил на прошивку от asprog — чтобы еще и флешки шить. У меня 2 версии — на одной просто процессор 8, на второй 8L. Кварцы одинаковые — по даташиту 8L не длжна работать на такой частоте — но работает. (я х.з.). Вчера попробовал прошить ими ATTINY13а — обломился. Не видит сигнатуры. Тьму прог перебрал — не помогло. Попробовал ими же друг друга перешить — аналогично, нет сигнатуры? Воткнул 5 проводков — на раз прошил оба и офф и от asprog. Проверил в asprog оба — отлично работают. Друг друга НЕ ШЬЮТ! Что на фигня? Все варианты пробовал — и слоу перемычку тоже. И местами менял…Провод-перемычку прозванивал и менял. Раньше ими же шил Ардуино мини со стертым загрузчиком — идеально все (тоже китайская, проц 328). Поздно уже было — бросил. Вечером еще добью до конца — попробую 5 проводков на ATTINY13а и еще раз прошить Ардуино мини через USBASP.
Дополнительная информация — ATTINY13а из магазина, ничего не менялось — делалась попытка читать только сигнатуру и состояние фьюзов — т.е. совсем без записи. Стоит Win7 32.

А так то после того, как увидел, какой фокус китайцы забабахали с FTDI и PL чипами — уже ничему не удивляюсь (3 дня тупил, пока дошло что просто переходники перестали работать — все 3 штуки одновременно! — установил обновления на винду называется!). Так что не сильно удивлюсь, если окажется что и меги8 в этих программаторах — подделка. особенно учитывая ту цену, по которой они продаются…

По поводу переходника и прищепки — удобнее 1 ногу сначала припаять, так на порядок легче "прилепить" правильно. У меня есть колодка под это дело и "прищепка" с переходными контактами — стоят копейки, работать на порядок удобнее.

все делал как описано и ничего. вообще не видит в упор 13 тиньку ни дип и смд. программатор тот же USBasp v2. перепробовал все совместимые и рекомендованые программы. так же и сами перемычки на программаторе. на разных виндовс, все бестолку

Вспомнил свою старую работу) в сервис центре по ремонту сотовых телефонов ��

О! И ты туда же!))) Я пока Ардуину Уно получил, в пути Ардуины мини и нано, Атишки, программаторы и куча всякой периферии в виде драйверов движков, транзисторов Дарлингтона, датчиков и сенсоров…

Программаторы, ISP, фьюзы

В этом уроке мы рассмотрим загрузку прошивки в ардуино через внешние “программаторы”. Давайте вспомним, о чем уже говорили в одном из первых уроков: загрузка прошивки в Arduino возможна двумя способами:

  • “Напрямую” во flash память микроконтроллера при помощи ISP (In System Programming) внутрисистемного программатора.
  • При помощи загрузчика (bootloader), который живёт в конце Flash памяти МК, принимает программный код по протоколу TTL (UART) и записывает его во Flash память.
Загрузчик (bootloader)

Загрузчик живёт в самом конце Flash памяти МК и позволяет записывать прошивку, отправляемую через UART. Загрузчик стартует при подаче питания на МК, ждёт некоторое время (вдруг кто-то начнёт слать код прошивки по UART), затем передаёт управление основной программе. И так происходит каждый каждый раз при старте МК.

  • Загрузчик позволяет прошивать МК через UART;
  • Загрузчик замедляет запуск МК, т.к. при каждом запуске ждёт некоторое время для потенциальной загрузки прошивки;
  • Загрузчик занимает место во Flash памяти. Стандартный старый для Arduino NANO занимает около 2 кБ, что весьма существенно!
  • Именно загрузчик мигает светодиодом на 13 пине при включении, как индикация работы.
Программатор

Помимо записи прошивки во flash память, программатор позволяет:

  • Считывать содержимое Flash памяти (скачать прошивку на компьютер)
  • Полностью очищать чип от всех данных и настроек
  • Записывать и читать загрузчик
  • Считывать/записывать EEPROM память
  • Читать и настраивать фьюзы (fuses, fuse-bits) и лок биты.

Программатор – ваш единственный друг при работе с “голым” микроконтроллером, то есть для его низкоуровневой настройки и загрузки прошивки.

USB-TTL (UART)

Этот способ реализован прямо на платах Arduino при помощи USB-TTL (USB-UART) преобразователя, именно поэтому мы можем подключить плату к компьютеру и загрузить код. USB-TTL позволяет только загрузку данных во flash, остальные возможности (как у ISP программатора) ему недоступны. В то же время он ограничен только возможностями загрузчика, но в этом уроке мы рассматриваем только стандартные. Также USB-TTL мост позволяет микроконтроллеру общаться с компьютером по последовательному соединению (тот самый Serial и монитор com порта). Есть платы без бортового USB-TTL, например Arduino Pro Mini. Для работы с ними нужно купить внешний USB-TTL преобразователь. Также загрузка прошивки через UART возможна и в “голый” микроконтроллер при условии наличия там загрузчика, который запишет принятый код во flash. Про запись загрузчика мы поговорим ниже. UART “загружатор” подключается к пинам RX и TX Ардуино (или микроконтроллера), RX->TX и TX->RX, также обязательно подключается земля GND. Если у прошиваемой платы нет своего питания, то подключается и питание. Загрузчик отрабатывает при запуске МК, поэтому непосредственно перед загрузкой прошивки МК должен быть сброшен (перезагружен), и для этого на платах USB-UART есть вывод DTR (Data Terminal Ready), который подключается к пину RST Reset и собственно выполняет сброс перед перед загрузкой прошивки. На платах Pro Mini есть отдельный пин DTR.

USB-TTL Arduino
DTR DTR
RX TX
TX RX
GND GND
VCC/5V/3.3V VCC

blankКитайцы выпускают USB-TTL модули в широком ассортименте, но в целом они все одинаковые по своей сути. Ссылка на результат поиска на aliexpress, и ссылка на все USB-TTL в моём любимом магазине WAVGAT. Что использую я? В основном платку на CP2102. Перед заказом модуля обязательно убедитесь в том, что у него есть выход DTR, иначе этот модуль можно будет использовать только для “общения” с контроллером через COM порт. Для работы с таким преобразователем нужно установить драйвер для чипа, на базе которого собран модуль, это может быть CP2102, CH340/341, FT232, PL2303 и другие. Прошивка загружается как обычно: выбираем порт, на котором сидит преобразователь, версию загрузчика и жмём загрузить, всё! Важный момент: на некоторых китайских версиях плат Arduino Pro Mini не распаян пин DTR, т.е. он не идёт на RST и автоматический сброс перед загрузкой прошивки не выполняется. В этом случае сброс нужно производить вручную, кнопкой RST, непосредственно перед загрузкой прошивки… Загрузка прошивки посредством загрузчика (bootloader) возможна с любого UART устройства, даже через Bluetooth. Но об этом мы поговорим в отдельном уроке.

ISP программатор

USBasp

Дешёвые ISP программаторы также есть в ассортименте у китайцев, рекомендую брать USBasp как самый распространенный. Поискать на алиэкспресс, мне нравится версия в корпусе. USBasp имеет не очень удобный выход 10-пин на шлейфе, поэтому рекомендуется купить также переходник 10-пин на 6-пин, который позволяет сразу подключаться к ISP header’у, который есть на большинстве плат Arduino. Внимание! Очень часто встречается брак в виде непропая контактов, поэтому во избежание проблем рекомендуется пропаять переходник и отмыть флюс (зубная щётка + бензин калоша).

  • Подключить usbasp к компьютеру
  • Скачать и установить драйвера на usbasp (скачать с моего сайта, скачать с Яндекс диска, ещё есть тут и тут)
  • Открыть диспетчер устройств и убедиться, что программатор определился системой
  • Открыть Arduino IDE
  • Выбрать usbasp в Инструменты > Программатор
Решение проблем

Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):

  • Вытащить и обратно вставить usbasp в usb порт
  • Вставить в другой usb порт
  • Переустановить драйвер на usbasp
  • Проверить качество соединения USBasp с МК
  • Перепаять переходник и отмыть флюс

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

  • USBasp: на плате есть перемычка JP3, которая включает режим низкой скорости загрузки. В новых версиях прошивки для USBasp скорость выбирается автоматически, но китайцы продают старую версию. Как прошить новую – ищите в интернете.
Основные ошибки в логе Arduino IDE

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’ Причина – компьютер не видит USB ASP

  • Проверить и сменить USB порт
  • Попытаться переустановить драйвер
  • Проверить пайку USB разъема на плате программатора
  • Проверить наличие и целостность элементов вблизи usb разъема программатора, кварцевый резонатор
  • Возможно программатор криво прошит – при возможности попытаться перепрошить
  • Возможно микроконтроллер на плате программатора – брак или же мертв, попытаться заменить и прошить

avrdude: error: program enable: target doesn’t answer. Причина – usbasp не видит подключаемый микроконтроллер

  • Проверить правильность и целостность соединения с МК
  • Попытаться снизить частоту прошивки, джампером или же указав более низкую скорость в среде программирования
  • Проверить пайку разъема 10 pin и переходника 10 pin – 6 pin
  • Возможно прошиваемый микроконтроллер попался с браком, или же мертв.
Arduino as ISP

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

  • Открыть скетч Файл > Примеры > 11. ArduinoISP > ArduinoISP
  • Всё! Ваша Arduino теперь стала ISP программатором
  • Подключаем к ней другую Arduino или голый чип по схеме ниже
  • Выбираем Arduino as ISP в Инструменты > Программатор
  • И можем писать загрузчики, фьюзы или загружать прошивку напрямую во Flash

ISP программатор подключается к четырем пинам микроконтроллера, не считая питания: один из пинов передает сброс, остальные – для передачи данных. Чтобы плата-программатор не сбрасывалась при загрузке, на неё нужно:

    Либо поставить поставить конденсатор ёмкостью

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

Решение проблем

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

  • Arduino ISP: нужно изменить частоту загрузки прошивки в скетче Arduino ISP и снова прошить его в ардуино-программатор (см. строку в скетче 45 и ниже);

Работа в Arduino IDE

Прошивка загрузчика

Из Arduino IDE при помощи ISP программатора мы можем записать другой загрузчик (по факту загрузчик + фьюзы) и загрузить скетч, а также настроить/прошить фьюзы и лок-биты, но не очень удобным способом. Когда мы выбираем плату в Инструменты > Плата и загрузчик в Инструменты > Плата (загрузчик, bootloader), Arduino IDE автоматически делает “активным” нужный загрузчик. Нажимая Инструменты > Записать загрузчик мы прошиваем загрузчик, соответствующий выбранной плате и её настройкам. Также одновременно с загрузчиком прошиваются фьюзы и лок-биты, соответствующие выбранной плате в Arduino IDE. Как и где их поменять, смотрите чуть ниже. Рассмотрим на примере записи загрузчика для atmega328, стоящей на китайской плате Arduino NANO. На данный момент китайцы прошивают в МК старую версию загрузчика, которая называется old bootloader в меню платы. Оригинальные платы идут с более современным загрузчиком, поэтому при работе с китайскими платами нам приходится выбирать old bootloader для загрузки прошивки через бортовой usb порт. Подключим usbasp по схеме выше, выберем его как программатор в Инструменты > Программатор, выберем плату Arduino NANO, загрузчик для atmega328 (первый в списке). Нажмём записать загрузчик. Всё! Теперь плату можно шить через бортовой usb порт, выбирая первый загрузчик. Он кстати легче, быстрее “прошивает” и сама прошивка быстрее “запускается”.

Как убрать загрузчик?

В стандартном “ядре” Arduino не предусмотрен вариант “без загрузчика”. Для того, чтобы вручную убрать поддержку загрузчика, нужно уметь работать с boards.txt и фьюзами: нужно будет изменить фьюз BOOTRST и подправить максимальный размер скетча. Есть более простой вариант – найти и установить ядро, в котором реализован выбор загрузчика с вариантом “без загрузчика”, например для ATmega328 это miniCore и наше GyverCore. Нужно установить поддержку ядра по рассмотренной ранее инструкции, выбрать плату, указать вариант “без загрузчика” и нажать “Записать загрузчик”. В МК будут прошиты соответствующие фьюзы.

Загрузка скетча

В Arduino IDE можно зашить скетч через программатор, для этого надо нажать Скетч > Загрузить через программатор. Это очень удобно в том случае, когда МК используется без загрузчика, или просто голый МК.

Фьюзы

Конфигуратор платы в Arduino IDE устроен следующим образом: каждой плате в Инструменты > Плата соответствует свой набор настроек, включая фьюзы, которые прошиваются вместе с загрузчиком . Некоторые из них:

  • Загрузчик (путь к файлу)
  • Скорость загрузки (через загрузчик)
  • Объем доступной flash и sram памяти
  • Весь набор фьюзов и лок-биты

Файл конфигурации называется boards.txt и найти его можно в папке с ядром Arduino: C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt. Документацию на boards.txt можно почитать здесь. При желании можно вывести нужные фьюзы через калькулятор (читайте выше), изменить их в boards.txt (главное не запутаться, для какой выбранной конфигурации платы делается изменение) и прошить в МК, нажав Инструменты > Записать загрузчик.

  • Фьюзы подписаны как low/high/extended fuses, можно вставлять полученное в калькуляторе значение.
  • Локбиты работают следующим образом: unlock_bits это локбиты, которые прошьются до записи загрузчика (при нажатии на кнопку Записать загрузчик). А вот после прошивки загрузчика будут автоматически прошиты lock_bits, которые и определят доступ к памяти контроллера во время его работы. Чтобы защитить прошивку от чтения – ставим lock_bits 0x3C.

Такая работа с фьюзами максимально неудобна, но есть и другие варианты:

  • Ядро GyverCore для atmega328, в нем мы сделали кучу готовых настроек фьюзов прямо в настройках платы, читайте в уроке про GyverCore. Несколько загрузчиков, включая вариант без загрузчика, выбор источника тактирования и другие настройки в один клик мышкой.
  • Программа AVRdudeprog, про нее поговорим ниже

Фьюзы (Pro)

Фьюзы (фьюз-биты) являются низкоуровневыми настройками микроконтроллера, которые хранятся в специальном месте в памяти и могут быть изменены только при помощи ISP программатора. Это такие настройки как выбор источника тактирования, размер области памяти под загрузчик, настройка отсечки по напряжению и прочее. Фьюз-биты собраны по 8 штук в байты (т.н. байты конфигурации), как типичный регистр микроконтроллера AVR. Таких байтов может быть несколько, они называются low fuses, high fuses, extended fuses. Для конфигурации байтов рекомендуется использовать калькулятор фьюзов (например, вот такой), в котором просто ставятся галочки на нужных битах, и на выходе получается готовый байт в hex виде. Рассмотрим на примере ATmega328p:

Важный момент: в AVR биты у нас инверсные, то есть 1 это выкл, 0 это вкл. Расставляя галочки в калькуляторе, мы формируем байт, галочка стоит – бит включен, но в результирующем байте включенные биты являются нулями. Об этом стоит задумываться при ручном составлении фьюз-байта, при использовании калькулятора можете об этом даже не вспоминать. Что позволяют настроить биты?

  • CKSEL0CKSEL3 – выбор источника и частоты тактирования (уточняй в даташите на свой МК, какая конфигурация за что отвечает)
  • SUT0SUT1 – задержка старта МК после перезагрузки
  • CKOUT – дублирование тактирования на один из пинов (см. в даташите на какой)
  • CKDIV8 – делит тактовую частоту на 8
  • BOOTRST – если включен, МК запускается с загрузчика
  • BOOTSZ0BOOTSZ1 – задаёт размер сектора загрузчика
  • EESAVE – защита EEPROM от стирания во время выполнения полной очистки чипа
  • WDTON – если включить, то Watchdog будет принудительно включен без возможности отключения
  • SPIEN – опасный бит , при его отключении пропадает возможность прошивки через ISP, и возможность выключить этот бит в том числе*
  • DWEN – вкл/выкл отладочный интерфейс DebugWire. На других моделях бывает и JTAG, и его бит – JTAGEN
  • RSTDISBL – опасный бит , при его включении можно использовать ногу RST как обычный цифровой пин, но пропадает возможность прошивки через ISP и выключить этот бит как следствие*
  • BODLEVEL0BODLEVEL3 – настройка контроля напряжения (МК сбросится при падении ниже установленного напряжения)

* – прошивка возможна при помощи высоковольтного программатора

Лок-биты (Pro)

Лок-биты (lock-bits) позволяют управлять доступом к памяти микроконтроллера, что обычно используется для защиты устройства от копирования. Лок-биты собраны опять же в конфигурационный лок-байт, который содержит: BOOTLOCK01, BOOTLOCK02, BOOTLOCK11, BOOTLOCK12, LOCKBIT1, LOCKBIT2 (для ATmega328). Калькулятор лок-битов можно использовать этот. BOOTLOCK биты позволяют запретить самому МК запись (самопрограммирование) во flash память (область программы и область загрузчика)

А вот локбиты LOCKBIT позволяют запретить запись и чтение flash и EEPROM памяти извне, при помощи программатора, т.е. полностью защитить прошивку от скачивания и копирования:

Таким образом включив LOCKBIT1 (лок-байт будет 0x3E) мы запретим внешнюю запись во Flash и EEPROM память, т.е. при помощи ISP программатора, а включив LOCKBIT1 и LOCKBIT2 (лок-байт: 0x3C) полностью заблокируем заодно и чтение данных из памяти микроконтроллера. Повторюсь, всё описанное выше относится к ATmega328p, для других моделей МК читайте в соответствующих даташитах.

Avrdudeprog

Avrdudeprog – утилита от русского программиста, являющаяся удобной оболочкой для avrdudue. Скачать AVRDUDE_PROG можно с официального сайта (прямая ссылка на загрузку, на всякий случай зеркало на моём ЯД и FTP этого сайта). В рамках этого урока, программа умеет следующее:

  • Чтение/запись/очистка flash памяти
  • Чтение/запись/очистка eeprom памяти
  • Полная очистка чипа
  • Калькулятор фьюзов и локбитов (чтение/запись)

Более подробный обзор на avrdudeprog можно посмотреть здесь . Давайте посмотрим на калькулятор фьюзов. Выбираем свой микроконтроллер и программатор (можно добавить другие модели микроконтроллеров и программаторов, читай тут). Переходим во вкладку Fuses, нажимаем прочитать. При успешном чтении увидим текущий набор настроек своего чипа. Можно их поменять и загрузить. Важно! Галку инверсные биты не трогаем! Лок-биты и отключение RST заблокирует микроконтроллер, не трогайте их, если такой цели нет! Можно загружать прошивку или загрузчик из .hex файла, указав путь к ней на первой вкладке в окне Flash. Очень удобная утилита для низкоуровневой работы с МК.

FAQ USBasp программатор AVR микроконтролеров

В инете сказано, что USBasp — один из наиболее простых для повторения AVR USB программаторов.
Требует минимум внешних компонентов, имеет несколько много готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

Оригинальная статья по программатору: www.fischl.de/usbasp/
Статья, по которой собирал: easyelectronics.ru/usb-pr…grammator-avr-usbasp.html
Автором печатной платы является DiHalt.

Сборка устройства USBasp

1. Сборка производилась по следующей схеме. Это самая распространенная схема. Требуется минимум навесных элементов. Не смог достать емкости для кварца на 18пФ, заменил их на 22пФ. Светодиоды можно использовать любого цвета (от того, что красный с зеленым местами поменяются, принцип работы не изменится)

2. Модифицировал печатную плату под свой корпус. Пришлось немного попотеть при переделке, чтоб впихнуть в корпус от сплиттера в одну линейку и МК, и USB-разъем и IDC-10. Результат превзошел мои ожидания )
Доработанная печатная плата USBasp программатора: Скачать в формате Lay

3. Припаиваем все элементы согласно схеме. Элементов мало, вероятность ошибиться низка, но есть. Поэтому все делаем внимательно )

4. А теперь сравним оба устройства: авторское и получившееся. Чего хотел — добился. Устройство помещается в корпусе от плиттера. Найдите 10-ть отличий…

Программирование микроконтроллера Mega8

1. Прошиваем микроконтроллер с помощью этого программатора:
Простой LPT программатор AVR микроконтроллеров (5-ть проводков)
Заливаем файл прошивки под названием "usbasp.atmega8.2007-10-23.hex" из этого архива:
Прошивка, программа, печатка. Установка фьюзов тоже в архиве.

Если же фьюзы установлены были неверно, и теперь микроконтроллер не определяется (т.е. был затронут одby из критичных фьюзов), а вам хотелось заново прошить МК, то исправить их можно с помощью такого устройства:
Фьюзбит Доктор. Исправляем AVR при неправильно прошитых фьюзах

2. Подключаем к программатору адаптер для программирования микроконтроллеров.
Сам адаптер был собран ранее в этой теме:
Адаптер для прошивки AVR микроконтроллеров (8pin-20pin-28pin)

Установка драйвера для USBasp

1. Можно было запрограммировать и в самом USBasp программаторе, подключив к нему простой программатор согласно распиновке. Если все собрано и запрограммировано верно, то устройство при подключении к ПК определится и "попросит" установить двайвер.

2. На что ему вежливо ответим выбрав папку со скаченными и разархивированными двайверами.

3. Драйвера успешно установятся, если схема собранна верно и МК тоже прошит верно.

4. В диспетчере устройств определится программатор как: LibUSB-Win32 Device.
Радуемся, и тестируем )

Проверка работоспособности программатора

1. В качестве програмки использовал avrdude в оболочке Sinaprog1.5.5.10.
Можно использовать и приложенное к архиву оболочку USBASP_AVRDUDE_PROG
Для проверки доступа к Attiny13A привожу пошагово такую инструкцию. Контроллер опознан, можно заливать прошивку в Attiny13A .

Необходимые данные для повторения устройства находятся в этом архиве:
Прошивка, программа, печатка, драйвер

FakeHeader

Comments 270

Здравствуйте. Подскажите, ситуация такая атмегу8 прошли, фьюзы выстовил, ( программа синипрог). Красный светодиод не горит(пайку проверял, прошивал другой прошивкой где на пин с Диодом подаётся питание)

При подключении программатора к компьютеру он определяется как неизвестное устройство, драйвера не устанавливаются. Да и светодиод питания не горит. Перемычка стоит только j2. Дело в микроконтроллере?

Проверять монтаж полностью. Может и контроллер

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

Очень полезная статья!
Автору жму руку!

Возникала проблема: есть программатор USBaps, драйвер установил, в устройствах компьютера определяется.
Установил SinaProg, программатор подключаю — загорается светодиод, пытаюсь прошить Тиньку13 и выскакивает сообщение "programmer faild" над строчкой Flash. Второй светодиод откликается во время прошивки — начинает мигать, понятно, что программатор работает.
Причем сообщение "programmer faild" выскакивает даже если пустой программатор подключен без Тиньки и попробовать ее определить.
В какую сторону копать?

Ребята, подскажите, кто сталкивался или знает. Ситуация такая-собрал программатор, запрограммировал контроллер с помощью Pickit2 и AvrDude, поставил его в плату собранного USBasp программатора, включаю его, а компьютер видит его, как неопознанное устройство. Резистор, рекомендованный к уменьшению до 1 ком пробовал уменьшить. Результата ни какого. Прошил без ошибок, фьюзы проверены то раз.Как сделать, чтоб комп увидел его, как USBasp?

Весь atmel можно шить usbasp-шкой или допустим мои завалявшиеся at89c2051 и at89c51ed2 не пройдут? (под них даже софта найти не могу, в базе популярных прошивальщиков этой серии-AT89 просто нет )

ps где список возможностей usbasp взять

ставим синапрог, смотрим список доступных мк:
— там список начинается с AT90xx

Весь atmel можно шить usbasp-шкой или допустим мои завалявшиеся at89c2051 и at89c51ed2 не пройдут? (под них даже софта найти не могу, в базе популярных прошивальщиков этой серии-AT89 просто нет )

ps где список возможностей usbasp взять

блин ну обьясните мне, такому недалёкому в таких вопросов-ЧТО МОЖНО ДЕЛАТЬ СТ ТАКИМИ ПРОГРАМАТОРАМИ?тОЛЬКО БЕЗ УМНЫХ МСЛЕЙ КОТОРЫЕ ПОТОМ НУЖНО БУДЕТ РАСШИФРОВЫВАТЬ А ТАК, ПОПОНЯТНЕЕ НА ПАЛЬЦАХ

если коротко, то этот программатор используется для заливки прошивки в микроконтроллеры фирмы Atmel.

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

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

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

если коротко, то этот программатор используется для заливки прошивки в микроконтроллеры фирмы Atmel.

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

Atmega 328P можно им программить? а то, думаю взять для этого дела вот такой: ru.aliexpress.com/item/1p…ab_test=searchweb201556_1, searchweb201644_2_505_506_503_504_301_502_10001_10002_10016_10005_10006_10012_10003_10004_62_10007, searchweb201560_3, searchweb1451318400_6149, searchweb1451318411_6450&btsid=385de7ac-f9a3-4b41-a57e-64ecf3522145

ну это usbasp, можно им программировать

спасиб, значит, то, что мне и нужно

Сначала хочю сказать огромное СПАСИБО человеку под ником c10wn за неоценимый вклад в просвещение таких как я.

Теперь к делу
c10wn посоветовал альтернативу прошывке программатора от AVR910. Вчера я ее залил. Но не смог протестить, так как с прошыватором завис. Сегодня узнал от c10wn что AVR studio должна поддержывать етот программатор.
Как ето сделать:
Tools/Add target… (Вибираем STK500 и прот на котором висит программатор)
После етого в меню Tools\device programming можна шыить с помощю STK500!
Даже както удивился как все просто оказалось…

П.С.
Я чесно говоря аж прозрел. Запустил прошыватор, нажал кнопку "Program"… Смотрю на лампочки зеленая пустила одну моргулину, потом красная, потом снова зеленая… ну думаю облом… не работает (потому что АВР910 моргал светодиодами по 10минут на етой прошивке… процес был похож на форматирование запоротой дискеты)))) а тут бац и все.

Ладно вставил проц со старой прошивкой. Открыл АВР ОСП2. нажал верифи, и пошел пить кофе. Допил, прихожу… о Класно! 80%, щас реклама закончится и узнаю. спустя пару минут — пишет EQUEL! Офигеть… да не может быть… Протестировал еще на парочке прошывок. Работает на. Если бы не час ночи то наверника заорал бы от радости!

c10wn ты не реально крутой человек)))! Ты мне столько времени секономил. Я жил себе не подозревая даже что процес прошывки может протекать так быстро!
Спасибо тебе БОЛЬШОЕ!

П.П.С
Хотел в приват отправить, но смотрю что ты на мобильном приложении. Решыл не нервировать в такое время ))) (звук сообщения мобильного приложения конечно нечто… жаль нельзя отключить)

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

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