Программирование arduino pro mini через usbasp: Программируем Arduino Pro mini через USBasp – FLProg

Содержание

Arduino mini размеры. Самостоятельная перепрошивка Arduino Pro Mini.

Инструкция

Сначала пара слов о самом программаторе. Купить такой можно за 2 доллара в любом китайском интернет-магазине.
Разъём типа USB-A используется, понятно, для подключения программатора к компьютеру.
ISP-соединитель нужен для подключения к программируемой плате.
Джампер JP1 контролирует напряжение на VCC выводе ISP-коннектора. Оно может быть 3,3 В или 5 В. Если целевое программируемое устройство имеет собственный источник питания, нужно убрать перемычку.
Джампер JP2 используется для перепрошивки самого программатора; в данной статье не рассматривается.
Перемычка JP3 нужна, если тактовая частота целевого устройства ниже 1,5 МГц.
Два светодиода показывают: G — питание подаётся на программатор, R — программатор соединён с целевым устройством.

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


В этом случае скачаем драйвер для программатора с официального сайта http://www.fischl.de/usbasp/. Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.

Воспользуемся макетной платой и соединительными проводами — это будет быстро и надёжно. Соединяем разъём программатора с выводами на Arduino Pro Mini согласно приведённой выше схеме.

Arduino Pro Mini — вид спереди Arduino Pro Mini — вид сзади

Общие сведения

Arduino Pro Mini — это устройство на базе микроконтроллера ATmega328. В его состав входит: 14 цифровых входов/выходов (из них 6 могут использоваться в качестве ШИМ-выходов), 8 аналоговых входов, кварцевый резонатор, кнопка сброса и контактные площадки для впаивания разъемов. Шестиконтактный разъем может служить для питания и взаимодействия с платой через USB посредством FTDI-переходника либо макетной платы Sparkfun.

Arduino Pro Mini предназначен для полустационарного монтажа в различное оборудование или установки. Плата специально поставляется без впаянных разъемов, что позволяет пользователю впаивать провода или использовать необходимые типы разъемов по своему усмотрению. По расположению выводов Arduino Mini Pro совместим Arduino Mini.

Существует две версии Pro Mini: одна работает от 3.3В при частоте 8 МГц, другая — от 5В при 16 МГц.

Arduino Pro Mini разработан и изготовлен фирмой SparkFun Electronics.

Схема и исходный проект

Характеристики

Микроконтроллер ATmega168 или ATmega328
Рабочее напряжение 3.3В или 5В (в зависимости от модели)
Напряжение питания 3.35-12В (для модели 3.3В) или 5 — 12В (для модели 5В)
Цифровые входы/выходы 14 (из них 6 могут использоваться в качестве ШИМ-выходов)
Аналоговые входы 8
Максимальный ток одного вывода 40 мА
Flash-память 16 КБ (из которых 2 КБ используются загрузчиком)
SRAM 1 КБ
EEPROM 512 байт
Тактовая частота 8 МГц (для модели 3.
3В) или 16 МГц (в модели 5В)

Питание

Arduino Pro Mini может быть запитан от различных источников:

  • через макетную плату;
  • через переходник FTDI , подсоединенный к шестиконтактному разъему;
  • от стабилизированного источника питания с напряжением 3.3В или 5В (в зависимости от модели), подключенного к выводу Vcc.

Кроме того, на плате есть встроенный стабилизатор напряжения, благодаря которому допускается подавать на плату напряжение питания величиной до 12В. Если для питания платы используется нестабилизированный источник питания, убедитесь, что он подсоединен к выводу «RAW», а не VCC.

Ниже перечислены выводы питания, расположенные на плате:

  • RAW. Для питания платы от нестабилизированного источника напряжения.
  • VСС. Стабилизированное напряжение 3.3В или 5В.
  • GND. Выводы земли.

Память

Объем флеш-памяти программ микроконтроллера ATmega328 составляет 32 КБ (из которых 2 КБ используются загрузчиком). Микроконтроллер также имеет 1 КБ памяти SRAM и 512 байт EEPROM (из которой можно считывать или записывать информацию с помощью библиотеки EEPROM).

Входы и выходы

Связь

Arduino Pro Mini предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega328 имеется приемопередатчик UART, позволяющий осуществлять последовательную связь посредством цифровых выводов 0 (RX) и 1 (TX). В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные через USB-соединение.

ATmega328 в Arduino Pro Mini выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 ( , ).

Автоматический (программный) сброс

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Pro Mini спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера.

Один из выводов шестиконтактного разъема соединен с выводом RESET микроконтроллера ATmega328 через конденсатор номиналом 100 нФ. При подключении компьютеру этот вывод также связан с одной из линий, участвующих в аппаратном управлении потоком данных, идущих через преобразователь USB-Serial: при использовании кабеля FTDI — с линией RTS, при использовании макетной платы Sparkfun — с линией DTR. Когда на этой линии появляется ноль, вывод RESET, соответственно, также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии RESET.

Однако эта система может приводить и к другим последствиям. При подключении Pro Mini к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой.

После сброса на Pro Mini активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.

Физические характеристики

Габаритные размеры печатной платы Arduino Pro Mini: 1.8 см х 3.3 см.

Arduino Pro Mini вид сверху


Arduino Pro Mini вид снизу

Данная плата предназначена для использования в готовом устройстве. Поэтому у этого микроконтроллера нет встроенной микросхемы для связи по USB-UART. Так же нет и разъемов USB для подключения и прошивки. Это позволяет сильно уменьшить размеры платы, а также ее стоимость. Для подключения к компьютеру и прошивки используется специальный программатор. Существует две версии данной платы: с питанием 3,3 В и частотой 8 МГц и с питанием от 5 В с частотой 16 МГц. В младшей версии этой ардуинки используется чип ATmega168. Этот чип обладает меньшим объемом flash-памяти, энергонезависимой памяти, а так же пониженной тактовой частотой. Так как цена разных версий Arduino Pro Mini практически не отличается мы поговорим о старшей версии с чипом ATmega328 и тактовой частотой 16 МГц.

Arduino Pro Mini 5 В

Эта версия снабжена микроконтроллером ATmega328. В отличии от своего младшего собрата, он имеет вдвое большие объемы энергонезависимой и flash памяти. И может похвастаться тактовой частотой в 16 МГц. Узнать о способах прошивки этого микроконтроллера вы можете в моей статье:

Купить Arduino Pro Mini

  • Качество практически не отличается от оригинальных плат, произведенных в Италии.
  • Цена в разы ниже. Итальянская ардуино про мини стоит около 7$, а в Китае этот микроконтроллер обойдется в 1,5$
  • В российских магазинах наценка составляет 100-500%. При этом очень часто под видом оригинальной платы могут продавать китайские, да еще и очень низкого качества.
  • На алиэкспрессе вы легко можете найти надежных продавцов с хорошими отзывами.
  • Вы можете воспользоваться скидочными купонами и кэшбэк сервисами.

Характеристики

  • Микроконтроллер: ATmega168 или ATmega328
  • Предельное напряжение питания: 3,3-12 В и 5-12 В
  • Цифровых вводов/выводов: 14
  • ШИМ: 6 цифровых пинов могут быть использованы как выводы ШИМ
  • Аналоговые выводы: 8
  • Максимальная сила тока: 40 mAh с одного вывода и 400 mAh со всех выводов.
  • Flash память: 16 кб
  • SRAM: 1 кб
  • EEPROM: 512 байт
  • Тактовая частота: 8 МГц и 16 МГц

Подключение питания к Arduino Pro Mini

Этот микроконтроллер можно питать тремя способами:

  • Переходником FTDI, подключенному к 6 соответствующим пинам.
  • Подавая стабилизированное напряжение на вывод Vcc. 3,3 В или 5 В в зависимости от версии
  • Подавая напряжение на вывод RAW. 3,3-12 В или 5-12 В в зависимости от версии


Как уже было написано выше, плата имеет 14 цифровых пинов. На плате они помечены порядковым номером. Они могут быть как входом так и выходом. Рабочее напряжение этих пинов составляет 3,3 В или 5 В.

Аналоговые пины на плате помечены ведущей «A». Эти пины являются входами и не имеют подтягивающих резисторов. Они измеряют поступающее на них напряжение и возвращают значение от 0 до 1024 при использовании функции analogRead(). Эти пины измеряют напряжение с точностью до 0,005 В.

Широтно-импульсная модуляция (ШИМ) Arduino Pro Mini

ШИМ выходы у этой платы никак не помечены. Нужно просто запомнить номера цифровых выводов, которые подключены к широтно-импульсному генератору. У Arduino Pro Mini есть 6 выводов ШИМ, это пины 3, 5, 6, 9, 10 и 11. Для использования ШИМ у Arduino есть специальная функция .

Другие пины:

  • 0(Rx) и 1(Tx) используются для передачи данных по последовательному интерфейсу.
  • Выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) рассчитаны для связи по интерфейсу SPI.
  • Так же на выводе D13 имеется встроенный в плату светодиод.
  • А4 (SDA) и А5 (SCL) могут использоваться для связи с другими устройствами по шине I2C. Подробнее про этот интерфейс вы можете почитать на википедии . В среде разработке Arduino IDE есть встроенная библиотека «wire.h» для более легкой работы с I2C.

Физические характеристики

Arduino Pro Mini имеет следующие размеры: длина 33 мм и ширина 18 мм, а весит всего около 10 грамм. Расстояние между выводами равняется 2,54 мм.


После приобретения платы Ардуино Про Мини некоторые пользователи сталкиваются с проблемой прошивки, так как, чтобы прошить эту плату , необходимо купить ещё специальный программатор. В связи с этим, вы заинтересуетесь, как можно прошить плату без программатора? К счастью, сделать это достаточно просто. В этой статье подробно рассмотрим, как прошить или перепрошить Arduino Pro Mini. Давайте разбираться. Поехали!

Для перепрошивки вам понадобится Ардуино Uno. Первым делом нужно соединить GND с землёй, UCC — с плюсом, RXI и NX0 с такими же входами на Uno, а GRN — с reset. Лучше всего будет подать трёхвольтное напряжение. При подаче питания на плате загорится красный индикатор. Не забудьте предварительно достать из Uno контроллер ATMEGA.

Теперь необходимо подключить плату к компьютеру. Затем запустите на своём ПК Sketch. Находясь в главном окне утилиты, откройте меню «Файл» и нажмите на пункт «Примеры», далее наведите курсор на раздел «Basics» и в появившемся списке нажмите «Blink». После этого перейдите к верхней панели и откройте меню «Сервис». Выберите в нём пункт «Плата». В списке плат необходимо будет отметить строку «Arduino Pro Mini (5V, 16MHz) w/ATmega328» вместо той, что отмечена по умолчанию. Также не забудьте указать в настройках необходимый com-порт.


Затем нажмите кнопку «Загрузить» в программе. Как только в нижней строке появится слово «загрузка», нажмите на плате «reset». На экране вы увидите сообщение о том, что загрузка завершена. Готово. Перепрошивка успешно выполнена.

Теперь рассмотрим, как сделать то же самое, только через Nano. Откройте Sketch и перейдите в меню «Файл», выберите раздел «Образцы». В появившемся списке кликните по «ArduinoISP». Затем нужно зайти в «Инструменты», выбрать пункт «Плата» и отметить «Arduino Nano».

Выполните прошивку Nano с помощью скетча ArduinoISP. Проверьте скорость порта в функции setup. Именно такой будет скорость во время прошивки Pro Mini. В стандартном Sketch скорость равна 19200.

Подготовив Nano, приступайте к сборке breadboard, чтобы перепрошить Про Мини. Подключите +5V к Vcc, GND соедините с таким же входом, D10 с RST, а D11, D12 и D13 с аналогичными входами на Pro Mini.


Теперь необходимо подключить Nano к ПК. Прежде чем приступить к перепрошивке, убедитесь, что у вас используются равные скорости порта, ориентируясь на скорость из Sketch. Отыщите текстовый файл «boards» в папке «arduino». Открыв его, найдите строку:

pro5v328.name=Arduino Pro Mini (5V, 16 MHz) w/ ATmega328

Если вы используете другую версию , выберите соответствующую. Проверьте заданную скорость. Также следует проверить настройки в текстовом файле «programmers».

Если с настройками всё в порядке, запустите/перезапустите IDE. После этого перейдите в меню «Инструменты» и укажите плату, которую нужно прошить вместе с типом программатора «Arduino as ISP».

На следующем шаге нужно открыть раздел «Файл» и кликнуть по пункту «Вгрузить через программатор». Так же, как и в вышерассмотренном случае, необходимо нажать на плате кнопку «reset», чтобы успешно выполнить перепрошивку. Всё. Готово.

Теперь вы будете знать, как можно прошить или перепрошить Ардуино Pro Mini без специального программатора. Пишите в комментариях была ли полезной для вас эта статья, рассказывайте другим пользователям о своём опыте прошивки Ардуино, и задавайте любые интересующие вопросы по рассмотренной теме.

Arduino Pro mini – компактная версия платформы Arduino, предназначенная для построения всевозможных проектов, имеющих не большие размеры. Платформа на 100% совместима с другими платформами Arduino, например такой как Arduino UNO, но намного компактнее её. В данной статье я сделаю обзор на китайский аналог Arduino Pro mini, расскажу чем она отличается от оригинала, чем данная плата отличается от других плат платформы Arduino, а так же расскажу как подключить её к компьютеру для заливки в неё скетч. В завершении убедимся в работоспособности платы, на примере скетча «blink».

Вот этот аналог Arduino Pro mini я купил на Aliexpress за $1.30, в то время как оригинальная плата на сайте производителя стоит €13. Разница в цене — это первое главное отличие китайского аналога от оригинала.


Плата пришла в антистатическом пакете. В комплекте так же находились контактные площадки.

Для сравнения, верхняя плата — оригинальная Arduino Pro mini, ниже, мой китайский аналог. По количеству и расположению контактов, плата идентична оригиналу, кроме контактов А4, А5, А6 и А7. На оригинальной плате эти контакты расположены в центре, на аналоге они находятся слева.

Для того что бы иметь визуальное представление о размерах платы, приведу её рядом со своим китайским аналогом Arduino UNO. Pro mini удалось уменьшить в размерах за счёт удаления USB разъёма, схемы согласования платы с USB портом, также был удалён разъём питания. Китайский аналог на 100% совместим со всеми модулями, драйверами, датчиками, которые работают с оригинальной версией.

Оригинальная современная плата Arduino Pro mini построена на базе микроконтроллера ATmega328 , на том же самом что и Arduino UNO . Более ранние модели этой платы строились на микроконтроллере ATmega168 .

Китайские же аналоги Arduino Pro mini на данный момент строятся как на ATmega328 , так и на ATmega168 . В этом второе отличие оригинала от аналога. Плата на ATmega168 будет стоить дешевле, чем на ATmega328. Главное же отличие этих контроллеров в том, что ATmega328 содержит на борту в два раза больше памяти, чем ATmega168.

Отличия микроконтроллеров

ATmega168

ATmega328

16 Kбайт

Но это не значит, что на ATmega168 не получится построить проект, который разрабатывался на плате с ATmega328, ведь 16 Кбайт будет вполне достаточно для многих скетчей. Всё же, если вам необходим двойной объём памяти, изучайте описание платы перед покупкой. При покупке своего китайского аналога, я выбрал плату за $1.30 с ATmega168, вместо платы с ATmega328 за $1.93. Как видно, здесь тоже можем сэкономить на покупке.

Оригинальная плата Pro mini производится с двумя вариантами питания: на 5 и 3,3 вольта. У версии, работающей от 3,3 вольта, микроконтроллер работает на частоте 8 МГц, у 5-ти вольтовой версии — на частоте 16 МГц. Китайские аналоги так же производятся в 2-х вариантах. Моя плата работает от 5 вольт.
Визуально частоту работы контроллера можно определить по установленному на плате кварцу, если он в большом корпусе, на нём отчётливо можно увидеть частоту, на которой он работает: 8 или 16 МГц.


Фрагменты плат с кварцами, работающими на разной частоте.

Про питание Arduino Pro mini.


Для питания платы предназначены выводы GND, VCC и RAW.
GND — это минус питания (земля).
VCC – используется для подачи питания 3,3 или 5 вольт, в зависимости от версии платы. На этот разъём подаётся строго то напряжение, на которое рассчитана плата. Напряжение с этого контакта идёт напрямую на микроконтроллер, если оно будет выше необходимого, последний может выйти со строя.
Если питать плату собираетесь большим напряжением, тогда «+» питания следует подключать к разъёму RAW . На этот разъём можно подавать до 12 в, не зависимо, на какое напряжения рассчитана плата. Напряжение с этого контакта подаётся на стабилизатор напряжения, который преобразует его до необходимого значения, а уже затем подаётся на контролер.

Если так получилось что вы купили плату и не знаете на какое напряжение она рассчитана, подайте на разъём RAW 5 вольт и измерьте напряжение на разъёме VCC. Если плата рассчитана на 3,3 вольта, то соответствующее напряжение будет и на VCC, если будет на VCC 5 вольт, значит плата 5-ти вольтовая.

Цифровые и аналоговые выходы Pro mini соответствуют количеству выходов как и у платы UNO: 14 цифровых и 6 аналоговых. Контакты А4 (SDA) и А5 (SCL) используются для подключения различных устройств по шине I2C.

Про прошивку Arduino Pro mini.

Став одной из самых маленьких плат платформы Arduino, плата Pro mini обрела недостаток — нельзя прошить плату без сторонней помощи. Расскажу про все возможные способы заливки скетчей в Pro mini.

Прошивка Arduino Pro mini с помощью платы Arduino UNO.

Это не самый простой способ, поскольку не у каждого имеется плата UNO и покупать её специально для прошивки плат Pro mini не целесообразно. Но поскольку у меня имеется китайский аналог UNO , я начну с этого способа. Для реализации этого способа, должен быть установлен драйвер на плату UNO и определён номер COM — порта, к которому эта плата подключена. Как это сделать, описано в статье про китайский аналог Arduino UNO.

Соединяем платы как на картинке. Выводы GND , TX и RX соединяем с аналогичными. Вывод «VCC » на плате Pro mini соединяем с выводом «5V » или «3V3 » на плате UNO. Если у вас 5 вольтовая версия Pro mini, то соединяете с выводом «5V», как в моём варианте. Если версия 3-х вольтовая, подключаете к «3V3» на плате UNO. Вывод RESET на плате UNO подключаем к выводу DTR на плате Pro mini. На оригинальной плате вывод DTR обозначен как GRN , в общем это одно и то же.


Когда всё подключено, запускаем Arduino IDE .


Выбираем плату в которую нужно зашить скетч: «Инструменты » — «Плата: » и выбираем свою плату, в данном случае это « Arduino Pro or Pro Mini ».


Поскольку платы Pro Mini могут использовать различные микроконтроллеры (ATmega168 или ATmega328), а так же различное напряжение питания (3,3 v или 5v ), выбираем свою конфигурацию: «Инструменты » — «Процессор: » в данном примере выбираю «ATmega168 (5 V, 16 M H z) ».


Выбираем порт, к которому подключена плата UNO: «Инструменты » — «Порт: » в моём случае это « COM7 ».


Попробуем залить первый скетч и убедится в работоспособности платы. Выбираем скетч « Blink », смысл которого — мигать встроенным в плату светодиодом: «Файл » — «Образцы » — «01. Basics » — « Blink ».

С помощью кнопок «Проверить » и «Вгрузить » проверяется скетч на ошибки и загружается в плату. Если нет ошибок, синий светодиод начнём мигать на плате Pro Mini.


Можно поиграться значениями в скетче и изменить время горения светодиода и время погашенного светодиода, вновь залить скетч и увидеть, что светодиод будет мигать по-другому.

Прошивка Arduino Pro mini с помощью переходника USB to TTL.

Об одном из таких переходников на чипе PL2303 я как то уже рассказывал , теперь пришло время его испытать на практике. Существует две версии этого переходника, один без контакта GRN (DTR), как у меня, второй с данным контактом. Те что с контактом, стоят как минимум в два раза дороже тех, что без контакта.


Если будете использовать переходник без контакта GRN (DTR), подключаете его к Pro mini как на картинке.


Если у вас будет 3-х вольтовый вариант Pro mini, то контакт VCC платы, нужно соединить с контактом 3V3 USB переходника.

Когда всё подключено, запускаем Arduino IDE. Выбираем версию платы, процессор и порт, выбираем скетч «Blink», всё так же, как в приведённом выше примере с UNO.

Для заливки скетча необходимо:
1. Нажать на кнопку «Вгрузить ».
2. Начнётся процесс компиляции скетча, о чём можно понять по надписи «Компиляция скетча… ».
3. Как только данная надпись сменится на «Вгружаем… ».
4. Кратковременно нажимаем на плате Pro mini кнопку RESET .
5. Скетч зальётся в плату, об успешном окончании можно будем наблюдать за надписью «Взрузили » и по мигающему светодиоду на плате.

Если у вас в руках окажется переходника USB to TTL, с контактом DTR (он же GRN, RESET) соедините его с соответствующим контактом RESET на плате Pro mini. В таком случае, при заливки скетча, кнопку RESET нажимать не придётся, плата сама сделает сброс.


Данный переходник так же как и на PL2303 позволяет прошивать плату Arduino. Схема подключения следующая:

Существуют так же другие USB переходники для прошивки Arduino Pro mini, например на микросхеме FT232, но ввиду того что этот переходник стоит дороже, я его не беру во внимание.

Прошивка Arduino Pro mini через COM — порт.

Напрямую прошить плату через COM – порт не получится, поскольку у COM – порта и Pro mini разные логические уровни. Для их согласования нужно применить переходник на микросхеме MAX232. Сама микросхема не дорогая, но не знаю, стоит ли заморачиваться для прошивки Pro mini сборкой такого переходника, если по цене выйдет не дешевле, чем купить USB переходник на PL2303 .


В любом случае представляю схему.

Что бы убедится в работоспособности этого метода, пришлось самому собрать эту схему на макетной плате. Плата в процессе…

Описание платы arduino pro mini. Arduino Pro Mini — распиновка и характеристики. Схема и исходный проект.

В жизни начинающего ардуинщика рано или поздно наступает момент, когда хочется сэкономить на размере своего изделия, не жертвуя при этом функциональностью. И тогда Arduino Pro Mini — отличное для этого решение! За счёт того, что у этой платы отсутствует встроенный USB-разъём, она в полтора раза меньше Arduini Nano. Но для того, чтобы её запрограммировать, придётся приобрести дополнительный — внешний — USB-программатор. О том, как «залить» написанную программу в память микроконтроллера и заставить Arduino Pro Mini работать, и пойдёт речь в этой статье.

В первой строке элементов навигации нас будет интересовать только всплывающее меню «Инструменты», в котором будут найдены настройки подключения и программирования для платы. Мы опишем его позже. В следующей строке мы найдем несколько значков. После нажатия программа проверяет и проверяет код. Если он обнаружит ошибку, он выделит ее в синтаксисе. Кроме того, мы находим значок правой стрелки — Загрузить. Другой значок с переводом новой страницы значок, который создает новый файл после нажатия. Следующая стрелка вверх — Открыть — открывает меню для открытия программ.

Вам понадобится

  • Arduino Pro Mini;
  • USBasp-программатор;
  • компьютер;
  • соединительные провода.

1

Программатор для Arduino

Сначала пара слов о самом программаторе. Купить такой можно за 2 доллара в любом китайском интернет-магазине.

  • Разъём типа USB-A используется, понятно, для подключения программатора к компьютеру.
  • ISP-соединитель нужен для подключения к программируемой плате.
  • Джампер JP1 контролирует напряжение на выводе VCC ISP-коннектора. Оно может быть 3,3 В или 5 В. Если целевое программируемое устройство имеет собственный источник питания, нужно убрать перемычку.
  • Джампер JP2 используется для перепрошивки самого программатора; в данной статье этот вопрос не рассматривается.
  • Перемычка JP3 нужна, если тактовая частота целевого устройства ниже 1,5 МГц.
  • Светодиоды показывают: G — питание подаётся на программатор, R — программатор соединён с целевым устройством.

2

Установка драйвера для программатора

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

Стрелка вниз — Сохранить — сохраняет текущую программу. Это вызовет последовательный монитор, о котором мы поговорим в следующий раз. Большое количество пробелов используется для написания кода, а нижнее пространство ниже отображает информацию и операторы ошибок из среды выполнения. Однако самый простой способ — использовать библиотеку проводки. Из-за своей сложности он иногда упоминается как отдельный язык программирования. В редакторе появляется следующий код. Мы можем видеть две вещи в примере кода.

Первый — наличие двух блоков программы. Жирные скобки включают код, который выполняется только один раз в начале программы. В их отсутствие программа была бы ошибкой. Мы также должны заметить двойную косую черту. Это говорит нам о комментариях в программе. Часть кода или текста, написанного за косой чертой, будет проигнорирована программой. Он используется, когда мы хотим написать примечание к части кода или если мы хотим некоторое время отказаться от части кода.

В этом случае скачаем драйвер для программатора с официального сайта . Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.

Мы можем встретить два типа комментариев. Самая яркая особенность — белое окно с текстовым редактором для написания кода. Часто используемым помощником является также окно для отображения сообщений из последовательной линии. Это написано в текстовом редакторе среды разработки. Текстовый редактор занимает основную часть экрана.

Поддерживаемые языки

Внизу вы найдете консоль, содержащую отчеты о деятельности и запуск программы. В правом нижнем углу вы найдете текст с информацией о текущей выбранной плате и последовательном порту, к которому он присоединен. Затем выберите «Редактор языков», чтобы найти раскрывающийся список поддерживаемых языков.

3

Схема подключения Arduino к программатору

Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.

Arduino Pro Mini — вид спереди Arduino Pro Mini — вид сзади

Общие сведения

Arduino Pro Mini — это устройство на базе микроконтроллера ATmega328. В его состав входит: 14 цифровых входов/выходов (из них 6 могут использоваться в качестве ШИМ-выходов), 8 аналоговых входов, кварцевый резонатор, кнопка сброса и контактные площадки для впаивания разъемов. Шестиконтактный разъем может служить для питания и взаимодействия с платой через USB посредством FTDI-переходника либо макетной платы Sparkfun.

Вы можете вернуться к умолчанию, выбрав «Системное значение» в раскрывающемся списке. Если вы измените настройки в операционной системе, изменение вступит в силу только после перезапуска программного обеспечения. Выбор досок из меню «Платы» имеет двоякие последствия: он устанавливает параметры, необходимые для компиляции эскизов, а также определяет правильную настройку команды «Записать загрузчик».

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

Arduino Pro Mini предназначен для полустационарного монтажа в различное оборудование или установки. Плата специально поставляется без впаянных разъемов, что позволяет пользователю впаивать провода или использовать необходимые типы разъемов по своему усмотрению. По расположению выводов Arduino Mini Pro совместим Arduino Mini.

Существует две версии Pro Mini: одна работает от 3.3В при частоте 8 МГц, другая — от 5В при 16 МГц.

Сгоревший загрузчик содержит коды для инициализации модуля на плате. После того, как питание подается на процессор, пришло время запрограммировать последовательный порт. Если нет, запустите программу в одном образце. С моим преобразователем обе стороны заземлены заземленными. Это видно на фиг. 3 на пятом штифте, который частично скрыт под конденсатором. Вот почему мне пришлось повторно просверлить отверстия после сверления с обеих сторон.

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

Arduino Pro Mini разработан и изготовлен фирмой SparkFun Electronics.

Схема и исходный проект

Характеристики

Микроконтроллер ATmega168 или ATmega328
Рабочее напряжение 3.3В или 5В (в зависимости от модели)
Напряжение питания 3. 35-12В (для модели 3.3В) или 5 — 12В (для модели 5В)
Цифровые входы/выходы 14 (из них 6 могут использоваться в качестве ШИМ-выходов)
Аналоговые входы 8
Максимальный ток одного вывода 40 мА
Flash-память 16 КБ (из которых 2 КБ используются загрузчиком)
SRAM 1 КБ
EEPROM 512 байт
Тактовая частота 8 МГц (для модели 3.3В) или 16 МГц (в модели 5В)

Питание

Arduino Pro Mini может быть запитан от различных источников:

У вас уже есть отлаженный проект и нужно записать его на чистый процессор? Наивысшее напряжение автоматически выбирается в качестве источника питания. Кроме того, некоторые контакты имеют специальные функции. Опорное напряжение для аналоговых входов. В справочнике и учебном пособии. Благодаря своей популярности и открытости многие клоны и совместимые продукты сбылись.

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

  • через макетную плату;
  • через переходник FTDI , подсоединенный к шестиконтактному разъему;
  • от стабилизированного источника питания с напряжением 3.3В или 5В (в зависимости от модели), подключенного к выводу Vcc.

Кроме того, на плате есть встроенный стабилизатор напряжения, благодаря которому допускается подавать на плату напряжение питания величиной до 12В. Если для питания платы используется нестабилизированный источник питания, убедитесь, что он подсоединен к выводу «RAW», а не VCC.

Эти платы также обычно используют другие типы процессоров. Программисту не нужно иметь дело с конкретными деталями реализации конкретного оборудования, но использует библиотеки более высокого уровня. Скомпилированный код будет загружен на ваш компьютер и затем загружен на плату разработки, которая будет работать в качестве следующего диска при подключении к вашему компьютеру. Транспорт в Чешскую Республику стоит около 130 крон. Он предназначен для людей, которые не хотят изучать детали процессоров и как их программировать.

Примеры программ являются частью среды разработки. Вы можете использовать кнопку «Проверить», чтобы перевести программу. Откройте меню «Проект» — «Добавить библиотеку» — «Добавить». С этого момента библиотека может использоваться в проектах. Но что, если наша гениальная идея окажется действительно полезной? Он имеет компактный минималистский дизайн, который позволяет легко использовать его в небольших проектах. На этом этапе мы переходим к существу дела. Вопреки внешнему виду решение очень простое и универсальное.

Ниже перечислены выводы питания, расположенные на плате:

  • RAW. Для питания платы от нестабилизированного источника напряжения.
  • VСС. Стабилизированное напряжение 3.3В или 5В.
  • GND. Выводы земли.

Память

Объем флеш-памяти программ микроконтроллера ATmega328 составляет 32 КБ (из которых 2 КБ используются загрузчиком). Микроконтроллер также имеет 1 КБ памяти SRAM и 512 байт EEPROM (из которой можно считывать или записывать информацию с помощью библиотеки EEPROM).

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

Автоматический сброс

Он поставляется в двух версиях. Один работает при пониженном напряжении 3 В, а при более низких тактовых частотах меньше потребляет энергию. Если размер пластины настолько мал, что отсутствует? Фактическое соединение можно посмотреть на этом рисунке.


В случае мини-плиток, которые из-за их небольшого размера часто находятся в труднодоступных местах, это решение имеет несомненное преимущество перед ручным сбросом.

Входы и выходы

Связь

Arduino Pro Mini предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega328 имеется приемопередатчик UART, позволяющий осуществлять последовательную связь посредством цифровых выводов 0 (RX) и 1 (TX). В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные через USB-соединение.


Поэтому эти субтитры предназначены для удобства ориентации. Если вы действительно хотите это сделать, используйте логический сдвиг уровня. И технические прототипы работают! У нас есть еще одна неделя тестирования, и мы должны иметь возможность выпускать на производство.

Меньше энергии означает увеличение срока службы батареи и меньшие и более дешевые солнечные энергетические системы. Проблема в том, что иногда вы не хотите прокладывать провод от метеостанции до датчика ветра и дождя. Имел ли он среднюю мощность менее 5 мА, что делало солнечную энергию легкой для добавления. В ближайшие несколько недель. Удивительно для небольшого солнечного устройства! Просто для быстрого просмотра более 100 досок. Вы не можете подключить его обратно. Если вы вставите разъем в неправильный разъем, он просто не работает.

ATmega328 в Arduino Pro Mini выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 ( , ).

Автоматический (программный) сброс

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Pro Mini спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов шестиконтактного разъема соединен с выводом RESET микроконтроллера ATmega328 через конденсатор номиналом 100 нФ. При подключении компьютеру этот вывод также связан с одной из линий, участвующих в аппаратном управлении потоком данных, идущих через преобразователь USB-Serial: при использовании кабеля FTDI — с линией RTS, при использовании макетной платы Sparkfun — с линией DTR. Когда на этой линии появляется ноль, вывод RESET, соответственно, также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии RESET.

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

Почувствуем себя программистами

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

Однако эта система может приводить и к другим последствиям. При подключении Pro Mini к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой. После сброса на Pro Mini активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.

Физические характеристики

Габаритные размеры печатной платы Arduino Pro Mini: 1.8 см х 3.3 см.

ATMega328 в Arduino без кварца

На большинстве плат ARDUINO с микроконтроллером ATMega238P установлен кварцевый резонатор 16 MHz. Микроконтроллер ATMega238P может работать на любой частоте вплоть до 16 МГц, в том числе и с внутренним RC-генератором на частоте 8 MHz.

Микроконтроллер ATMega238P полноценно может быть запрограммирован в среде Arduino IDE будучи настроенным на частоту 8 МГц с внутренним RC-генератором.

Приведём пример превращения Arduino UNO с микроконтроллером ATMega238P работающем на частоте 16 МГц в Arduino с микроконтроллером ATMega238P работающем на частоте 8 МГц без кварцевого резонатора. Наметим план работ:

  1. Прописать в файле конфигурации Arduino IDE (boards.txt) параметры платы Arduino с ATMega238P на 8 МГц.
  2. Подключить к плате Arduino UNO программатор USBasp.
  3. Записать в плату Arduino UNO загрузчик, способный работать на микроконтроллере с частотой 8 МГц.
  4. Проверить работоспособность изделия (Arduino с ATMega238P на 8 МГц).

Файл boards.txt можно найти в папке /arduino-1.8.12/hardware/arduino/avr вашего дистрибутива Arduino IDE. Допишем в этот файл следующие строки:

##############################################################

dior.name=Arduino 328P 8MHz int

dior.upload.tool=avrdude
dior.upload.protocol=arduino
dior.upload.maximum_size=30720
dior.upload.maximum_data_size=2048
dior.upload.speed=57600

dior.bootloader.tool=avrdude
dior.bootloader.low_fuses=0xE2
dior.bootloader.high_fuses=0xDA
dior.bootloader.extended_fuses=0xFD
dior.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
dior.bootloader.unlock_bits=0x3F
dior.bootloader.lock_bits=0x0F

dior.build.mcu=atmega328p
dior.build. f_cpu=8000000L
dior.build.board=AVR_FIO
dior.build.core=arduino
dior.build.variant=eightanaloginputs

Подключим к плате Arduino пока ещё UNO программатор USBasp. На плате Arduino UNO есть разъём ICSP 6 pin а на программаторе USBasp разъём 10 pin. Если нет переходника, подключаем по схеме:

Запускаем Arduino IDE и в меню Инструменты / Плата выбираем плату «Arduino 328P 8MHz int». В меню Инструменты / Программатор выбираем «USBasp». Записываем загрузчик — меню Инструменты / Записать загрузчик. Одновременно с записью загрузчика в микроконтроллер будут записаны фьюзы L:0xE2 H:0xDA E:0xFD

Теперь микроконтроллер может работать без платы Ардуино, а программировать его можно всё так же на плате Ардуино в программе Ардуино.

Arduino — примеры, эксперименты: 2016

   Ранее я писал, что большую и дорогую Arduino Uno можно заменить на малюсенький и дешёвый микрочип Atmega328 или даже Atmega8








   
      Я покажу как прямо из среды программирования Arduino прошить микроконтроллеры Atmega328 и Atmega8. Первый у меня имеется в DIP корпусе, а второй в TQFP.

    Для программирования я использую программатор USBasp. Купил его на ebay.com, стоит он в пределах 150р.



  Первая проблема с которой столкнутся пользователи Windows8 и Windows10 — установка драйвера для USBasp.




     Проблема в том, что эти операционные системы просят, что бы у драйвера была какая-то цифровая подпись, а у драйверов для USBasp на сегодняшний день её нет. Проблема решается отключением проверки этих цифровых подписей. Для этого перезагружаем компьютер с нажатой клавишей Shift. Появляется экран, на котором выбираем «Диагностика»

Далее — «Дополнительные параметры»



Далее — «Параметры загрузки»



Далее — «Перезагрузить»



На следующем экране появляется список действий, которые мы можем сделать. Выбираем на нём «Не проверять цифровые подписи драйверов», жмём цифру 7

   Подключим наш программатор к микрочипу. Для удобства я купил макетную плату и соединительные проводки. Соединяем микрочип с программатором согласно схеме

У Atmega8 в TQFP корпусе выводы располагаются следующим образом

К 9 и 10 выводу микроконтроллера присоединяем кварцевый резонатор.



   Здесь стоит пояснить значение этого резонатора.Скорее всего в купленном вами микроконтроллере выставлены настройки (fuses) на работу от внешнего тактового генератора, т.е. от кварца. Поэтому, что бы его прошить, нужно что бы он был подключён к этому самому кварцу. Для перепрошивки кварц можно взять любой попавшийся вам под руку. Я когда впервые перепрошивал просто выпаял его из какого-то сломанного устройства, вот он маленький на фото.

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

    Для того, что бы можно было прошивать микрочип прямо из среды разработки Arduino, нужно залить на чип ардуиновский загрузчик. Для этого воспользуемся программой avrdude и онлайн конструктором загрузчиков для ардуино. На странице онлайн конструктора загрузчиков переходим в самый низ и видим конструктор

1. Выбираем «Внутренний генератор» если не хотим использовать кварцевый резонатор, либо выбираем «Внешний генератор» если хотим увеличить скорость работы чипа.

2. Выбираем модель микроконтроллера (в нашем случаем Atmega328)

3. Нажимаем «Создать HEX»

Появляется такое окно:

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

      Ниже мы видим блок файла boards.txt для Arduino IDE. Я долго пытался подключить этот блок, что бы в среде ардуино появился выбор платы, но мне это почему-то не удалось, в итоге обошёлся без этого.

     Ещё ниже мы видим подсказку как залить загрузчик через программу avrdude и программатор USBasp. Я делаю следующим образом:

-Подключаю программатор к компьютеру через USB.

-Копирую HEX файл в папку avrdude

-Создаю bat файл в папке avrdude и копирую в bat эту строку

avrdude -c usbasp -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m

@echo This batch file

@pause

-Запускаю bat файл. Если лень создавать bat файл, можете скачать его здесь.

Если всё сделано правильно, вы увидите что-то подобное

   Это значит, что всё прошло хорошо и на наш микроконтроллер залился загрузчик ардуино. Теперь мы сможем прошивать его прямо из среды программирования Arduino.

   Если вы где-то накосячили и что-то сделали не правильно, можете увидеть такое сообщение:

    Тут могут быть разные причины:

-Возможно вы не правильно соединили программатор с микрочипом. Проверьте соединения.

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

-И третий вариант о котором я не сказал, но с которым тоже столкнулся, когда прошивал Atmega8. На каком-то форуме мне подсказали, что микрочип работает на пониженной частоте и чтобы прошить его, нужно на программаторе замкнуть перемычку JP3. Что собственно мне и помогло.

   Если проблем у вас не возникло и загрузчик Arduino успешно записался на чип, то переходим к прошивке чипа через среду программирования Arduino. 
   Во-первых, если вы в онлайн конструкторе загрузчика выбирали  «Внутренний генератор», то кварцевый резонатор можно убрать из схемы.

   Откроем среду разработки Arduino и запустим классический пример моргания светодиодом:



     Видим, что в примере указан цифровой выход 13. На микрочипе он соответствует ножке 19

    Т.к. этот вывод у нас сейчас подключен к программатору под вывод SCK, то изменим в программе 13 вывод на 5.

И подключим к нему светодиод.

Выбираем в Инструментах плату, чип и программатор

































Нажимаем Скетч — загрузить через программатор.



    Программа скомпилируется и загрузится на наш микроконтроллер. Светодиод замигает.

    С какой задержкой будет мигать светодиод если в программе указано 1 секунда? Зависит от того использовали ли вы внутренний тактовый генератор или внешний. Если внутренний, а частота его 8MHz, то программа будет работать в 2 раза медленней, т.к. в Arduino UNO стоит кварц на 16MHz. 

    Если вы использовали внешний кварц, то задержка моргания светодиодом будет зависить от частоты вашего кварца. При частоте 16MHz светодиод будет моргать через 1 секунду как и полагается по программе.

    Убедимся, что микроконтроллер прошит и работает самостоятельно. Отключим его от программатора и подключим к нему питание 5 вольт. Увидим, что светодиод моргает, программа, залитая в чип, работает!

Usbasp firmware using arduino nano

I’ve got USBASP with Atmega8 so I will use usbasp. atmega8.2011-05-28.hex and Arduino UNO R3 as ISP to flash it. First open ArduinoISP example in Arduino IDE 1.6.8 and upload the sketch (CTRL+U). Disconnect Arduino. Option 1 is the easiest, and you simply upload with the USB cable, directly from the Arduino IDE. Options 2 and 3 is where you would require an In-circuit Serial Programmer (ISP). Such as a USBasp: USBasp — USB programmer for Atmel AVR controllers. or you can use another Arduino, see Arduino as ISP and Arduino Bootloaders. Fix your new microcontroller (Atmega 328 for Arduino UNO) in your Arduino Board. Open ArduinoIDE. Select your Board:Arduino UNO in this case.You can upload Bootloader in all type of Arduino board using USBASP programmer. Select Programmer: Start uploading by clicking on Burn Bootloader. Your new Arduino is ready to use. USBAsp AVR Arduino Programmer Drivers There are a few variants of the USBAsp, mostly they work the same and need the same drivers. This guide is for the ones that look like this, but as I say mostly they work the same so try it anyway. Uploading Sketch to Arduino Pro Mini Using UsbASP: In this bilingual tutorial (English and Indonesian, Indonesian version below separator line with italic style), we will learn how to upload sketch («sketch» is term for program code written for Arduino) to Arduino Pro Mini device using popular usb.. The only challenge I am facing is that if there are 100 such devices and I need to update the firmware, using the remote server (or any other suitable mechanism), how should I proceed with it. I have been through many posts that suggest using another Arduino as ISP, this could be my last approach (as it would increase the final cost of product). Introduction : Robo India USBASP Programmer. USBasp is a USB in-circuit programmer for Atmel AVR controllers. It simply consists of an ATMega8 and a couple of passive components. The programmer uses a firmware-only USB driver, no special USB controller is needed, and that makes it low cost USB programmer. Important features are: Jan 13, 2019 · how to upload firmware blue pill board with correct pullup at USB D+ line If you have fixed the pullup at D+ line, use firmware/fastusbasp. bin The pre-compiled binary is at firmware/fastusbasp.bin . Mar 08, 2017 · Generally, there are two methods to load the program into Arduino: 1. USB/Serial Communication method 2. ISP method The first method is the most common method, which implemented using USB-to-serial adapter chip/converter. Jun 23, 2013 · In this article we will see how to program Arduino boards using AVRDude. Create command-line parameter for AVRdude. avrdude is a command-line program, we need to pass correct command-line arguments to program the Arduino. How to Update the Firmware on a USBasp V2.0 . Posted:. 2009 feeling firmware. If it were running Arduino I might take a stab at it but I don’t think it is. It is. I am unable to upload sketches to my Arduino Uno board using the upload option in the IDE. I have done quite a few tests to find the reason but everything seems to be working fine when tested separately. I found that I can program the ATMega328 board when placed on a breadboard using an USBASP progammer and avrdude. USBASP is probably the cheapest programmer that can be used to program an Arduino and eliminate the need for a bootloader which occupies 2KB in the on-chip flash. To program an Arduino Uno with a 6-pin ISP connector, the tricky thing is to convert USBASP’s 10-pin connector to 6-pin ISP connector. Usbasp firmware using arduino nano Nov 18, 2018 · To flash Arduino Board or any AVR Boards using the ISP interface, USBasp is the cheap and best option. It supports a wide range of AVR Microcontrollers and easy to use. Using AVR USBasp for programming Arduino Board will give you more Flash memory space than using the Serial USB programming. How to Update the Firmware on a Cheap USBasp-Clone: This is a small guide to flashing new firmware onto a USBasp-clone like mine. This guide is specifically written for the USBasp-clone seen in the pictures, however it should still work with others. The wiring is shown on step 5, there is a TL;DR o.. Programming Arduino Pro Mini with USBasp V2.0. By Andrew Berezovskyi. UPD 2016-05-14: Arduino Nano with Ch440 ships from Aliexpress for less than $2 – I recommend you buy it instead (unless you know what you’re doing). Jun 18, 2013 · My order of two Arduino Nano-compatible v3.0 from eBay (shipped from China) just arrived. Also bought the USBASP USBISP AVR Programmer from eBay (about $3.0, from China too, see the picture on the left). Dec 19, 2011 · Therefore, there is no need to burn the bootloader firmware again if you are getting an Arduino Board. Step 1: Get an AVR USBASP programmer. The USBasp programmer can be obtained from here. Step 2: Connect the USBASP programmer to the Arduino Board. The socket from USBasp to ICSP connector on Arduino Board is not compatible. Usbasp firmware using arduino nano The Arduino IDE will then install the bootloader onto your target board. Installing A Sketch. Normally sketches are installed via the USB port on your Arduino, but you can also install them directly using the USBasp which bypasses the bootloader and USB connection. With your sketch open, use the following menu items. 1. Jan 28, 2013 · I tried to use another Arduino, but as I struggled doing this, and as I had the USBAsp progrmmer, I used it. SparkFun has the tutorial on this link. Here is what I did 1 – Connect the calble on Arduino and USBAsp . USBAsp pinout . Arduino Nano pinout. The cable should be like this: Mosi is pin 1 of UsbASP SPI Conector and Miso is pin 1 of. Dec 20, 2017 · How to reflash a bootloader to any Arduino based board using a USBasp. A user requested how he could reflash a bootloader to a MPX v3 mainboard. MPX v3 is a HICTOP board clone and is a Arduino. May 17, 2015 · Arduino Nano as Programmer to Upgrade USBASP Firmware [Solved] This post’s for self doc only. Went to work full day, furiously, in front of My Mac, from Saturday morning to about 7 pm because of single line of warning. Jan 30, 2015 · Installing Drivers for an Arduino Nano in Windows. January 30, 2015 If you are attempting to use an Arduino Nano on a Windows machine and having no luck finding drivers automatically, chances are it is due to a counterfeit FTDI chip which unfortunately does not work with the automatic driver finding functionality in Windows. My nano uses a ch440 (it’s a clone). I flashed it with the arduino isp sketch. I have a 10uf cap from rst to gnd on the arduino nano. I have verified connections to the usbasp and installed a proper jumper on P2 (and jumped it). Upon executing the rest of this tutorial, I get the following results. I am trying to get one of those cheapo USBasp devices to work with the Arduino 1.8.5 IDE and Windows 8.1. However I cannot get the Arduino IDE to recognise the device. Firstly, I have (successfully) tried installing several drivers, by disabling driver signing enforcement. Aug 30, 2015 · In this tutorial, you’ll learn how to burn Arduino bootloader on a new ATmega328 using USBasp ISP programmer. Every Arduino Uno Board comes with a microcontroller called the Atemga328P, and they are already pre-program with Arduino Bootloader firmware. Therefore, there is no need to burn Arduino bootloader into those Atmega328P chips again. I am having trouble figuring out the pinout of my 6 — pin USBasp Chinese clone that I got off eBay. BEFORE YOU TELL ME TO LOOK AT THE PINOUT DIAGRAMS, I can tell you that my version of the usbasp has no way of telling which way is up and which ways is down. Images: This was an option added to later versions of the USBasp firmware to support slow devices (e.g., ones running off a watch crystal). However, the programmer you’re using (according to that description) auto-adjusts its speed to an appropriate value, so there’s no need for AVRDUDE to adjust it in the first place. Ok I see you using avrdude 6.3 now, with a usbasp, there is not need to specify isp speed (i.e. -B some number) as the Chinese firmware in the usbasp takes care of that for you. Your error: target does not answer would tell me your chip has no power, so be sure your have 5v connect to pins VCC and AVCC and both GND and AGND are connect to gnd. Getting Started with the Arduino Nano. The Arduino Nano is a small, complete, and breadboard-friendly board based on the ATmega328P; offers the same connectivity and specs of the UNO board in a smaller form factor. The Arduino Nano is programmed using the Arduino Software (IDE), our Integrated Development Environment common to all our boards. Nov 10, 2014 · Link two boards using one of the provided cables. Close JP2 on the board you intend to program. The other board, and ONLY the other board, goes into the USB port. This is the board that will be used as the programmer. Type the following command in the appropriate folder. For more detail: Using a USBASP v2.0 as a cheap ATmega8 Arduino platform Aug 14, 2015 · Alright so you have a USBasp AVR programmer but you just can’t program with it, well you may need to update the firmware. For some reason, most of the chinese vendors of the USBasp will ship them with old, bad firmware. We can fix this with few materials. We need: Arduino; Some hookup wires; If you have these, you can go ahead. Using AVR-USBasp to Program Arduino. 1 comment 1391 Views. that is the bootloader firmware is being replaced by the source code of the blink example. To go back to. Update usbasp usbasp firmware using arduino nano with arduino nano for android Gingerbread 2. Update usbasp firmware with arduino nano for android Ice Cream Sandwich 4. 5 Simple Techniques For firmware wd15: Usbasp firmware using arduino nano. It is really doable to go from any firmware to any firmware. Dec 01, 2015 · If the process worked ok and AVDRUDE verified the new firmware, you can disconnect the USBASP from the Arduino. Remove the self programming jumper and connect it via USB to the PC and attempt to program your target device (using the Arduino IDE). Just like tutorials “Using ISP Programmer to Burn Bootloader into Arduino” and “Burning Arduino Bootloader with AVR USBasp“, we used ISP to burn the bootloader into Arduino. This tutorial will shows you how to load the program into Arduino using ISP programmer – AVR USBasp, and there are 3 sessions in this tutorial: Jun 15, 2014 · I assumed the Nano was the same as the Duemilanove and used the “Using an Arduino as an AVR ISP (In-System Programmer)” guide on the Arduino site. Unfortunately I couldn’t get it to work. After much google research I found that I needed to keep the reset pin on the Arduino Nano high by using a capacitor between the ground and the reset pin. Jan 29, 2017 · I’m connecting the programmer (Arduino) with the target (USBasp) using the programmer cable seen on the picture of the USBasp (see above). I’m plugging the 6pin adapter to the ICSP of the Arduino the other end to the USBasp. I’ve tried connecting the pins with jumpers instead of the cable without success. Heads up! This tutorial was written for AVR microcontrollers with an Arduino bootloader using ICSP pins. If you are using an ARM microcontroller with SWD pins, you will need a dedicated programmer (i.e. Atmel JTAG ICE 3 or Atmel-ICE) to connect to the SWD port. Feb 28, 2015 · Programming Arduino Nano with V2.0 USBASP (ICSP): PDAControl PDAControl. Programar Arduino Nano con USBASP V2.0 Programming Arduino Nano V2.0 USBASP Tutorial :Revision. I will show you how to flash the ESC with SimonK Firmware with the Arduino, even when you don’t have a USBasp programmer adapter. So what is Firmware Flashing? Firmware is the program and settings on your electronic device. By flashing the firmware, the program and settings get overwritten by new firmware. May 10, 2014 · How to Update the Firmware on a USBasp V2.0. May 10 2014. I used your info as a reference although I re-flashed mine using an Arduino. The fuse bits were relevant. I don’t have any dedicated programmers. I have been programming Atmel chips using the USB-to-serial bitbang method. Recently, I thought I’d get one because doing a re-programming cycle is taking quite a bit of time (a disadvantage of serial port bitbanging). Apr 22, 2015 · ESP8266 — Easiest way to program so far (Using Arduino IDE) 22 April 2015 on ESP8266, water heater, smart house, microcontroller, Flash, Firmware, WiFi, arduino IDE, PHP, SQL, Web-Server, Tutorial. Yep, another post on the ESP8266 is here (By the way, Have you heard about our Facebook page already? Like us and get updates! We tend not to spam :P). Jan 28, 2013 · Then, you use you owm Arduino installation to program your bootloader. Connect your just programmed Arduino on your USB, ( disconnecting everything else ). Start your your Arduino IDE, choose the correcy board (Arduino Nano 328, and programmer – usbasp ) During the procedure you will see an orange led blinking, as the bootloader is programmed. Bootloader Development What’s a bootloader? Microcontrollers are usually programmed through a programmer unless you have a piece of firmware in your microcontroller that allows installing new firmware without the need of an external programmer. This is called a bootloader. Not using a bootloader There is no need to spend extra money on an USBasp AVR programmer. Flash KK2.0 KK2.1 1.6 Firmware Update Upgrade Using Arduino. Arduino Uno / Nano. Jun 18, 2015 · How to update USBasp firmware using another USBasp Author Octopus Published on June 18, 2015 June 18, 2015 I have experienced problems with one of the 2 USBasp programmers we have at MakeRiga and decided to flash the firmware. avrdude: warning: cannot set sck period. please check for usbasp firmware update. and I was unable to program an ATTiny85 on a breadboard when running at 3.3v (it worked fine at 5V), so I decided to bite the bullet and attempt to update the firmware on the USBASP using one of my Arduino boards as the programmer. xiaomi redmi pro global firmware
the firmware blocks the vag
tes 4 oblivion русификатор
tv philips 42pfl6907t 12 firmware
the evic vtc mini firmware 100w
t95q tv box firmware
to download the firmware for fly bl6425
ue40es500
vk raw скачать программу не бесплатно 2018
wordpress вывод меню в шаблоне
tp s512 pb83 firmware download
star wars battlefront ii русификатор
uploaded by bestiality lovers com visit us
touareg firmware update
the camera firmware
uzbekiski seqis
writing poems ludovico einaudi
the firmware of the remote hds6l
to download the firmware ht16
vampire the masquerade bloodlines русификатор
world vision t62d repair firmware
trainz simulator русификатор
stjohns wort инструкция по применению
x mouse button control русификатор
wileyfox swift 4pda firmware official
xenonauts 2 русификатор
x trail firmware
supra m145g firmware
vw tiguan dsg 6 firmware
the firmware of the dvr treelogic
watch a1 firmware
tropico 4 русификатор steam текст и звук
ujnjdst презентации для ловади
star wars battlefront 2 русификатор текста
why flies firmware
the shameless смотреть онлайн
the new bosch 797 download
videostudio русификатор
the ios on chinese iphone xs
the 4g modem megaphone m100 3 firmware download
victoria ошибка invalid opcode
the firmware on the recorder 1080 full hd
sony xperia tipo firmware
ubiquiti firmware update
the antminer firmware s9 autofreq
unibinder 71 купить
sony xperia go st27i firmware
xiaomi mi band 2 firmware through the computer
to download the firmware for free for kids
standard wallpaper from firmware huawei

Ещё один шаг в сторону от ардуинонизации.

Программы для работы с программатором

Сегодня расскажу, о недорогим и очень простом программаторе USBAsp v.2.0 для микроконтроллеров AVR (основанный на дизайне Томаса Фишла), с его помощью можно прошивать контроллеры AVR по интерфейсу ISP (не выпаивая его с платы), а самое главное, можно прошить загрузочный сектор на контроллерах Arduino.

Технические параметры

Напряжение питания: 5 В, DC
Интерфейс: USB 2.0
Программирование/ чтение: Atmel (AVR)
Габариты: 70 мм x 18 мм x 10 мм
Поддержка операционных систем: Windows XP / 7 / 8 / 8.1 / 10.

Общие сведения

Программатор USBAsp распространяется и открытым исходным кодом, так что при желании можно изготовить самому, скачав печатную плату и прошивку с сайта Thomas, из-за этого в различных интернет магазинах существует различные варианты программатора с одинаковым функционалом. В моем случае буду рассказывать о USBAsp V2.0 китайского производителя LC Technelogy.

Программатор собран на синий печатной плате, слева расположен USB-разъем необходимый для подключения к компьютеру. В центре располагается контроллер ATmega8A, рядом установлен кварцевый резонатор на 12 МГц и электрическая обвязка (резисторы, конденсаторы). Справа расположен 10-контактный разъем (два ряда, по пять выводов, шагом 2.54 мм), обеспечивающий обмен данными с прошиваемым микроконтроллером (интерфейс ISP). В комплекте поставляется кабель, с каждой стороны которого, установлен разъем IDC (10 выводов), для простоты прошивки некоторых плат (например Arduino), советую приобрести адаптер-переходник с 10-pin на 6-pin. Назначение выводов программатора USBAsp можно посмотреть на рисунке ниже, вид на стороне программатора.

Назначение выводов:
1 – MOSI
2 – VCC
3, 8, 10 – GND
4 – TXD
5 – RESET
6 – RXD
7 – SCK
9 – MISO

Световая индикация
Красный светодиод G — Включен
Красный светодиод R — Обмен данными

Перемычки
JP1 — POWER, управляет напряжением на разъеме ISP VCC (вывод 2), можно установить на + 3. 3В, + 5В или вовсе убрать перемычку, если программируемое устройство, имеет собственный источник питания.
JP2 — SERVICE, обновления прошивки USBasp.
JP3 — SLOW, программирования на низких скоростях, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц.

Принципиальная схема программатора USBAsp V2.0 можно посмотреть на рисунке ниже.

Список поддерживаемых AVR микроконтроллеров:
Mega Series:
ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535,
Tiny Series: ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A
Classic Series: AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535
Can Series: AT90CAN128
PWN Series: AT90PWM2, AT90PWM3

Установка драйвера USBAsp на Windows 8/10

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

Так как, в операционной системе нету необходимого драйвера, в «Диспетчере устройств » появится устройство «USBAsp » с восклицательным знаком.

Скачиваем архив с цифровой подписью, разархивируем и запускаем «InstallDriver.exe»

Драйвер установлен, в «Диспетчере устройств » пропадет восклицательный знак с «USBAsp ».

Установка драйвера на Windows XP и Windows 7 аналогичная, программатор готов к работе.

Программу разработал «Боднар Сергей », работает не только с китайским программатором USBAsp v.2.0, но и другими программаторами. Первым делом скачиваем программу, разархивируем и запускаем «AVRDUDEPROG.exe ».
В качестве примера, прошью китайскую плату Arduino UNO R3 в которой установлен микросхема ATmega328P. В программе, жмем на вкладку «Микроконтроллеры » и выбираем ATmega328P.

Далее, необходимо выбрать прошивку, в строке «Flash » нажимаем «. . . », переходим в папку «C:\Program Files\Arduino\hardware\arduino\avr\bootloaders\atmega » и выбираем «ATmegaBOOT_168_atmega328.hex », жмем «Открыть »

Подключаем программатор к плате «Arduino UNO R3 », и нажимаем кнопку «Программирование ».

В конце, выйдет диалоговое окно, о удачном окончании программировании.

Микроконтроллеры фирмы ATMEL успели завоевать широкую популярность. Их программирование перед применением можно выполнить непосредственно в плате готового устройства через несложный ISP кабель, подключаемый к LPT порту персонального компьютера или кабель чуть посложнее, подключаемый к COM порту. Но в настоящее время всё больше материнских плат выпускается без того и другого, а в ноутбуках LPT исчез уже давно, сменившись интерфейсом USB. Впрочем, под этот интерфейс программаторы тоже существуют и доступны.

Для масштаба рядом лежит обычный 5 мм светодиод.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых МК

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325,
ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401


Вместе с программатором поставляется 10-жильный летночный кабель с разъёмами.


Питание программатора берется с USB порта компьютера.


На плате программатора имеется место для распайки LDO стабилизатора напряжения на 3,3В, но сам он не распаян.
Программатор поддерживается программой AVRDUDE. Сама программа консольная, но под неё есть . Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Перед началом работы с программатором потребуется скачать драйвер со .
Также программатор поддерживается средой разработки Arduino.


Для программатора существует прошивка под названием , превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск. Планирую купить +32 Добавить в избранное Обзор понравился +17 +42

Опубліковано 23.02.2011

Неболшой обзор используемых на практике программаторов для микроконтроллеров AVR. AVR ISP Prorgammer и USB программатор AVR / 89S совместимый с AVR910 .

AVR ISP Prorgammer

Внутрисхемный программатор для программирования микроконтроллеров фирмы ATMEL®, как в условиях серийного производства, так и в процессе разработки и отладки изделий.

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

TinyAVR

ATtiny11L, ATtiny11, ATtiny12V, ATtiny12L, ATtiny13, ATtiny15L, ATtiny2313, ATtiny26L, ATtiny26, ATtiny28V, ATtiny28L

AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535

MegaAVR

ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega161, ATmega162, ATmega163L, ATmega169, ATmega8515, ATmega8535, ATmega2560, ATmega2561, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega649, ATmega6490

Отличительные особенности

:

– внутрисхемное программирование (не требуются дополнительные переходные панели, при этом выводы программирования используются в проекте)

– поддержка программатора популярными компиляторами AVRstudio, IAR AVR, Image Craft AVR.

– автоматическая верификация (100% гарантия соответствия зашитого кода исходному)

– высокая скорость программирования, возможность прошивки серийного номера кристалла

я долгое время удачно пользовался и продолжаю пользоваться этим надежным и простым программатором, работающим через LPT порт.

Схема этого простого, но надежного программатора:

Двусторонняя плата помещается в разъем:


Мне понадобился второй программатор, а описанный ниже USB программатор не мог шить нужный мне микроконтроллер. Поэтому я решил повторить этот LPT программатор.



Компьютерные тенденции таковы, что LPT порт скоро исчезнет. Поэтому пора присмотреть альтернативу.

Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (USB программатор)

Посетив несколько магазинов, понял, что цену на программаторы лупят не скромные, поэтому принял решение заморочиться и сделать программатор сам.
Пробороздив просторы Интернета, нашел несколько реализаций совместимые по командам с оригинальным программатором AVR910 ATMEL.

Минус такой переделки – отсутствие предохранителя. Хотя, как показала практика, USB порт кротким замыканием спалить вряд ли удастся. По крайней мере, на моём компьютере не вышло, но экспериментировать не стоит.
Светодиод VL3 сигнализирует о подачи питания на программатор через порт USB. Светодиоды VL1, VL2 сигнализируют о чтении / записи программатора.
Джампер J1 – (MODify) служит для программирования микроконтроллера в новом программаторе. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК программы.
После этот джампер необходимо разомкнуть и замкнуть джампер J2 – NORMal. Больше мы его не трогаем.
С помощью джампера J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом – пониженная.
Примечательная особенность, на вывод LED разъема ISP выведен меандр с частотой 1 МГц для “оживления” МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. ОЧЕНЬ полезная штука!

Прошивка FUSE BITS
Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в “0”) биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в “1”).

Инсталляция
Windows 2000/XP/Vista/Seven 32-bit

Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы.
В архиве с прошивкой имеется папка “AVR910.Driver ” в которой расположены три директории для разных вариантов операционных систем:
-“2k_xp_32 ” – для операционных систем Windows 2000/XP 32-bit (используется штатный драйвер usbser. sys)
-“vista_xp_32 ” – Для операционных систем Windows XP/Vista/Seven 32-bit (usbser.sys + lowbulk.sys от Osamu Tamura)
-“vista_xp_64 ” – Для операционных систем Windows XP/Vista/Seven 64-bit (usbser.sys + lowbulk.sys от Osamu Tamura)

Особенности установки:

В принципе, инсталляция не отличается от подобной для Windows XP, но есть одно НО – задержки в драйвере usbser.sys данной ОС портят цепочку команд от ПО на РС до программатора и, соответственно, цепь ответов обратно от программатора до ПО на РС… Проблему я пока не установил, но есть решение. Конечно не самое красивое, но работает надежно 🙂 Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки …\winnt\system32\drivers\ и …\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP1 можно взять здесь. Естественно, что драйвер придется подменять загрузившись под другой ОС (например с загрузочного диска).

Чтобы использовать драйвера на 64 битной платформе, Вы должны отключить проверку цифровых подписей драйверов, нажимая функциональную клавишу F8 во время начала загрузки системы.
Второй вариант, использование программы “Driver Signature Enforcement Overrider “, которая подписывает драйвер как “testdriver” и активизирует “testmode”, таким образом, Вы можете загрузить драйвер без реальной цифровой подписи. Вы можете найти более детальное описание на странице программы, пройдя по ссылке выше.

Вот что получилось у меня:



Программатор использую с программами AVRProg v.1.4 из пакета AVRStudio. На Windows XP Работают безотказно.

Программатор устанавливается как виртуальный Com-порт. Единственно, что нужно учесть, AVRProg проверяет порты от 1 до 4. Придется в диспетчере устройств передвинуть на порт до COM4, либо в настройках AVRStudio указать по какой порт искать программатор.

Схему, плату, прошивку и драйвера можно скачать .

P.S. Когда мне нужно было прошить PWM контроллеры (AT90PWM3) то пришлось это делать с помощью старого доброго AVR ISP Prorgammer (через LPT порт), AVRProg v. 1.4 не знает AT90PWM3. Не определенная ситуация складывается и с ATmega64. Поэтому, основным рабочим программатором у меня остается ЛПТешный AVR ISP Prorgammer.

P.S.P.S. Не так давно знакомый купил этот USBasp программатор

Драйвера и ПО для него смотри здесь: http://www.fischl.de/usbasp/
Работает, при этом обрадовало отсутствие багов, замеченных у AVR / 89S совместимого с AVR910 (USB) программатора.

В статье описано ПО для работы с этими и другими программаторами.

В моём случае это абсолютный рекордсмен по скорости доставки — около 5 месяцев беспечного блуждания непонятно где. Несмотря на чудовищную задержку по времени, пакет я всё-таки получил, чему несказанно рад, не взирая на недочёты, о коих поведаю ниже. Поскольку у меня весьма плохая память, то нужно было объединить найденную полезную информацию где-то в одном месте в виде памятки, собирать её по крупицам в разных закоулках сети оказалось делом нетривиальным, поэтому оформлю всё это отдельным постом.
USB ISP — самый дешёвый программатор контроллеров AVR, что можно найти в продаже, брался для расширения кругозора и более углубленного изучения AVR.
Обзор в себя включает: описание программатора, как его подключить к чипу, настройку его работы в программах AvrDude Prog, Khazama, Atmel Studio 7, и не только это.

Конечно вместо него можно использовать Arduino UNO с прошитым в него скетчем ArduinoISP, но это не удобно, возня с проводами, особенно если UNO всего одна, отбивает энтузиазм. Проще было заиметь отдельно такой программатор, точнее два. По двум причинам:
1) Ещё перед покупкой уже из отзывов было понятно, что качество пайки этих устройств страдает, а некоторым ещё и с расколотыми стабилитронами они приходили. Решено было подстраховаться, заказав два.
2) Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.

Технические характеристики Поддерживаемые ОС: Windows, MacOS, Linux
Процессор: Atmega8A
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (внутрисхемное)
Напряжение программирования: 5В или 3. 3В (в зависимости от положения перемычки JP2)
Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
Поддерживаемые контроллеры: все AVR с интерфейсом SPI
Описание:

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

ATmega серия ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Tiny серия ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 Attiny85 ATtiny2313

Серия Classic AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN серия AT90CAN128

PWM серия AT90PWM2 AT90PWM3

Внешний вид Комплект поставки минимальный — программатор + шлейф без резинки. В моём случае в удвоенном количестве.

Культура исполнения и вправду хромает, мне в глаза сразу бросились криво припаянные гребёнки. Везде где только можно — имеются следы флюса, причём с окислами, по всей видимости, программаторы давно валялись на складе, а сборка их производилась с присущей китайцам быстротой.

Некоторые отверстия не целиком заполнены припоем

SMD-элементы тоже криво припаяны

Гребёнку чуть позже выровнял, уж больно неприятно на такую раскосую смотреть, элементы пропаял, а плату затем отмыл

Размеры платы несколько больше USB-TTL-конвертера на CP2102

Длина шлейфа около 30см, бытует мнение, что чем короче шлейф, тем лучше. Некоторые его специально укорачивают. Если заказать оригинальный USBASP — там комплектный шлейф уже 50см.

Органы управления на плате На плате имеются три перемычки, задающие разные режимы работы программатора:
JP1 — замыкается в случае обновления прошивки самого программатора
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3. 3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
Программатор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой JP2 находится LDO-стабилизатор 662К , понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение.

Установка драйверов Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Вставляю любой программатор в USB-порт ПК, звучит сигнал о новом оборудовании, на самом девайсе горит светодиод, но автоматического поиска драйверов не происходит.
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows
1) Скачать , распаковать в удобное место.
2) Зайти в «Диспетчер устройств», например навести курсор на главную кнопку (Win10), нажать ПКМ и выбрать пункт «Диспетчер устройств».

3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольничком — > навести на него курсор, нажать ПКМ -> «Обновить драйверы…»

4) Указать путь до раннее распакованной папки с драйверами — «libusb_1.2.4.0», нажать «ОК»

5) «Всё равно установить этот драйвер»

6) Готово, теперь оранжевый треугольничек пропал, драйвера поставлены

Прошивка собрата Мне уже было известно до этого, что китайцы продают эти программаторы с не самой свежей прошивкой. Решил сперва обновить прошивку на одном из них, а затем ради интереса сравнить оба программатора в работе. Для этого соединяю шлейфом оба устройства, на ведущем (который вставляю в USB-порт) никакие перемычки не трогаются, а на ведомом программаторе (на котором будем обновлять прошивку) я переставил перемычку с JP2 на JP1 :

Захожу в программу Khazama AVR Programmer, выбираю из выпадающего списка ATmega8 и сперва считаю Flash-память через пункт меню «Command» -> «Read FLASH to Buffer», чтобы cохранить китайскую заводскую прошивку у себя. На всякий случай.

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

Идёт считывание, которое завершается всплывающим окном об успешном считывании FLASH-памяти в буфер

Теперь нужно сохранить содержимое буфера: «File» -> «Save FLASH Buffer As…». Выбрать удобное место, куда старая прошивка сохранится, дать имя (я например её назвал firmware_1) и дописать расширение *.hex — если его не писать, то она сохранится как просто файл без расширения.

Скачиваю прошивку для программатора с странички, архив usbasp.2011-05-28.tar.gz (в этом же архиве есть драйвера для Windows, распаковываю содержимое в удобное место.
Тем временем в Khazama загружу скачанную прошивку в буфер. «File» -> «Load FLASH File to Buffer». Выбираю прошивку, где в названии написано atmega8, поскольку прошиваемый программатор на этом чипе.

Как видно, здесь три прошивки — для Atmega8, 48 и 88. В нашем случае Atmega 8 — её и выбираю.

Прошиваю. «Command» -> «Write FLASH File to Buffer». Снова возникает ошибка, но после идёт процесс, завершающийся успехом.



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

Находятся они по пути «Command» -> «Fuses and Lock Bits…», откроется окно:

Где по нажатии кнопки «Read All» считаются фьюз- и лок-биты, а пресловутая ошибка успеет вылезти аж 5 раз подряд. Ошибки сыпятся именно на заводской китайской прошивке. Но если вставить в USB-порт недавно прошитый программатор, прошивкой скаченной по ссылке выше, то этих ошибок вылазить уже не будет, однако баги вылезут в другом месте, но о них позже.

Связь с платой Pro Mini (Atmega 168, 3.3V/8MHz) В этом случае выводы программатора соединяются с выводами платы Pro Mini, как проиллюстрировано на схематичном рисунке ниже. Перемычки не переставляются, т.е. остаётся в положении 5В.
Несмотря на то, что плата Pro Mini подписана как 3.3В, на 168-ю Атмегу можно подавать и 5В. Стабилизатор AMS1117 на 3.3В кстати вообще выпаян из платы.

AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.


Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.

Связь с контроллером ATtiny13A в корпусе SOIC8 Соединение согласно схеме ниже. Но тут всё немного интереснее.

Поскольку голый чип в SMD-корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства соединения с программатором в дальнейшем. Обзор на этот переходник можно почитать .

AVRDUDE PROG 3.3
Тут выбирается из списка одноимённый контроллер, программатор USBasp и, если программатор прошит заводской китайской прошивкой, то все операции проходят ровно и гладко. Однако стоит заменить программатор на другой, с обновлённой прошивкой, то при любой операции возникает ошибка.

Появляется она из-за того, что ни программа, ни программатор не могут автоматически перейти в режим медленного программирования, необходимый для ATtiny13. Но есть как минимум два выхода:
1) Железный: замкнуть перемычку JP3

2) Программный: отредактировать файл «programm.ini» в папке с программой AVRDUDE PROG 3.3


Внести туда четыре строчки кода и сохранить. (взято )
progisp=jtag2pdiportprog=COM1portenabled=1 progisp=Usbasp -B 3 portprog=usb portenabled=0

Примечание. Здесь применён ключ «-B», который и занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах

После этого снова запустить AVRDUDE PROG 3.3 и в выпадающем списке программаторов выбрать UsbaspSpeed. Теперь работа с ATtiny13 на программаторе с новой прошивкой будет уже без ошибок, а перемычку JP3 замыкать больше не потребуется в этом случае.

Khazama AVR Programmer
Выбирается контроллер из списка и почти та же ситуация.

Программатор с заводской прошивкой нормально работает с ATtiny13, если не считать постоянно появляющихся окон с ошибкой, о чём раннее уже рассказывал.
Но с программатором на новой прошивке уже появляется иная ошибка с невозможностью прочесть сигнатуру (цифровую подпись) контроллера.

Но стоит замкнуть перемычку JP3 , и можно спокойно работать


Или просто задать частоту работы из выпадающего списка по пути «Command» -> «Programm Options», я выставил частоту 187.5кГц.

Примечание. Частота программирования должна быть меньше тактовой частоты прошиваемой микросхемы не менее, чем в 4 раза. Но если посмотреть на считанные с ATtiny13 фьюзы, то на последней строчке Int.Rc.Osc. указано 9.6МГц.
Как минимум, у новичка возникнет вопрос — почему на выставленных в KHazame 1.5МГц — появляется та же ошибка? А также почему, если в AtmelStudio написать например код мигания светодиода с частотой раз в секунду и в макросе прописать:
#define f_cpu 9600000 то загрузив код на Attiny13, светодиод будет мигать очень медленно?
— посмотрим на предпоследнюю строчку, где Divide Clock by 8 Internally — это включенный предделитель частоты, который делит эти 9. 6МГц на 8, и поэтому реальная частота чипа здесь — 1.2МГц. Поэтому при выборе частоты 187.5кГц или меньше, ошибки исчезают и можно работать нормально с контроллером.

Примечание 2. Способ с выбором частоты в KHazame по скорости работы в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, потому как в последнем случае частота понижается до 8кГц.

Интеграция программатора в Atmel Studio 7 Atmel Studio — среда разработки от фирмы Atmel, но напрямую работать с USBASP, тем более китайским, она не может. Однако благодаря той же программе AVRDUDE, входящий в состав пакета AVRDUDE PROG 3.3, которая будет играть здесь роль посредника, можно соорудить «костыль», а уже в самой среде затем добавить возможность прошивать МК, подключенный через USBASP.

Сперва нужно запустить среду, предполагается, что некий код у нас уже написан и собран. В моём примере это простая мигалка светодиодом — Blink.

На верхней панели инструментов выбрать «Tools» — «External Tools. ..»

Откроется небольшое окно, нажать «Add»

В самом верхнем поле «Title:» ввести любое удобное название, я написал «Atmega168», т.к. та конфигурация, что приведу чуть ниже относится конкретно к этому контроллеру, и для любого другого контроллера она настраивается индивидуально.
В большом поле наверху, название инструмента будет автоматически продублировано.

Вторая строка, поле «Command:» — здесь нужно указать путь до файла «avrdude.exe», который находится в папке с вышерассмотренной программой

Третья строка, поле «Arguments:» необходимо ввести собственно саму конфигурацию

Конфигурация для Atmega168

P m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
-p — наименование контроллера
-с — какой программатор
-P — порт, через который будет заливаться прошивка
-U — какая операция с какой памятью будет производится (в данном случае запись во Flash)
Если нужно настроить для другого МК, то параметр «m168» нужно изменить на соответствующий контроллер, который будет прошиваться. Например «m8» для Atmega8 или «m328p», если Atmega328p. Параметры для других МК смотрите — также там найдёте описания ключей AVRDUDE.

Конфигурация для ATtiny13


После заполнения полей нажать «Apply» и «ОК». Окно закроется

Теперь, если снова кликнуть по «Tools», там появится только что созданный инструмент. И по нажатии по нему откомпилированный код будет автоматически прошит в контроллер.

Но эта операция происходит в два клика, что не очень удобно. Надо вынести этот инструмент на главную панель инструментов, чтобы он был всегда на виду.
Для этого нужно снова зайти в «Tools», затем кликнуть по пункту «Customize…»
Откроется следующее окно:

Перейти во вкладку «Commands» — нажать кнопку «Add Command…»

Ещё одно окно появится. В нём — в левой колонке выбрать «Tools», а в правой колонке выделить «External Command 1». Нажать «OK»

«External Command 1» окажется наверху списка, и, обратите внимание на саму панель инструментов — в интерфейсе появился пункт «Atmega168».

Но как мне кажется, место ему отведено не совсем удачное, желательно его сдвинуть вправо, для этого нажимается кнопка «Move Down» (одно нажатие = сдвиг на одну позицию вправо). После этого можно закрывать окно по кнопке «Close» и шить чип прямо из студии в один клик через обозреваемый программатор.


При перепрошивке чипа таким методом, на секунду появляется консольное окно AVRDUDE. Но может возникнуть необходимость как-то сохранить этот лог для дальнейшего его просмотра — тогда в окне «External tools» нужно поставить галку на «Use Output window».

И теперь лог будет отображаться в окне вывода, что внизу программы ATmel Studio 7. Данная галка может задаваться отдельно для каждого добавленного в «External tools» контроллера.

Дополнение по фьюзам программатора Из документа READMI, идущего в комплекте с драйверами и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует выставить определённую конфигурацию фьюз-битов, определяющих работу внешнего резонатора.
Минусом khazam»ы является то, что в окне со фьюзами не отображаются HEX-значения выставленных битов. Это уже можно посмотреть в AVRDUDE PROG. Заводские фьюзы, выставленные китайцами, выглядят так (обязательно поставить точку «инверсные» — выделил синим прямоугольником ):

Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F , Fuse High Byte: C9 , Fuse Low Byte: EF .

Если всё сходится, можно нажимать «программирование»

ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя.
_____________________________________

Выводы Опробовано, работает. Если khazam не планируется использовать, то в обновлении прошивки для программатора — смысла нет, благо и так прекрасно работает, причём в случае с ATtiny13 никаких правок и перемычек вносить не требуется. Последняя прошивка — почему-то оказалась более капризна в этом плане. Единственное, после получения, плату надо пропаять и отмыть.

Список ссылок

В данной статье мы опишем „шаг за шагом” этапы изготовления USBasp программатора для микроконтроллеров AVR . В отдельных статьях приведем описание установки драйверов для операционных систем Windows XP и Windows 7 (x64/x86). В конце поста размещена ссылка с необходимой документацией для изготовления программатора USBasp своими руками.

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

Основные характеристики программатора USBasp

  • Работает с несколькими операционными системами – Linux, Mac OS X и Windows – включая Windows 8!
  • Не требует внешнего питания.
  • Умеет программировать со скоростью вплоть до 5kB/s
  • Есть вариант (Switch 2) снижения скорость программирования – для процессоров с кварцем меньше 1,5 Мгц
  • Обеспечивает напряжение для программирования (Switch 1) 5 вольт
  • Указание работы программатора с помощью светодиода

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

  1. Выбор схемы/рисунка печатной платы
  2. Перенос рисунка печатной платы на фольгированный стеклотекстолит
  3. Травление печатной платы в растворе хлорного железа
  4. Сверление отверстий
  5. Монтаж элементов (пайка)
  6. Программирование Atmaga8 программатора
  7. Подключение программатора к компьютеру
  8. Установка драйверов – Windows XP, Windows 7
  9. Выбор программы с поддержкой USBasp

Существует много версий USBasp программатора, но все они основаны на главной схеме, автором которой является Thomas Fischl . Прошивка микроконтроллера программатора также является его авторством.

Оригинальная схема программатора:

В данном случае за основу была выбрана оригинальная схема. Поскольку использование перемычек в оригинальной схеме не совсем удобно, было принято решение использовать DIP переключатели. Так же были изменены некоторые значения резисторов.
Более того, в оригинальной схеме линии TxD и RxD выведены на разъем ISP, хотя это не нужно (точнее не используются на практике).

Ниже приведена схема с внесенными изменениями:

Строительство USBasp программатора

Существует много версий печатной платы данного программатора, некоторые можно найти на официальном сайте USBasp. Однако, была сделана своя на основе выше представленной схемы.

К сожалению, из-за применения DIP переключателей, рисунок платы стал немного сложнее, что привело к применению 2 коротких перемычек, с целью чтобы печатная плата была по-прежнему односторонней.

Ниже результат печатной платы:

Как видно на рисунке, в программаторе не применялись SMD элементы. Пустое пространство на плате „залито” полем массы, главным образом для того, чтобы не вытравливать большое количество меди, а также снизить влияние помех на программатор.

Список элементов используемых в USBasp программаторе:

  • R1: 10к
  • R2: 180
  • R3: 100
  • R5, R6: 68
  • R7: 2к2
  • C1, C2: 22п
  • C3: 10мк
  • C4: 100н
  • LED1: Красный светодиод на 20мА
  • LED2: Зеленый светодиод на 20мА
  • D2, D3: стабилитроны на 3,6В
  • X1: Разъем USB, тип B
  • SV1: Гнездо под разъем IDC-10
  • Q1: Кварц 12МГц, корпус HC49-S
  • SW1: Dip переключатель трехпозиционный
  • IC1: Atmega8 (ПРИМЕЧАНИЕ: Не следует использовать микроконтроллер Atmega8 — PU из-за его ограничение максимальной тактовой частотой до 8 МГц!)

Перенос рисунка печатной платы USBasp программатора на стеклотекстолит выполнен с помощью метода ЛУТ (). Как это делать описывать не будем, поскольку данной информации в сети много.

Вкратце скажем, что сначала рисунок в масштабе 1:1 печатается на глянцевой бумаге, затем он накладывается на очищенную и обезжиренную медную сторону стеклотекстолита и фиксируется с помощью бумажного скотча. Далее бумажная сторона тщательно разглаживается утюгом на 3-ке. После все это дело вымачивается в воде и аккуратно очищается от бумаги.

Следующий этап – вытравливание платы в растворе хлорного железа. Во время травления желательно поддерживать температуру раствора не ниже 40 C, поэтому банку с раствором погружаем в горячую воду:


После завершения процесса травления необходимо удалить тонер ацетоном.

Остается теперь только просверлить отверстия. После завершения процесса изготовления платы можно приступать к пайке элементов USBasp программатора, начиная с перемычек.

Готовые к печати (в формате PDF) рисунок печатной платы находится в конце статьи. Вы также можете найти несколько вариантов на официальном сайте проекта.

Первый запуск USBasp программатора

Теперь, когда все детали спаяны, остается только «прошить» микроконтроллер Atmegę8 самого программатора. Для этого нужен отдельный программатор, это может быть, например, STK 200 (LPT порт), STK500 и т. д. LPT программатор подключается к USBasp через разъем IDC-10.

Обратите внимание, что распределение пинов в разъеме оригинального программатора (USBasp) находится справа, в то время как в версии, описываемой в этой статье – слева:

Распределение, показанное на рисунке справа, соответствует тем, которые применяет компания Atmel в своих оригинальных программаторах. Такое распределение уменьшает риск возникновения помех во время программирования в случае применения длинных проводов от программатора к контроллеру, так как каждая сигнальная линия экранирована массой, кроме MOSI.

На время программирования включите режим SELF путем переключения DIP переключателя № 3 в положение ON. Благодаря этому появляется возможность запрограммировать Atmega8. После завершения программирования, положение переключателя (3) должна быть переведено в состоянии OFF.

Последнюю версию прошивки можно скачать с официального сайта. Рекомендуем версию для Atmega8, которая находится в архиве: usbasp.2011-05-28.tar.gz.

Обратите внимание, чтобы перед программированием Atmega8 необходимо выставить фьюзы которые имеют следующие значения:

  • # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
  • # для Atmega48: HFUSE=0xDD LFUSE=0xFF

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

Установка драйверов USBasp программатора

Способ установки драйверов программатора описан в отдельных статьях, там же имеются и сами драйвера. Ниже приведены прямые ссылки на эти статьи:

  • Установка драйверов для программатора USBasp под Windows XP
  • Установка драйверов для программатора USBasp Windows 7 x64/x86

Программы для работы программатора USBasp

Самой популярной программой, поддерживающей программатор USBasp, это консольная программа AVRdude. Так же существует множество производных программ, использование которых намного удобнее. Они представлены в статье Сравнение программ для поддержки программатора USBasp.

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

РадиоКот >Статьи >

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Для предметности разговора начну с картинки

Нет худа без добра (с).
Пока использовал заводские платы «Arduino UNO» и «Arduino MiniPRO», я не задумывался о том, как работает система в целом. Я просто писал код, нажимал кнопку «Вгрузить» и всё заливалось в микроконтроллер, далее МК, установленный на плате (ATmega328). В этом и заключается прелесть экосистемы «Arduino».
Сподвигла написать данный опус проблема. Никак мне удавалось залить исходную программу, далее СКЕТЧ, из Arduino IDE в нестандартный для неё МК «ATmega8L» с кварцем 8МГц стандартным способом, т.е. через USB-порт (на самом деле через преобразователь USB- UART). Это кратко. Теперь начну рассказывать, какую важную информацию я «наковырял» и как решил свою проблему.

Немного общей теории.
Для того, что бы залить (прошить, загрузить, UPLOAD) скетч в ATmega8L из Arduino IDE через USB-порт, нужен преобразователь, который преобразует информацию, передаваемую по USB-интерфейсу(каналу, дороге, линиям) в сигналы последовательного канала UART. Т.е. должны получиться определенные уровни сигналов – интерфейс (RS232, RS485) и определенные длительности сигналов (протокол).
Что бы принять информацию, поступающую в ATmega8L по UART (физически через выводы Rx, Tx) в МК должна быть ПРЕДВАРИТЕЛЬНО загружена программа, которая настраивает определенные выводы МК как Rx и Tx, и умеет обрабатывать полученную через них информацию. Эта программа называется ЗАГРУЗЧИК или по англицки BOOTLOADER.

(Отступление. ЗАГРУЗЧИКи бывают для разных интерфейсов и, соответственно, протоколов. Программа-программатор, заливающая информацию, должна соответствовать имеющемуся ЗАГРУЗЧИКу. И наоборот — прошитый ЗАГРУЗЧИК должен соответствовать управляющей программе-программатору. Грубо говоря — это «папа» и «мама» одного разъема. Очень часто для МК фирмы ATMEL «папой» является программа avrdude.exe).
Итак, посредством USBasp-платы и avrdude.exe я залил ЗАГРУЗЧИК в ATmega8L. Залитый ЗАГРУЗЧИК должен учитывать определенные физические характеристики МК. В моем случае это то, что МК работает с внешним кварцем на частоте 8МГц (в рамках данной статьи этой характеристики достаточно). Заливка ЗАГРУЗЧИКа происходит просто и жестко – как указал разработчик МК. Не залить HEX-файл (FIRMWARE) ЗАГРУЗЧИКа при минимальном количестве извилин, прямых руках, исправных деталях и правильном соединении просто невозможно.

А почему же тогда возникает проблема залить скетч? Ответ есть выше. Предварительно прошитый ЗАГРУЗЧИК должен соответствовать настройкам «программы-заливатору» (от слова «программатор») и, конечно же, преобразователю интерфейса (плате-программатору). Если идиот подключит два проводка от Rx и Tx ATmega8 к двум выводам разъема USB, то ничего не прошьется. Поэтому на платах-преобразователях останавливаться не буду. Единственно напомню, что ISP-программаторы — это программаторы «железа», которые работают на самом низком уровне и позволяют настраивать МК почти как угодно в пределах возможного.

Вот и нарисовался главный вопрос: Как определить, что имеющийся в МК ЗАГРУЗЧИК соответствует программе-программатору (в рамках данной статьи – Arduino IDE)? Если кратко – то никак!!! И не поможет вам ни осциллограф, ни анализатор. С помощью анализатора можно увидеть длительности каких-то сигналов и максимум, что можно определить – используемую ЗАГРУЗЧИКом скорость, если он будет что-нибудь выдавать по линии Tx. Но даже если скорость будет согласованная, а считанная информация читабельна, это не скажет нам ровным счетом ничего. Единственный способ подружить ЗАГРУЗЧИК в МК и «программу-заливатор» – это читать и следовать информации разработчика ЗАГРУЗЧИКа.
И вот здесь мы подходим к главному плюсу и недостатку одновременно Arduino IDE – дружелюбному интерфейсу для начинающего пользователя. Читай: скрытие всех системных настроек программы от пользователя.
Продолжаю. Итак, мы прочитали информацию от разработчика ЗАГРУЗЧИКа как прошивать его ЗАГРУЗЧИК и как потом загружать HEX-файлы в МК. НО СТОП! В Arduino IDE нет понятия «ЗАГРУЗЧИК», «HEX-файл». Здесь я вынужден прервать рассказ, вернуться к первой картинке и рассказать «с высоты птичьего полета» как устроена Arduino IDE.

1) Грубо говоря, программная платформа «Arduino IDE» предоставляет нам только убогий (для профи) и замечательный для экосистемы «Arduino» интерфейс для написания скетчев и легкой настройки (плата, порт, программатор). При нажатии кнопки «Проверить»(скетч) в дело вступает «наемный профессионал» — компилятор avr-gcc.exe, который преобразует нашу гениальную программу в вид, принимаемый программой-программатором – HEX-файл. Если скетч преобразовался (скомпилировался) и получился HEX-файл, то можно приступить ко второму шагу(смотри картинку1).
2) Запустить программу-программатор с определенными параметрами, что бы HEX-файл «скормить», например, через преобразователь USB-UART, ЗАГРУЗЧИКу МК. Из данной схемы видно, что если автор ЗАГРУЗЧИКа использует в качестве программы-программатора, например, классическую «дудку» (avrdude.exe), то нам вовсе необязательно мучится с настройками платформы «Arduino IDE», спрятанными в фиг знает каких файлах и фиг знает в каком формате. Мы можем просто написать свой bat(cmd, скрипт)-файл и запускать его как для компиляции проекта (avr-gcc.exe), так и для заливки HEX-файла в МК (avrdude.exe). А дальше процесс происходит практически на уровне железа.
3) Драйверы операционной системы преобразуют информацию так, что бы она была понятной подключенным USB-устройствам. В представленной схеме я показал два варианта:
4) 1-й вариант с USB-UART -преобразователем и МК с обязательным (5. 1) ЗАГРУЗЧИКом. 2-й вариант с аппаратным USBasp-программатором и (5.2)МК (ЗАГРУЗЧИК не нужен, хотя может иметься).

Какие можно сделать выводы, глядя на представленную картинку?
1. НЕ НАДО устраивать танцы с бубном, если не происходит в Arduino IDE компиляция проекта. Заходим на сайт разработчика компилятора для требуемого МК (ATmega, ESP8266 и т.п.) и читаем, какая среда требуется для компиляции проекта, и с какими опциями надо запустить компиляцию. Часто это будет быстрее и проще, чем пытаться подружить Arduino IDE с нужным МК. Да, для этого надо обладать определенным уровнем знаний не на уровне электрика.
2. Тоже самое можно сказать и о случае, если не происходит заливка HEX-файла в МК через ЗАГРУЗЧИК. Вводим в командной строке рекомендуемую для данного ЗАГРУЗЧИКа команду и получаем результат. Если результат отрицательный, то почти сразу знаем куда «копать». Либо проблема с драйверами ОС, либо дохлая ножка Rx, либо косяк разработчика и на худой конец – проблема в ДНК пользователя.
Вроде всё, о чем я рассказал, есть в интернете, но часто для начинающего ардуинщика непонятно, нужна ли ему некая информация и как ею воспользоваться. Это как на первом курсе универа нас пичкают производными, интегралами, матрицами и у студента растет естественное чувство «А нафига нам это надо?». А потом какой-нибудь практик возьмет и покажет, как использовать для решения реальных задач эту «вышку». И наступает «дзен». Вдруг резко всё, что валялось в голове в виде ненужного хлама, раскладывается по полочкам и ты понимаешь, что стал ИНЖЕНЕРОМ.

К сожалению это не всё, что надо бы знать начинающему ардуинщику. Кое-что расскажу о ЗАГРУЗЧИКЕ (bootloader) подробней.
Что же надо знать о ЗАГРУЗЧИКе, что бы осознанно им пользоваться?
1)Размер загрузчика.
2)Область памяти, в которую он загружается.
3)Фьюзы, которые должны быть использованы с загрузчиком.
4)Скорость для UART.
5)Частоту МК, под которую рассчитан ЗАГРУЗЧИК.
6)Ну и конечно же, под какой МК рассчитан ЗАГРУЗЧИК.
7)Внешнее проявление работающего ЗАГРУЗЧИКа.
8)Критерий для запуска ЗАГРУЗЧИКА.

1) Загрузчик имеет некий размер. Есть МК, у которых мало памяти, и разместить ЗАГРУЗЧИК просто нет места. Или место есть, но не останется места для программы пользователя. Загрузчик – это все таки только программа-посредник для нашего удобства.
2) В МК ATmega Загрузчик может заливаться (условно говоря) в одну из 4х верхних областей Flash-памяти.
3) Соответственно фьюзами задаем область памяти МК, в которой находится ЗАГРУЗЧИК, что бы МК знал, с какого адреса запускать программу в МК после «Reset» или другого события.
4) В экосистеме «Arduino» используется ЗАГРУЗЧИК по UART. А для этого протокола важна скорость. Если Загрузчик настроен на одну скорость обмена информацией, а программа-программатор(avrdude.exe) на другую, то загрузки HEX-файла в память МК не произойдет.
5) МК может работать с разными тактовыми частотами. Чем ниже частота – тем меньше потребляемая мощность. Если залить ЗАГРУЗЧИК, не рассчитанный на используемую МК тактовую частоту, то как минимум будет проблема в несогласованной скорости UART. Т.е. скетч вряд ли загрузится в МК, а если ЗАГРУЗЧИК без контроля ошибок, то может загрузиться черт знает что.
6) Типов МК очень много. ЗАГРУЗЧИК для МК AVR не подходит для МК PIC. Проблемы могут возникнуть даже для одинаковых МК, но в разных корпусах.
7) Очень не мешает знать, как ведет себя загрузчик в МК без пользовательской программы. Вот получили вы посылку из Китая с Arduino ProMini и как узнать есть в ней загрузчик или нет? А если есть описание, то можно прочитать, что при подаче питания или сбросе должен 5 раз мигнуть желтый светодиод. Не мигает? Значит нет загрузчика или у вас проблемы с платой.
8) Вообще-то ЗАГРУЗЧИК может активизироваться (начать свою работу, прервав работу основной программы) не только по сигналу сброса, но любым другим способом, который реализовал разработчик, например, замыканием выв. 5 МК на землю.

А теперь переведем полученную информацию в практическую плоскость.

1) Как узнать размер ЗАГРУЗЧИКА, находящегося в МК?
Если речь о загрузчике, залитом в плату ардуино (читай в МК ATmega8/168/328), то можно прочитать с помощью программы-программатора, например, AVRDUDESS и платы-программатора USBasp, Flash-память и фьюзы BOOTSZ0 и BOOTSZ1. Открыв сохраненный HEX-файл текстовым редактором, можно увидеть в младших адресах код пользовательской программы, потом незанятую память (FF) и в самых верхних адресах памяти (см строку 225) код загрузчика с адреса 1C00 и до признака конца 01FF. Таким образом можно узнать длину загрузчика в байтах, а потом перевести в длину в словах.

 

2)Как узнать размер ЗАГРУЗЧИКА, который мы хотим разместить в МК?
Открываем в текстовом редакторе HEX-файл, в котором хранится интересующий нас загрузчик. Видим приблизительно такую куртинку

Здесь пояснения как понимать полученные цифры

3)Что будет, если залить загрузчик и неправильно выставить фьюзы BOOTSZ0 и BOOTSZ1?
Надо иметь ввиду, что не любой загрузчик способен перезаписать сам себя. Почему так? Этот вопрос выходит за рамки данной статьи. Более того, вопрос поставлен не «как перезаписать загрузчик в МК средствами платформы Arduino IDE?», а о первичной записи в новый МК загрузчика и установке конкретных фьюзов BOOTSZ0 и BOOTSZ1, предполагая, что остальные фьюзы установлены гарантированно правильно.
Итак, первый раз загрузчик всегда прошивается аппаратным программатором (ISP), поэтому выставим ли сначала фьюзы BOOTSZ0 и BOOTSZ1, а потом зальем ЗАГРУЗЧИК или наоборот, значения не имеет, так как ISP-программатор будет загружать данные по адресам, указанным в HEX-файле. Но вот потом, после Reset, ATmega8 начнет выполнение программы с адреса 000, если фьюз BOOTRST=1, независимо от BOOTSZ0 и BOOTSZ1


Из таблицы видно, что если Загрузчик разместим не с нужного адреса или неправильно установим фьюзы, то Загрузчик не запустится должным образом. Под должным образом я подразумеваю запуск нештатным способом за счет других ошибок, которые «исправляют» начальные ошибки. Например, залили в ATmega8 ЗАГРУЗЧИК длиной 510 слов с адреса E02, т.е. как фьюзы BOOTSZ1 и BOOTSZ0 не выставляй, а при сбросе ЗАГРУЗЧИК не запустится (не получит управление МК). Или прошили ЗАГРУЗЧИК размером в 1000 слов с адреса C00, но фьюзы BOOTSZ1 и BOOTSZ0 выставили в 0 и 1. Тогда при сбросе счетчик команд будет установлен в E00 и какой-то участок кода ЗАГРУЗЧИКа запустится, но такой запуск может привести к непредсказуемым результатам.
4)Что будет, если ЗАГРУЗЧИК от ATmega8 залить в ATmega328?
С одной стороны ATmega8 и ATmega328 выводно совместимы, с другой – у них разный объем памяти, а ЗАГРУЗЧИК всегда размещается в конце памяти (в старших адресах). Поэтому, если мы перекомпилируем исходник загрузчика для ATmega8 под ATmega328, то нельзя говорить о том, что мы пытаемся залить ЗАГРУЗЧИК от ATmega8 в ATmega328. Другое дело, если мы попытаемся HEX-файл с ЗАГРУЗЧИКом от ATmega8 залить в ATmega328. Здесь ответ однозначный – данные зальются вовсе не в конец памяти ATmega328, где должен располагаться ЗАГРУЗЧИК, а в область пользовательской программы и никогда штатным образом ЗАГРУЗЧИК не получит управление (не запустится).

И о результате осознания и конечном итоге.
Теперь я знаю, что ЗАГРУЗЧИК optiboot_flash_atmega8_UART0_57600_8000000L.hex из проекта MiniCore, который я хочу залить в свою ATmega8L зальется с адреса 1E00, т.е. займет сектор памяти 1FFF-1E00=1FF (512байт или 256 слов). Соответственно я должен установить (в ноль) три фьюза следующим образом: BOOTRST=0, BOOTSZ1=0 и BOOTSZ0=1 (см таблицу выше)

Залил с помощью программы AVRDUDESS и USBasp-программатора
Как я говорил выше, ЗАГРУЗЧИК и Программа-программатор – это мама и папа одного разъема. И коль я прошил ЗАГРУЗЧИК (маму), то теперь надо настроить «папу»-ArduinoIDE, которой я должен «рассказать» 1) скорость UART, 2)марку МК, 3)Частоту тактирования процессора МК (требуется для правильной компиляции, а не для загрузки), 4)Место, где лежит HEX-файл прошитого ЗАГРУЗЧИКА. Зачем? Не знаю.
Отредактируем файл boards.txt. В разных версиях ArduinoIDE он имеет разный формат!!!
1)Название платы для меню в ArduinoIDE задаётся в строке с «.name=», например: 328.name=ATmega328 или atmegang.name=Arduino NG or older

2)За выбор названия МК для меню отвечает строка вида «.menu.cpu.atmega8=», например: atmegang.menu.cpu.atmega8=ATmega8 или 8.build.mcu=atmega8
К сожалению, все параметры для всех версий ArduinoIDE описать невозможно. Поэтому я показал соответствующие разделы файла boards.txt двух версий. Думаю по образцу и подобию Вы сможете доработать свою версию ArduinoIDE под свои ЗАГРУЗЧИКИ.

Проверим теорию на практике, для чего:
1)Зальем посредством USBasp в ATmega8 (на беспаечной плате) с кварцем 16МГц штатный загрузчик из состава ArduinoIDE «ATmegaBOOT-prod-firmware-2009-11-07.hex» (размер файла 2,8кБ), загрузка с адреса 1C00. Разъемы от плат-программаторов USBasp и USB-UART от беспаечной платы отключать не буду, что бы не перепутать при подключении. Проще отсоединить/присоединить к программаторам, которые надо обязательно отсоединять. Устанавливаю фьюзы L=FF, H=C0. Отключаю USBasp, смотрю на светодиод, подаю питание. Несколько раз быстро мигнул и более не светится. Значит загрузчик работает. Теперь зальем скетч BLINK штатным способом. Подключаюсь USB-UART и светодиод начинает вести себя совсем по другому- раз в 8 сек светится. Запускаю ArduinoIDE 1.6.6.0, устанавливаю Arduino NG…, ATmega8, порт, программатор AVRISP mkII. AVRDUDE 6.0.1 выдает кучу всякой информации (у меня так настроено), скорость 19200. Скетч прошивается и сразу начинает выполняться. Т.е. провода, фьюзы, настройки выполнены правильно.
2)По такой же методике выполним заливку загрузчика optiboot_flash_atmega8_UART0_115200_16000000L.hex, переименовав в «01.hex» и положив в каталог optiboot (размер файла 1,34кБ), загрузка с адреса 1E00. Поэтому фьюзы L=FF, H=C2. После заливки загрузчика светодиод начинает мигать несколько раз в секунду. Без программаторов (только питание) не светится, т.е. загрузчик не выдает своего присутствия. Добавляю секцию в файл boards.txt
##############################################################
#поместите HEX-файл в каталог optiboot

a8_16MHz_E.name=atmega8 (16 MHz_ExtOsc_115k)
a8_16MHz_E.upload.tool=avrdude
a8_16MHz_E.upload.protocol=arduino
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_size=7680
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_data_size=512
a8_16MHz_E.upload. speed=115200
a8_16MHz_E.bootloader.unlock_bits=0x3F
a8_16MHz_E.bootloader.lock_bits=0x0F
a8_16MHz_E.menu.cpu.atmega8.bootloader.low_fuses=0xff
a8_16MHz_E.menu.cpu.atmega8.bootloader.high_fuses=0xc2
a8_16MHz_E.bootloader.tool=avrdude
a8_16MHz_E.bootloader.path=optiboot
a8_16MHz_E.bootloader.file=01.hex
a8_16MHz_E.build.mcu=atmega8
a8_16MHz_E.build.f_cpu=16000000L
a8_16MHz_E.build.core=arduino
a8_16MHz_E.build.variant=standard
a8_16MHz_E.build.board=AVR_NG

Прошиваю штатным способом. Светодиод при наличии USB-UART не светится. При отключении преобразователя и подаче питания начинает мигать, т.е. скетч запустился.

3)Когда попытался повторить вышеописанное для загрузчика optiboot_flash_atmega8_UART0_115200_8000000L.hex потерпел неудачу. Штатным способом скетч не заливался. После долгих танцев с бубном, на основании которых и появился данный трактат, пришел к выводу, что косяк разработчика, так как те же действия для optiboot_flash_atmega8_UART0_38400_8000000L. hex привели к загрузке скетча штатным способом. Кроме того, посмотрев файл boards.txt, нашел в нем ошибки, например:
###################
#### ATmega8/A ####
###################

8.name=ATmega8
8.upload.tool=avrdude
8.upload.protocol=arduino
8.upload.maximum_size=7680
8.upload.maximum_data_size=1024!!!!!!!!!!!!!!!! Ошибка
8.menu.clock.16MHz_external.bootloader.high_fuses=0xc4!!!!!!!!!!!!ошибка
И нет для 8МГц скорости 115200, а нерабочий HEX-файл есть. Вот и верь разработчикам.

Извините, что не могу привести отличия форматов файла boards.txt в разных версиях ArduinoIDE, так как этим вопросом не занимался. Попробовал сделать под имеющуюся версию по образцу и подобию – получилось. Глубже не «копал».

Спасибо за внимание. Буду рад, если кому-то мои исследования оказались полезными.

P.S. В последних версиях в конфигурацию (boards.txt) начали прописывать vid и pid. Видимо жаба душит итальянцев. Берегите старые версии ArduinoIDE. А то будет как с хромом – негде скачать старую версию.

P.S.2 При прошивке скетча в МК в сообщениях об ошибках ArduinoIDE, а правильнее сказать AVRDUDE, может упоминаться протокол STK500. В штатном режиме работы мы выбираем программатор AVRISP mkII. А в меню еще есть AVR ISP, Arduino ISP, Arduino as ISP. В русскоговорящем интернете я не встречал объяснения «на пальцах» зачем такое обилие типов программаторов в ArduinoIDE и главное, чем они отличаются и когда какой использовать. Поэтому чувствую себя как лох в хорошем ресторане, перед которым положили 5 ложек и 5 вилок…. И все смотрят только на меня. Кое-что я нашел на сайте microsin, но у автора есть проблема с обозначением объекта. Это как безобъектный праздник «день независимости». Независимости кого, от чего? Каждый волен понимать как хочет. И многие этим пользуются. Но в технике нужна однозначность. Попробую объяснить «на пальцах» как понял я. Если не прав, то прошу поправить.
Итак, AVRISP mkII это плата-программатор от AVR для своих микроконтроллеров серий ATtinyXX, ATmegaXX и других с последовательным (не UART ) интерфейсом ISP (4 сигнальных провода MOSI, MISO, SCK, GND) (режим последовательного программирования на основе интерфейса SPI). Интересно, зачем нужны эти два интерфейса ISP и SPI в одном программаторе? Так как обмен данными между AVRISP mkII и компьютером PC происходит через интерфейс USB, а плата-программатор AVRISP mkII построена на основе AVR-USB162, AVR-USB162MU, AVR-USB32U4 и других, то требуется прошивка для используемого МК. Firmware для программатора AVRISP mkII, распространяется свободно. Понятно, что количество типов МК растет и хотелось бы, что бы плата-программатор AVRISP mkII умел с ними работать. Соответственно надо дорабатывать прошивку AVRISP mkII. Но AVRISP mkII должен общаться не только с программируемым (целевым) МК, но и компьютером. Так вот этот набор «слов для общения» называют протоколом. И эти протоколы тоже развиваются (STK500, STK600. AVRISP mkII во многом совпадает с протоколом STK600). До сих пор вроде понятно, если вспомнить, что на плате Arduino UNO использовался преобразователь-программатор на основе ATmega8U2. Но всякое понимание улетучивается, когда вспоминаем, что платы Arduino продаются с прошитым в основной МК загрузчиком. И нет никакого ISP (MOSI, MISO, SCK, GND). Всё общение происходит по интерфейсу UART, и даже нет необходимости эмулировать сигналы ISP. Тогда при чем AVRISP mkII?
А вот если мы обратим свой взор на стартеркит STK500 (что это такое?), то увидим, что обмен между STK500 и PC происходит через интерфейс RS232 (PC COM-порт)(тот же UART, только уровни сигналов +/- 12в, а не 0-5в). При этом STK500 использует следующие настройки порта: 115.2kbps, 8 data bits, 1 stop bit, no parity. Интерфейс на выходе программатора STK500 – ISP и PP. STK500 и AVRISP поддерживают тактовые частоты ISP от 4 кГц до 1.8 МГц.
Про UART и загрузчик – ни слова. Так почему AVRISP mkII?

Файлы:
ATmega8 Addressing the Flash
распределение памяти в атмега8
ATmega8 фьюзы Заводские и как должно стать
ATmega8 зависимость частоты от напряжения питания
AVRDUDESS фьюзы
Последовательное программирование
преобразователь usb-uart
Штатный загрузчик от Ардуино
03.hex
01. hex
04.hex
FLASH память-RWW-NRWW
USBasp-atmega8A-pin
Эта статья в ворд-формате
Работа с представленными загрузчиками
проверенная Blink РАБОЧАЯ секция
проверенная Blink РАБОЧАЯ секция3
проверенная Blink РАБОЧАЯ секция1
сообщения при удачной заливке скетча новым загрузчиком на 16МГц
сообщения при удачной заливке скетча штатным загрузчиком

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


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

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


Эти статьи вам тоже могут пригодиться:

Программирование Arduino Pro Mini с USBasp V2.0 · @ndrew

By Андрей Березовский

UPD 2016-05-14: Arduino Nano с Ch440 поставляется с Aliexpress по более низкой цене чем 2 доллара — я рекомендую вам купить его (если вы не знаете, что делаете).

Вам действительно нужно платить 25 долларов за Arduino? Многие из моих друзей имеют оригинальный Arduino, и они отлично работают, но я хотел посмотреть, насколько дешево я могу идти.Изначально я купил SunFounder Starter Kit, и он работал на 100% как рекламируется. Сегодня мы посмотрим, сможем ли мы получить полнофункциональный Arduino дешевле 5 долларов.

Недавно наткнулся на грязные дешевые клоны Arduino Pro Mini и решил купить один, чтобы увидеть, работает ли он! Еще получил клон программатора USBasp:

Наконец, во время семестрового перерыва у меня было время поиграть с ним. Ниже тебя найдет шаги, которые я должен был выполнить, чтобы запрограммировать Pro Mini от Arduino IDE.

Сначала вам нужно припаять контакты к Pro Mini. Я хотел сэкономить пробел и припаял боковые штыри к нижней стороне. В итоге доска не помещается в макет полностью. Итак, если вы собираетесь использовать его в основном в макете, примите это во внимание. Кроме того, некоторые контакты дублирован, так что возможно вам вообще не придется паять некоторые контакты.

Следующий шаг — вставить Pro Mini в макетную плату, а также подключить Контакты IDC-10 (см. Распиновку, обозначенную как Kabel ).

Источник: USB ISP Programmer für Atmel AVR (USBASP)

После подключения USBasp к USB-порту вы должны увидеть мигающий светодиод. (запрограммировано в Pro Mini на заводе), и VCC должен выводить правильное напряжение (3,3 В или 5 В, в зависимости от вашей версии Pro Mini):

Без нагрузки (Pro Mini), USPasp выдает правильные 5,00 В

Наконец, компьютерная часть (я использую Ubuntu 14.04 LTS). Если вы используете Windows, получите драйвер со страницы USBasp.Изменить следующие настройки в Arduino IDE:

  • В Инструменты> Программист выберите USBasp .
  • В разделе «Инструменты »> «Плата » выберите свою версию Arduino Pro или Pro Mini .

Наконец, вам нужно обновить правила udev , иначе вы столкнетесь с проблемы с разрешениями (больше правил в Arch Wiki):

$ cat /etc/udev/rules. d/41-arvdude.rules
# Правила программирования USBasp http: // www.fischl.de/usbasp/
SUBSYSTEMS == "usb", ATTRS {idVendor} == "16c0", ATTRS {idProduct} == "05dc", GROUP = "andrew", MODE = "0666"
 

Теперь загрузите образец эскиза в Файл> Примеры> 01. Основные сведения> Blink и затем используйте «Загрузить с помощью программатора ». Если вы не видите ошибок, поздравляю! Вы все еще можете столкнуться с предупреждением, похожим на это:

avrdude: предупреждение: невозможно установить период sck. пожалуйста, проверьте обновление прошивки usbasp.
 

Это может быть решено перепрограммированием самого программатора, как описано в статья Как обновить прошивку на USBasp V2.0. Вам понадобится другой программист для это, однако.

Если вы хотите продолжить взлом, но все еще ищете вдохновение, ознакомьтесь с этими ресурсами:

Использование AVR-USBasp для программирования Arduino

Как правило, существует два метода загрузки программы в Arduino:

  1. Метод USB / последовательной связи
  2. Метод ISP

Первый метод является наиболее распространенным методом, который реализуется с использованием Чип / преобразователь переходника USB-последовательный порт. Например, CT-UNO использует микросхемы FTDI FT23x, которые являются популярными микросхемами переходников USB-последовательный порт, а BBFuino требует преобразователя USB-последовательного порта UC00A для загрузки программы. В то время как оригинальный Arduino UNO использует Atmega32u4 в качестве микросхемы USB для последовательного интерфейса (аналогично CT-UNO). Метод, примененный к CT-UNO, может быть применен к Arduino UNO.

Другой метод — это метод ISP, где требуется программист ISP. ISP (внутрисистемное программирование) — это метод, используемый для программирования этих свежих пустых чипов Atmel AVR. Если в микросхемы Atmel AVR предварительно не загружена прошивка загрузчика, можно использовать метод ISP для загрузки программы в микросхемы; метод загрузчика работать не будет.Как и в руководствах «Использование ISP Programmer для записи загрузчика в Arduino» и «Запись загрузчика Arduino с AVR USBasp», мы использовали ISP для записи загрузчика в Arduino. Это руководство покажет вам, как загрузить программу в Arduino с помощью программатора ISP — AVR USBasp, и в этом руководстве есть 3 сеанса:

  1. Загрузка программы в CT-UNO
  2. Загрузка программы в BBFuino
  3. Загрузка программы в автономный Arduino

Введение

AVR USBasp — это внутрисхемный USB-программатор, который может использоваться для программирования большинства микроконтроллеров Atmel AVR. Он просто состоит из ATmega8 и пары пассивных компонентов, то есть резисторов, конденсаторов, светодиодов и т. Д. Этот программатор использует драйвер USB только для прошивки, и специальный контроллер USB не требуется. AVR USBasp поставляется с 6-жильным кабелем. На рисунках ниже показаны все отверстия в головке кабеля:

На этом рисунке показан вид сверху и помечены все отверстия. Обратите внимание на квадрат, указывающий, в какой ориентации находится ваш кабель.

Заголовок ISP состоит из 2×3 контактов.Вы заметите, что рядом с заголовком ISP есть метка «1» или метка стрелки. Эта метка указывает, что контакт рядом с ним является контактом 1 заголовка ISP.

Перед тем, как перейти к следующему шагу, убедитесь, что вы установили драйвер AVR USBasp на свой компьютер. Если нет, загрузите драйвер AVR USBasp и следуйте инструкциям в руководстве пользователя AVR USBasp.

Сессия 1: Загрузка программы в CT-UNO

  1. Вставьте разъем кабеля программатора ISP в заголовок ISP. Пластиковый наконечник радужной кабельной головки и метка со стрелкой должны находиться на одной стороне. Вы заметите, что светодиод PWR горит. Если это не так, проверьте соединение между головкой кабеля и разъемом ISP.
  2. Откройте программное обеспечение Arduino IDE. Если вы используете старую версию Arduino IDE, вы можете получить некоторую ошибку. Загрузите последнюю версию с сайта Arduino. Я использую Arduino IDE версии 1.0.5, и она отлично работает.
  3. Затем вызовите любой пример исходного кода. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.

    Набросок примера Blink:
  4. Выберите «USBasp» в меню «Инструменты»> «Программист».
  5. Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки займет минуту.

    Если вы выберете «Загрузить» или нажмете кнопку «Загрузить», вы получите сообщение об ошибке, как показано на рисунке ниже. Это связано с тем, что AVR USBasp не установлен в качестве последовательного порта на нашем ПК, а функция «Загрузить» означает загрузку программы через последовательный порт. Не волнуйтесь, IDE все равно будет загружать через USBasp.
  6. Процесс загрузки завершается, когда Arduino IDE отображает «Готово».

Сессия 2: Загрузка программы в BBFuino

BBFuino использует ATmega328 IC вместо ATmega328P этот учебник написан).

Разница между ATmega328 и ATmega328P в том, что ATmega328P имеет технологию Atmel picoPower, а ATmega328 — нет. Идентификационная подпись ATmega328 и ATmega328P также различается.ATmega328 имеет подпись 0x1E 0x95 0x14 , а ATmega328P имеет подпись 0x1E 0x95 0x0FB . В остальном ATmega328 и ATmega328P архитектурно идентичны во всех смыслах. Чтобы загрузить скетчи в ATmega328, необходимо немного изменить конфигурацию:

  1. Найдите свой каталог Arduino. В моем случае мой каталог Arduino — C: \ Users \ user \ Desktop \ arduino-1.0.5
    Затем найдите каталог hardware \ tools \ avr \ etc. Вы заметите, что есть файл с именем «avrdude. conf »внутри этого каталога.
  2. Сделайте копию файла «avrdude.conf» для резервного копирования.
  3. Откройте файл «avrdude.conf» с помощью WordPad.
  4. Найдите «m328p».
  5. Ищите «подпись». Под «m328p» должно быть несколько строк.

    Изменить 0x1e 0x95 0x0f на 0x1e 0x95 0x14

  6. Нажмите «Сохранить», чтобы сохранить отредактированный файл конфигурации и закрыть его. Теперь вы изменили конфигурацию Arduino IDE.

Затем подключите головку кабеля программатора ISP к заголовку ISP BBFuino. Пластиковый выступ на головке кабеля «радуга» должен находиться на той же стороне, что и этикетка «ISP» на BBFuino.

Процедура загрузки эскизов в BBFuino аналогична сеансу 1:

  1. Откройте программное обеспечение Arduino IDE и вызовите любой пример. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.
  2. Выберите «USBasp» в меню «Инструменты»> «Программист».
  3. Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки завершается, когда в Arduino IDE отображается сообщение «Выгрузка завершена».

Сессия 3: Загрузка программы в автономную Arduino

В этом сеансе требуется следующее оборудование:

Создайте схему автономной Arduino, как показано ниже:

Рисунки ниже будут Хорошая ссылка при подключении AVR USBasp и автономной Arduino:

Источник: Arduino.cc

На автономной Arduino нет заголовка ISP. Поэтому мы используем перемычку «папа-папа», чтобы выполнить некоторую проводку между кабельной головкой и автономным Arduino. См. Информацию о подключении в таблице ниже:

VCC

Программатор ISP

Кабельная головка

Автономный Arduino
Контакт 1: MISO PB4 (MISO / цифровой контакт 12) Контакт
VCC
Контакт 3: SCK PB5 (SCK / цифровой контакт 13)
Контакт 4: MOSI PB3 (MOSI / цифровой контакт 11)
Контакт 5: СБРОС PC6 (СБРОС)
Контакт 6: GND GND


Процедура загрузки эскизов в автономную Arduino аналогична сеансу 1. Выберите «USBasp» в меню «Инструменты»> «Программист» и выберите «Загрузить с помощью программатора».

Процесс загрузки завершен, когда в Arduino IDE отображается сообщение «Done uploading».

Отлично! Я закончил рассказывать о методе ISP для загрузки скетчей в Arduino, надеюсь, это будет полезно, и если у вас есть какие-либо вопросы, обсудите их на нашем техническом форуме, так как мы редко проверяем раздел комментариев на сайте руководства. Обратите внимание, что для этого метода существует ограничение, то есть прошивка загрузчика заменяется исходным кодом примера мигания.Чтобы вернуться к загрузке эскизов через USB, вам нужно записать загрузчик в чип на плате Arduino. Обратитесь к разделу Запись загрузчика Arduino с помощью AVR USBasp, чтобы записать загрузчик на Arduino с помощью AVR USBasp.

Ошибка загрузки USBasp pro16MHzatmega328 — Платформы разработки

Хм… Я просто попробовал себя, так как скоро буду заниматься программированием ISP с помощью pro mini… и сам обнаружил ошибку несоответствия проверки в PlatformIO, но не в Arduino IDE. Но я не могу получить дамп журнала для platformio, так как после того, как я дважды проверил в Arduino IDE, что он загружается нормально, когда я вернулся и сделал подробную загрузку в platformio, он работал нормально! : — / В любом случае, вот журналы моих загрузок для справки, которые могут быть полезны, если OP может предоставить журналы того, что он все еще не работает.

Подробный вывод выгрузки Arduino:

  Глобальные переменные используют 9 байтов (0%) динамической памяти, оставляя 2039 байтов для локальных переменных. Максимум 2048 байт.
/opt/arduino-1.8.8/hardware/tools/avr/bin/avrdude -C / opt / arduino-1.8.8 / hardware / tools / avr / etc / avrdude.conf -v -patmega328p -cusbasp -Pusb -Uflash : w: /tmp/arduino_build_740020/sketch_jan23a.ino.hex: i

avrdude: версия 6.3-20171130
         Авторские права (c) Брайан Дин, 2000-2005 гг., Http://www.bdmicro.com/
         Copyright (c) 2007-2014 Йорг Вунш

         Общесистемный файл конфигурации - "/ opt / arduino-1. 8.8 / оборудование / инструменты / avr / etc / avrdude.conf "
         Файл конфигурации пользователя: /home/pfeerick/.avrduderc
         Файл конфигурации пользователя не существует или не является обычным файлом, пропускаем

         Использование порта: usb
         Использование программатора: usbasp
         Часть AVR: ATmega328P
         Задержка стирания чипа: 9000 мкс
         СТРАНИЦА: PD7
         BS2: PC2
         Расположение RESET: выделено
         ПОВТОРНЫЙ импульс: SCK
         последовательный программный режим: да
         режим параллельной программы: да
         Тайм-аут: 200
         StabDelay: 100
         CmdexeDelay: 25
         SyncLoops: 32
         ByteDelay: 0
         PollIndex: 3
         PollValue: 0x53
         Детали памяти:

                                  Заблокировать страницу опроса
           Тип памяти Режим Задержка Размер Indx Paged Size Size # Страницы MinW MaxW ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ----- - ----- ----- ---------
           eeprom 65 20 4 0 нет 1024 4 0 3600 3600 0xff 0xff
           вспышка 65 6128 0 да 32768128256 4500 4500 0xff 0xff
           lfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
           hfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
           efuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
           блокировка 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
           калибровка 0 0 0 0 нет 1 0 0 0 0 0x00 0x00
           подпись 0 0 0 0 нет 3 0 0 0 0 0x00 0x00

         Тип программатора: usbasp
         Описание: USBasp, http: // www. fischl.de/usbasp/

avrdude: автоматическая установка периода sck (поскольку заданный равен нулю)
avrdude: устройство AVR инициализировано и готово принимать инструкции

Чтение | ############################################### | 100% 0,00 с

avrdude: подпись устройства = 0x1e950f (возможно, m328p)
avrdude: ПРИМЕЧАНИЕ: указана "flash" память, будет выполнен цикл стирания
         Чтобы отключить эту функцию, укажите параметр -D.
avrdude: стирающий чип
avrdude: автоматическая установка периода sck (поскольку заданный равен нулю)
avrdude: чтение входного файла "/ tmp / arduino_build_740020 / sketch_jan23a.ino.hex "
avrdude: запись flash (1004 байта):

Написание | ############################################### | 100% 0,66 сек

avrdude: записано 1004 байта флеш-памяти
avrdude: проверка флэш-памяти на соответствие /tmp/arduino_build_740020/sketch_jan23a.ino.hex:
avrdude: загрузить данные флэш-памяти из входного файла /tmp/arduino_build_740020/sketch_jan23a.ino.hex:
avrdude: входной файл /tmp/arduino_build_740020/sketch_jan23a. ino.hex содержит 1004 байта
avrdude: чтение встроенных флеш-данных:

Чтение | ############################################### | 100% 0.38 с

avrdude: проверяем ...
avrdude: проверено 1004 байта флэш-памяти

avrdude сделано. Спасибо.
  

Подробный вывод выгрузки PlatformIO:

  ------------------------------------------------ -------------------------------------------------- -------------------------------------------------
КОНФИГУРАЦИЯ: https://docs.platformio.org/page/boards/atmelavr/pro16MHzatmega328.html
ПЛАТФОРМА: Atmel AVR> Arduino Pro или Pro Mini ATmega328 (5 В, 16 МГц)
ОБОРУДОВАНИЕ: ATMEGA328P 16 МГц 2 КБ ОЗУ (30 КБ флэш-памяти)
Поиск зависимостей библиотеки -> http: // bit.ly / configure-pio-ldf
РЕЖИМЫ LDF: СОВМЕСТИМОСТЬ FINDER (цепочка) (мягкая)
Собрано 24 совместимых библиотеки
Сканирование зависимостей ...
Нет зависимостей
MethodWrapper (["checkprogsize"], [".pioenvs / pro16MHzatmega328 / firmware.elf"])
Использование памяти -> http://bit. ly/pio-memory-usage
ДАННЫЕ: [] 0,4% (использовано 9 байт из 2048 байт)
ПРОГРАММА: [] 3,3% (использовано 1004 байта из 30720 байтов)
.pioenvs / pro16MHzatmega328 / firmware.elf:
адрес размера раздела
.data 0 8388864
.текст 1004 0
.bss 9 8388864
.комментарий 17 0
.note.gnu.avr.deviceinfo 64 0
.debug_aranges 64 0
.debug_info 1866 0
.debug_abbrev 1482 0
.debug_line 258 0
.debug_str 520 0
Итого 5284
<лямбда> (["загрузить"], [".pioenvs / pro16MHzatmega328 / firmware.hex"])
В НАЛИЧИИ: usbasp
ТЕКУЩИЙ: upload_protocol = usbasp
BeforeUpload (["загрузить"], [".pioenvs / pro16MHzatmega328 / firmware.hex "])
avrdude -v -p atmega328p -C /home/pfeerick/.platformio/packages/tool-avrdude/avrdude.conf -c usbasp -D -U flash: w: .pioenvs / pro16MHzatmega328 / firmware.hex: i

avrdude: Версия 6.3, скомпилирована 12 сентября 2016 года в 15:21:49
Авторские права (c) Брайан Дин, 2000-2005 гг., Http://www.bdmicro.com/
Copyright (c) 2007-2014 Йорг Вунш

Общесистемный файл конфигурации: "/home/pfeerick/.platformio/packages/tool-avrdude/avrdude. conf"
Файл конфигурации пользователя: /home/pfeerick/.avrduderc
Файл конфигурации пользователя не существует или не является обычным файлом, пропускаем

Использование порта: usb
Использование программатора: usbasp
Часть AVR: ATmega328P
Задержка стирания чипа: 9000 мкс
СТРАНИЦА: PD7
BS2: PC2
Расположение RESET: выделено
ПОВТОРНЫЙ импульс: SCK
последовательный программный режим: да
режим параллельной программы: да
Тайм-аут: 200
StabDelay: 100
CmdexeDelay: 25
SyncLoops: 32
ByteDelay: 0
PollIndex: 3
PollValue: 0x53
Детали памяти:

Заблокировать страницу опроса
Тип памяти Режим Задержка Размер Indx Paged Size Size # Страницы MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ----- - ----- ----- ---------
eeprom 65 20 4 0 нет 1024 4 0 3600 3600 0xff 0xff
вспышка 65 6128 0 да 32768128256 4500 4500 0xff 0xff
lfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
блокировка 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00
калибровка 0 0 0 0 нет 1 0 0 0 0 0x00 0x00
подпись 0 0 0 0 нет 3 0 0 0 0 0x00 0x00

Тип программатора: usbasp
Описание: USBasp, http: // www. fischl.de/usbasp/

avrdude: автоматическая установка периода sck (поскольку заданный равен нулю)
avrdude: устройство AVR инициализировано и готово принимать инструкции

Чтение | ############################################### | 100% 0,00 с

avrdude: подпись устройства = 0x1e950f (возможно, m328p)
avrdude: safemode: hfuse читается как DA
avrdude: safemode: efuse читается как FD
avrdude: чтение входного файла ".pioenvs / pro16MHzatmega328 / firmware.hex"
avrdude: запись flash (1004 байта):

Написание | ############################################### | 100% 0.67с

avrdude: записано 1004 байта флеш-памяти
avrdude: проверка флэш-памяти на соответствие .pioenvs / pro16MHzatmega328 / firmware.hex:
avrdude: загрузить данные флэш-памяти из входного файла .pioenvs / pro16MHzatmega328 / firmware.hex:
avrdude: входной файл .pioenvs / pro16MHzatmega328 / firmware.hex содержит 1004 байта
avrdude: чтение встроенных флеш-данных:

Чтение | ############################################### | 100% 0,39 с

avrdude: проверяем . ..
avrdude: проверено 1004 байта флэш-памяти

avrdude: safemode: hfuse читается как DA
avrdude: safemode: efuse читается как FD
avrdude: safemode: Предохранители исправны (E: FD, H: DA, L: FF)

avrdude сделано.Спасибо.

================================================== ========= [УСПЕХ] Потребовалось 1,83 секунды =================================== ========================
  

Перепрограммирование OpenSprinkler (FTDI) «RAYSHOBBY.NET

Загрузить программу с помощью FTDI (для OpenSprinkler v1.1 / v1.0)

Где взять программиста (оборудование)

  • Кабель FTDI доступен на многих веб-сайтах, таких как Digikey, Mouser, MakerShed.Вы также можете получить прорыв FTDI от SparkFun, друга FTDI от Adafruit или USB BUB от Modern Device. Все они отлично работают.
  • AVR ISP programmer действительно удобен, если вам нужно записать новый загрузчик или загрузить программу без загрузчика. Для этого я бы рекомендовал программатор USB AVR от Pololu.

    Вы также можете использовать программатор USBasp , широко доступный на eBay и в других магазинах, таких как SuntekStore.com. Этот программатор намного дешевле (~ 4 доллара) и основан на микроконтроллере Atmel AVR.Вы можете использовать его для загрузки загрузчика или загрузки программы непосредственно в OpenSprinkler без какого-либо загрузчика. Если версия, которую вы получаете, имеет 10-контактный (2 × 5) разъем, вам необходимо получить преобразователь, чтобы преобразовать его в 6-контактный (2 × 3) заголовок. Для получения информации о том, как использовать программатор USBasp для записи загрузчика или программы, посетите веб-сайт Arduino.

  • Если у вас уже есть под рукой плата Arduino , то вам не понадобится дополнительный программатор. Все, что вам нужно сделать, это вынуть ATMEGA328 из OpenSprinkler (под ЖК-дисплеем) и вставить его в плату Arduino.Затем вы можете запрограммировать его так же, как программирование стандартного Arduino (вам нужно выбрать Arduino Pro или Pro Mini (3,3 В, 8 МГц) из меню Tools-> Boards , как описано ниже). Как только вы закончите, вставьте микроконтроллер обратно в OpenSprinkler, и все готово.

Установить Optiboot (программное обеспечение)
В MCU предварительно запрограммирован загрузчик Optiboot. Он похож на стандартные загрузчики Arduino, но имеет много улучшений, включая меньший размер и поддержку сторожевого таймера.Следовательно, чтобы загрузить новую программу, вам необходимо установить Optiboot в каталог программного обеспечения Arduino.

MCU в контроллере спринклера — это Atmega328, работающий на частоте 8 МГц. Это совместимо с платой Arduino Pro (также с платой LilyPad Arduino). К сожалению, на данный момент Optiboot с вышеуказанного веб-сайта содержит несколько ошибок, которые вызывают проблемы для 8MHz Arduinos. Поэтому вы должны скачать версию по ссылке ниже, в которой исправлены эти ошибки.

Разархивируйте файл в папку оборудования Arduino .Например, C: \ arduino-0022 \ hardware . На всякий случай у вас должна быть папка optiboot параллельно с двумя другими папками с именами , arduino и tools .

Загрузить программу с помощью FTDI
Запустите Arduino IDE, и в разделе Tools-> Boards вы должны увидеть список опций, предварительно зафиксированных с помощью «[Optiboot]». Вы должны выбрать

[Optiboot] Arduino Pro или Pro Mini (3,3 В 8 МГц) с ATmega328

, и теперь вы можете загрузить программу с помощью кабеля FTDI.На рисунке ниже показан SparkFun FTDI Basic, подключенный к 6-контактному разъему. Общие инструкции по использованию FTDI можно найти в онлайн-руководствах, таких как этот.

Перейдите в Файл-> Примеры-> OpenSprinkler и выберите любую программу-пример (например, interval_program). Наконец, нажмите кнопку Загрузить, чтобы загрузить. Смотрите скриншоты ниже:

Загрузите программу с использованием существующей платы Arduino (необязательно)
Если у вас уже есть плата Arduino, вам не понадобится дополнительный программист.Вы можете просто вынуть имеющийся ATMEGA328 на плате Arduino, переключить его с помощью ATMEGA328 из OpenSprinkler (он расположен под ЖК-экраном). Затем вы можете следовать тем же инструкциям, указанным выше, чтобы загрузить программу (обратите внимание, что вам нужно выбрать Arduino Pro или Pro Mini (3,3 В, 8 МГц) из меню Tools-> Boards , как описано выше). По сути, для программирования используется преобразователь USB-TTL на плате Arduino. Как только вы закончите, верните MCU в OpenSprinkler, и все готово.

Загрузить программу с помощью AVR ISP Programmer (необязательно)
Вы также можете загрузить программу в MCU с помощью AVR ISP Programmer. 2×3-контактный разъем ISP расположен в центре печатной платы. Обратите внимание на белую полосу слева, которая должна совпадать с полосой на кабеле программатора.

ПРИМЕЧАНИЕ : MCU, входящий в ваш комплект, имеет номер модели ATmega328-PU. Это немного отличается от ATmega328P-PU, используемого в стандартных Arduinos. Технически они одинаковы (версия P более энергоэффективна), но имеют разные сигнатуры.Если вы используете avrdude для загрузки программы, используйте опцию -F , чтобы игнорировать проверку подписи.

Чтобы загрузить программу с помощью программатора ISP, следуйте этим инструкциям:

  1. Сначала закройте программу Arduino, если она открыта.
  2. Убедитесь, что ваш программатор указан в arduino-0022 \ hardware \ arduino \ programmers.txt . Если нет, вам нужно добавить запись. Например, для программатора USBasp добавьте следующие две строки:

    usbasp.name = USB asp
    usbasp.protocol = usbasp

    Если вы используете USBasp в Linux, вам необходимо выполнить следующие действия, чтобы изменить разрешение устройства, чтобы вы могли использовать его как пользователь без полномочий root.
  3. Откройте файл arduino-0022 \ hardware \ optiboot \boards.txt , найдите блок для [Optiboot] Arduino Pro или Pro Mini (3,3 В, 8 МГц) с ATmega328 и внесите следующие изменения:

    # pro328o.upload.protocol = stk500
    # pro328o.upload.maximum_size = 31744
    pro328o. upload.using = arduino: usbasp # имя вашего ISP-программиста в programmers.txt
    pro328o.upload.maximum_size = 32768

    Другими словами, закомментируйте первые две строки и добавьте вторые две строки.
  4. Следуйте инструкциям в следующем разделе, чтобы изменить код подписи.
  5. Наконец, подключите программатор ISP, запустите Arduino, загрузите программу и нажмите «Загрузить». Светодиоды на вашем программаторе должны начать мигать, показывая, что программа загружается в микроконтроллер.

Запись загрузчика с помощью AVR ISP Programmer (необязательно)
Обычно записывать загрузчик не требуется. Но если по какой-то причине ваш загрузчик поврежден, вы можете перезаписать его с помощью программатора AVR ISP. Этот процесс аналогичен загрузке программы с помощью программатора ISP, как описано выше. Если вы используете Arduino IDE для записи загрузчиков, вам необходимо сначала отредактировать файл avrdude. conf , чтобы избежать ошибки проверки подписи.Этот файл находится в каталоге arduino-0022 \ hardware \ tools . Откройте его и найдите раздел ATmega328 . Измените подпись с 0x1e 0x95 0x0F на 0x1e 0x95 0x14 . Теперь вы должны иметь возможность записать загрузчик через IDE Arduino. Как только вы закончите, измените подпись на исходное значение.

FOTA (беспроводное программирование) | MySensors

Беспроводная прошивка, FOTA , позволяет загружать прошивку (эскиз) по беспроводной сети .Это может быть полезно, если ваши узлы недоступны и вы хотите обновить прошивку или изменить какую-то жестко записанную конфигурацию.

FOTA может быть реализован по-разному при использовании микроконтроллера Esp8266, 8-битного 328p (например, Arduino Pro mini и т. Д.) Или ARM.

Давайте покажем вам, как начать работу с этой замечательной функцией.

Загрузчик FOTA

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

Примечание новичков: вкратце, загрузчик — это фрагмент кода, который выполняется при сбросе / запуске и позволяет загружать прошивку с помощью USB или других методов вместо использования AVRSPI.

В Mysensors мы можем использовать два вида FOTA:

  • 1-й вариант: MYSBootloader, созданный Tekka из команды Mysensors.
  • 2-й вариант: Dualoptiboot, который поставляется Lowpowerlab и является загрузчиком, используемым в Sensebender Micro.

MYSBootloader не требует внешней вспышки. Обновления FOTA передаются в автономном режиме, то есть MYSBootloader связывается с контроллером и получает новый FW, который напрямую записывается в MCU, после передачи FW и проверки CRC MYSBootloader передает новый эскиз / FW.

MYSBootloader по умолчанию использует канал 76. Чтобы сменить канал, необходимо скомпилировать новый загрузчик.

  • Pro: восстановление FOTA возможно, также с ошибочным / ошибочным эскизом (если эскиз зависает, сбрасывается сторожевой таймер и берет на себя загрузчик MYSBootloader), внешняя вспышка не требуется
  • Минусы: зависит от радио, т. е. требуется другой загрузчик для радио RF24 и RFM69 (RFM69 работает в процессе), офлайн (обработка данных датчика невозможна во время fota). Основная ветвь MySensors не поддерживает загрузку через ftdi / serial (но ветка разработки поддерживает).

Dualoptiboot требует внешней флэш-памяти: обновления FOTA передаются онлайн, то есть пока узел активен. После передачи всех пакетов FW и проверки CRC узел перезагружается, dualoptiboot копирует FW с внешней флэш-памяти на MCU и передает новый эскиз / FW. Это также означает, что вам нужно ftdi загрузить свой эскиз узла в первый раз, иначе fota еще не будет работать, поскольку она обработана в эскизе.

  • Pro: Независимость от радио (в загрузчике нет специального кода для радио, поэтому его можно использовать в разных схемах / протоколах..), онлайн (пока узел обрабатывает данные датчиков)
  • Минусы: Неисправное FW (например, зависание эскиза из-за неправильного кодирования) не может быть восстановлено FOTA => требуется восстановление через последовательный порт, требуется внешняя флэш-память

Что вам понадобится

В общем, вам понадобится это:

Если вы хотите использовать загрузчик DualOptiboot, вам потребуется:

Теперь вы должны увидеть плату Sensebender Micro в Boards \ tools Arduino Ide.

Запись загрузчика

Здесь мы используем Usbasp для программирования загрузчика.Это простой в использовании и дешевый инструмент. Подключите программатор Usbasp к устройству «Arduino».

Что выглядит usbasp (клон, технология USBASP 2.0 LC) и подключения к вашему arduino или node

Разъем Arduino Nano / Micro / 328p / Sensebender и т. Д.
MOSI D11
VTG VCC 3,3 В
ЗЕМЛЯ ЗЕМЛЯ
РЭС СБРОС
SCK D13
MISO D12

Вот видео, описывающее процесс записи загрузчика.

После подключения сожгите предохранители с помощью Avrdudess. Вот конфигурация устройства с внутренним генератором 8 МГц:

Вот для устройства с внешним генератором 16 МГц:

Примечание: даже если вы используете клон Usbasp, выберите подлинный Usbasp в списке.

  1. Нажмите кнопку «Запись» в разделе «Предохранители и запорные биты». Затем прочтите его, чтобы убедиться, что предохранители хорошо сгорели. Теперь не отключайте свой Usbasp.
  2. Перейдите в Arduino Ide, в Board Manager выберите SensebenderMicro, если вы хотите использовать загрузчик DualOptiboot FOTA.Или выберите Arduino Mini pro MYSBootloader
  3. Затем выберите Processeur Atmel328 8Mhz, USBASP As programmer.
  4. Щелкните Сервис \ Записать загрузчик. Вы получите несколько предупреждений SCK, но это не проблема, потому что это клон Usbasp.

Ага, сгорел наш загрузчик FOTA.

Если вы получаете сообщение об ошибке

Некоторые версии IDE Arduino не видят файл USBasp. Если вы получаете сообщение об ошибке, подобное изображенному на скриншоте выше, исправление размещено здесь: http: // forum.arduino.cc/index.php?topic=415210.msg2862244#msg2862244

Примечания:

  • вы также можете использовать Avrdudess для записи загрузчика.
  • DualOptiboot: внутренняя 8 МГц + 1,8 В.

Включение FOTA в скетче (только DualOptiboot)

Чтобы включить FOTA в ваш скетч, вам нужно добавить

  #define MY_OTA_FIRMWARE_FEATURE  

Управление FOTA полностью прозрачно. Все хорошо обрабатывается Mysensors lib в process () и wait ()

Но важно отметить:

  • Не забывайте, что спящий узел не может получить FOTA.Вы можете, например, подождать после пробуждения, чтобы узнать, не придет ли что-нибудь, или есть функция smartsleep (), которая управляет wait () после пробуждения.

В случае Dualoptiboot (не относится к MYSBootloader, так как это автономная FOTA):

  • Когда вы загружаете новый скетч, это делается во время выполнения, поэтому вам нужно обработать / оптимизировать это в скетче. Лучше всего, если вы обнаружите сообщение FOTA, чтобы приостановить процесс или показания датчиков во время процесса, иначе это повлияет на скорость FOTA. Например, если вы читаете датчики, иногда бывают задержки в библиотеках, все это задерживает FOTA или таймаут во время основного цикла. Кроме того, если эта оптимизация не выполнена и вы работаете от батареи, чем дольше будет время в радио TX / RX для обновления, тем больше энергии будет потрачено впустую.
  • FOTA может быть быстрой 15-30 секунд, если ее ничто не замедляет, или x минут, если она не оптимизирована. Так что вам решать, как управлять этим, использование неблокирующего / асинхронного кода всегда является хорошей идеей. В остальном процесс полностью прозрачен.Большой!

Как загрузить новый скетч только с FOTA

Вам нужно будет использовать файл .hex вместо .ino.

Чтобы легко получить этот файл: в Arduino ide перейдите в File \ Preferences \, внизу щелкните на файле preferences.txt. Открывается файл preferences.txt.

  1. Оставьте этот файл открытым и закройте Arduino ide (в противном случае ваши изменения будут стерты).
  2. В файле preferences.txt в конце добавьте
      build.path = C: \ Arduino-Output \  
    или другой предпочтительный путь.Это будет папка вывода для ваших скомпилированных файлов эскизов .hex. Закройте диалоговое окно.
  3. Откройте Arduino ide и скомпилируйте / проверьте свой проект узла. Теперь вы должны увидеть свои скомпилированные файлы в папке, которую вы установили ранее.
  4. Скопируйте .hex в путь к прошивке MYSController, если вы его используете.

Запустите обновление FOTA

  1. Откройте MYSController, перейдите в Config / Serial, проверьте правильный последовательный COM-порт для вашего GW.
  2. Нажмите «Обновить репозиторий FW», чтобы использовать новый.шестнадцатеричный файл.

Примечание: , если вы не видите свой .hex, вы также можете сделать это: В папке Firmware отредактируйте firmware_config.csv и вручную добавьте свой .hex. Вот пример, в котором я добавил файл Humidity . hex для тестов.

  Тип, имя, версия, файл, комментарии
10, Blink, 1, Blink.hex, пример мигания
20, TimeReporter, 1, TimeReporter.hex, TimeReporter
100, Sensebender Micro, 1, SensebenderMicro.cpp.hex, Sensebender Micro
110, Sensebender Blink, 1, SensebenderBlink.cpp.hex, Sensebender Blink
120, Sensebender HumidityTest, 1, Датчик влажности.cpp.hex, HumidityTest  
  1. Теперь, чтобы отправить новый эскиз на ваш узел по беспроводной сети, просто щелкните правой кнопкой мыши узел, который хотите обновить. Для спящего узла батареи выберите «Спящий режим с питанием от батареи». Поэтому, когда ваш узел проснется, MYSController повторно отправит обновление. Потрясающие!
  2. Нажмите Assign FW,
  3. Выберите свой .hex эскиз

Вуаля! FOTA должна запуститься, затем ваш узел перезагрузится и запустит новую прошивку.

Начало работы с новыми чипами ATtiny — Программирование ATtiny серии 0 и 1 серии Microchip с помощью Arduino IDE

Несколько лет назад Microchip / Atmel объявила о выпуске совершенно новой линейки чипов, предназначенных для замены их более старые серии ATmega и ATtiny . Новые чипы ATtiny начались с 1-й серии, которая включала ATtiny417 и ATtiny817, , за которой в 2018 году последовали более дешевые микроконтроллеры серии 0, которые включали такие микроконтроллеры, как ATtiny1604 и ATtiny402. Новый модельный ряд микроконтроллеров теперь состоит всего из 25 частей. Однако для производителей, любителей DIY и поклонников платформы разработки Arduino это не было праздником, поскольку не было поддержки, позволяющей программировать mcus с использованием Arduino IDE.Однако это изменилось несколько месяцев назад, когда megaTinyCore был выпущен в качестве ядра Arduino для поддержки программирования новой линейки микроконтроллеров Atmel. В сегодняшнем руководстве мы рассмотрим процесс использования megaTinyCore для программирования одного из этих новых микроконтроллеров ATtiny с помощью Arduino IDE.

Выбор новых микросхем ATtiny: SOIC ATtiny412, ATTiny1614 и ATtiny3216; QFN ATtiny1616 и ATtiny3217. (изображение: technoblogy.com)

MegaTinyCore — это ядро ​​Arduino для программирования новой серии микроконтроллеров Microchip с помощью Arduino IDE. Ядро основано на работе, проделанной командой Arduino во время разработки поддержки для своих новых плат на базе ATmega4809. В то время как ядро ​​предоставляло все необходимое для компиляции кода для новых плат серии микрочипов, все еще оставалась небольшая проблема, поскольку ATtiny 0- и 1-серий могут быть запрограммированы только через унифицированный программный и отладочный интерфейс (UPDI) (a 1-проводный интерфейс с использованием вывода сброса на ATtiny), потому что у них нет загрузчика, и поэтому они не могут быть запрограммированы через ISP или с помощью программистов ISP.Чтобы решить эту проблему, пользователь GitHub ElTangas написал программатор UPDI, который можно загрузить на Arduino Uno или аналогичную плату, чтобы превратить плату в программатор UPDI для платы новой серии, давая пользователям возможность не только разрабатывать свой код с помощью Arduino IDE, но также загружают код в свой целевой микроконтроллер, используя плату Arduino в качестве программиста, полностью устраняя необходимость в студии Atmel в процессе разработки.

На основании вышеизложенного в этом руководстве показано, как настроить плату Arduino в качестве программатора UPDI Programmer , а также процесс настройки megaTinyCore в среде Arduino IDE.

Необходимые компоненты

Для работы с этим руководством потребуются следующие компоненты:

  1. Attiny412
  2. Arduino Uno или nano
  3. Adafruit 8-контактный SOIC
  4. 4.7k Резистор
  5. Конденсатор 1уф
  6. Макет
  7. Провода перемычки

Ни одно из новых устройств ATtiny не доступно в DIP-корпусах, поэтому для их подключения на макетной плате вам понадобится своего рода коммутационная плата, поэтому для этого используется 8-контактный SOIC Adafruit.Для микроконтроллеров с большим количеством контактов вы можете проверить их 14- и 20-контактную плату SOIC или эту 24-контактную плату VQFN на Amazon. Все эти компоненты можно купить в большинстве интернет-магазинов электронных компонентов.

После установки всех компонентов мы можем начать с установки megaTinyCore на Arduino IDE.

Установка MegaTinyCore

Для megaTinyCore требуется Arduino IDE версии 1.6.3 или более поздней, хотя на его странице GitHub было заявлено, что может потребоваться гораздо более новая версия IDE, но первоначальный тест проводился с версией 1.8.9.

MegaTinyCore можно установить в IDE Arduino двумя способами;

  1. Установка через Arduino Board Manager
  2. Ручная установка

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

1. Установка через Arduino Board Manager

Менеджер плат Arduino был разработан, чтобы упростить установку новых плат и надстроек для пользователей. Чтобы установить megaTinyCore с помощью этого метода, выполните шаги, перечисленные ниже;

  1. Откройте окно настроек в среде Arduino IDE. Перейдите в File> Preferences or Arduino> Preferences при работе с macOS
  2. .
  3. В окне настроек найдите текстовое поле « Additional Board Manager URLs » и введите http://drazzy.com/package_drazzy.com_index.json в поле, как показано ниже, и нажмите кнопку OK. Добавить ссылку на дополнительный список URL-адресов платы
  4. Затем откройте менеджер плат Arduino. Перейдите в инструменты> Платы> Менеджер плат
  5. Когда откроется менеджер доски, введите megaTinyCore в строку поиска и прокрутите, вы увидите «megaTinyCore by Spence Konde», нажмите «Установить», как показано ниже.
  6. Также найдите пакет «Официальные платы Arduino megaAVR» и установите его самую последнюю версию.

После того, как все это выполнено успешно, вы должны увидеть все платы Attiny, перечисленные в разделе плат (инструменты -> Платы ) Arduino IDE. Если это так, значит, установка платы прошла успешно.

2. Ручная установка

Метод диспетчера плат Arduino обеспечивает некоторый уровень автоматизации, в то время как ручная установка, с другой стороны, позволяет установить последнюю версию ядра с исправлениями, которые еще могут быть недоступны в версии ядра с диспетчером плат.Однако, чтобы использовать ручную установку, необходимо, чтобы и или использовали менеджер плат для установки последней версии официального пакета платы Arduino megaAVR для работы ручной установки.

Ручная установка рекомендуется, если вы хотите внести свой вклад в разработку ядра или если для вашей сборки важны последние исправления, которых нет в выпущенной версии.

Чтобы установить вручную, выполните следующие действия;

  1. Убедитесь, что вы установили последнюю версию пакета Official Arduino megaAVR board .
  2. Загрузите пакет MegaTinyCore.zip (либо «выпущенную» версию, либо путем загрузки . zip основного репозитория) на свой компьютер.
  3. Распакуйте и поместите файл в папку «hardware» внутри папки скетчей (где хранятся ваши скетчи Arduino). Если папка оборудования не существует, создайте новую папку и назовите ее «оборудование».
  4. Перезапустите IDE Arduino

Для автоматических обновлений вместо загрузки zip-файла вы можете загрузить клиент GitHub и синхронизировать это репо с аппаратной подпапкой папки с альбомом.

После завершения шагов по установке вы должны увидеть все платы Attiny , перечисленные в разделе плат (инструменты -> Платы) Arduino IDE, если процесс установки прошел успешно.

После этого следующим шагом будет установка программатора UPDI , после чего вы будете готовы загрузить код в любой из микроконтроллеров Microchip новой серии attiny.

Сделайте программатор UPDI

Как упоминалось во время введения, нам нужно будет сделать программатор UPDI , чтобы иметь возможность загружать код в серию attiny, используя IDE и плату Arduino.

Для этого есть два шага. Первый шаг включает в себя преобразование платы Arduino в качестве программиста UPDI, а вторая часть показывает, как подключить Attiny к программатору и процессу загрузки.

1. Преобразование Arduino в программатор UPDI

Чтобы преобразовать нашу плату Arduino в программатор UPDI, мы будем использовать скетч U PDI Arduino , созданный ElTangas. Скетч преобразует Arduino на базе ATmega328 (p), такую ​​как Arduino UNO, Nano и Pro mini, в программатор UPDI.Скетч, однако, не работает на платах, основанных на других микроконтроллерах, таких как 32u4 (на Arduino Micro / Leo) или на любой плате, отличной от AVR.

Следующие шаги показывают, как сделать этот дешевый программатор UPDI;

  1. Закройте все экземпляры Arduino IDE, чтобы избежать ошибок.
  2. Загрузите и извлеките скетч программиста UPDI
  3. Откройте папку jtag2updi после распаковки загрузки
  4. Откройте скетч jtag2updi.ino и загрузите его на плату Arduino, которую вы хотите использовать, например, Arduino Nano .Когда вы откроете код, файл .ino окажется пустым, и это нормально, поскольку весь код содержится в других файлах в той же папке, что и .ino, но нужен пустой .ino, чтобы их можно было скомпилировать от IDE.

После успешной загрузки вы готовы использовать программатор UPDI. Если вы часто используете новую серию ATtiny, будет разумным шагом полностью посвятить плату Arduino pro mini или nano в качестве постоянного программиста UPDI.

2. Подключение Attiny и загрузка

Подключите ATiny к Arduino, как показано на схемах ниже;

Схема подключения программатора UPDI к Attiny

Подключение довольно простое, но для предотвращения ошибок ниже показано штыревое соединение между Arduino и Attiny;

Arduino Nano — Attiny

 GND - GND
5 В - VCC
D6 - UPDI 

Важно отметить, что вывод UPDI ATiny подключен к Arduino через 4.7 кОм, который может не понадобиться при использовании некоторых коммутационных плат, так как некоторые из них поставляются со встроенным резистором.

Теперь, когда микроконтроллер подключен к вашему программатору Arduino UPDI, мы готовы загрузить код в attiny.

Откройте или напишите код, который хотите загрузить. Проверьте код, чтобы убедиться, что нет ошибки, затем перейдите в Инструменты -> Плата и прокрутите вниз, пока не увидите в списке ATtiny, с которым вы работаете, и выберите его.

Это должно обновить параметры, отображаемые при нажатии инструментов.Теперь нам нужно указать Arduino IDE использовать наш программатор. Для этого перейдите в Инструменты-> Программисты (ближе к концу).

Прокрутите панель вниз и выберите jtag2updi (megaTinycore) в качестве программиста.

После этого ваш экран должен выглядеть как на изображении ниже, когда вы нажимаете на инструменты;

Это означает, что все индикаторы зеленые. Теперь выберите порт, к которому подключен Arduino nano, и нажмите кнопку загрузить в среде IDE.Вы должны сразу увидеть процесс загрузки, и по его завершении микроконтроллер должен работать в соответствии с программой.

По сравнению с прежними микроконтроллерами ATtiny, эта новая серия микроконтроллеров поставляется с большим объемом флэш-памяти, стоит намного дешевле и более эффективна по сравнению с предыдущим набором, поэтому их, вероятно, следует учитывать при следующем изготовлении. выбор крошечного недорогого микроконтроллера с низким энергопотреблением для вашего проекта.

Артикул:

Dirt — дешевый USB-хак для Arduino из прошлого

Массовое производство — замечательная вещь.Цены падают, и хакеры-любители получают дешевое оборудование. Затем ум блуждает в направлении того, что с ним можно сделать. Так что неудивительно, что кто-то вроде [Аарона Кристофеля] попытался бы перепрофилировать тех программистов AVR стоимостью менее 3 долларов, которые повсюду на eBay (здесь плохо переведено с немецкого, но показано на видео, встроенном ниже).

[Аарону] особо нечего было делать. Единственная уловка заключается в том, что вам сначала нужно будет повторно прошить существующую прошивку интернет-провайдера с помощью той, которая позволяет загружать код на само устройство через USB.Если у вас нет под рукой Arduino для перепрошивки, купите как минимум два дешевых программатора — один для программирования другого. Как только вы это сделаете, у вас, по сути, есть Arduino с ограниченной распиновкой и двумя встроенными светодиодами, но в красивом небольшом форм-факторе и со встроенным USB. [Аарон] даже предоставляет файл Arduino boards.txt , чтобы все это работало бесперебойно в среде IDE.

Все это делается с помощью очень удобной прошивки V-USB, которая позволяет легко и дешево создавать низкоскоростные USB-устройства.Это было бы идеально для создания клавиатуры с двумя клавишами, моста USB-USART или USB-SPI или даже ручки регулировки громкости — один вывод АЦП, похоже, сломан. Остальные контакты можно вытащить с помощью деликатной пайки, и с этим маленьким ключом можно сделать что-нибудь действительно полезное.

Трудно представить себе, что можно даже найти все детали по цене доставки одного из них к вашей двери, и это довольно старый прием, датируемый 2013 годом. Мы немного удивлены, что не видели больше проектов с людьми, которые перепрофилируют этих дешевых программистов интернет-провайдеров.Вы что-нибудь сделали с одним из них? Дайте нам знать.

.