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.![]() |
Питание
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 спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера.
Однако эта система может приводить и к другим последствиям. При подключении Pro Mini к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой.
Физические характеристики
Габаритные размеры печатной платы 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.![]() |
Цифровые входы/выходы | 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 МГц без кварцевого резонатора. Наметим план работ:
- Прописать в файле конфигурации Arduino IDE (boards.txt) параметры платы Arduino с ATMega238P на 8 МГц.
- Подключить к плате Arduino UNO программатор USBasp.
- Записать в плату Arduino UNO загрузчик, способный работать на микроконтроллере с частотой 8 МГц.
- Проверить работоспособность изделия (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.

Для программирования я использую программатор USBasp. Купил его на ebay.com, стоит он в пределах 150р.
Первая проблема с которой столкнутся пользователи Windows8 и Windows10 — установка драйвера для USBasp.
Проблема в том, что эти операционные системы просят, что бы у драйвера была какая-то цифровая подпись, а у драйверов для USBasp на сегодняшний день её нет. Проблема решается отключением проверки этих цифровых подписей. Для этого перезагружаем компьютер с нажатой клавишей Shift. Появляется экран, на котором выбираем «Диагностика»
Далее — «Дополнительные параметры»
Далее — «Параметры загрузки»
Далее — «Перезагрузить»
На следующем экране появляется список действий, которые мы можем сделать. Выбираем на нём «Не проверять цифровые подписи драйверов», жмём цифру 7
Подключим наш программатор к микрочипу.
У Atmega8 в TQFP корпусе выводы располагаются следующим образом
К 9 и 10 выводу микроконтроллера присоединяем кварцевый резонатор.
Здесь стоит пояснить значение этого резонатора.Скорее всего в купленном вами микроконтроллере выставлены настройки (fuses) на работу от внешнего тактового генератора, т.е. от кварца. Поэтому, что бы его прошить, нужно что бы он был подключён к этому самому кварцу. Для перепрошивки кварц можно взять любой попавшийся вам под руку. Я когда впервые перепрошивал просто выпаял его из какого-то сломанного устройства, вот он маленький на фото.
Его хватило что бы микроконтроллер перепрошился. Если же ваш микроконтроллер изначально настроен на работу от внутреннего тактового генератора, то для прошивки кварц вам не нужен, можно обойтись и без него.
Для того, что бы можно было прошивать микрочип прямо из среды разработки Arduino, нужно залить на чип ардуиновский загрузчик.
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.












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
Подключаем программатор к 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)
Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.
Процессор: Atmega8A
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (внутрисхемное)
Напряжение программирования: 5В или 3.

Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
Поддерживаемые контроллеры: все AVR с интерфейсом SPI
Описание:
Список поддерживаемых микроконтроллеров
ATmega серия ATmega8 ATmega48 ATmega88 ATmega168 ATmega328ATmega103 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 — замыкается в случае обновления прошивки самого программатораПрограмматор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой JP2 находится LDO-стабилизатор 662К , понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение. Установка драйверов Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Вставляю любой программатор в USB-порт ПК, звучит сигнал о новом оборудовании, на самом девайсе горит светодиод, но автоматического поиска драйверов не происходит.
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows1) Скачать , распаковать в удобное место.

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 подписана как 3.3В, на 168-ю Атмегу можно подавать и 5В. Стабилизатор AMS1117 на 3.3В кстати вообще выпаян из платы.
AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.
Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.
Поскольку голый чип в 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 его уже будет нельзя._____________________________________ Выводы Опробовано, работает.

Список ссылок
В данной статье мы опишем „шаг за шагом” этапы изготовления 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 вольт
- Указание работы программатора с помощью светодиода
Перед началом работы, стоит ознакомиться с последовательностью всех выполняемых действий, а именно:
- Выбор схемы/рисунка печатной платы
- Перенос рисунка печатной платы на фольгированный стеклотекстолит
- Травление печатной платы в растворе хлорного железа
- Сверление отверстий
- Монтаж элементов (пайка)
- Программирование Atmaga8 программатора
- Подключение программатора к компьютеру
- Установка драйверов – Windows XP, Windows 7
- Выбор программы с поддержкой 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:
- Метод USB / последовательной связи
- Метод 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 сеанса:
- Загрузка программы в CT-UNO
- Загрузка программы в BBFuino
- Загрузка программы в автономный 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
- Вставьте разъем кабеля программатора ISP в заголовок ISP.
Пластиковый наконечник радужной кабельной головки и метка со стрелкой должны находиться на одной стороне. Вы заметите, что светодиод PWR горит. Если это не так, проверьте соединение между головкой кабеля и разъемом ISP.
- Откройте программное обеспечение Arduino IDE. Если вы используете старую версию Arduino IDE, вы можете получить некоторую ошибку. Загрузите последнюю версию с сайта Arduino. Я использую Arduino IDE версии 1.0.5, и она отлично работает.
- Затем вызовите любой пример исходного кода. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.
Набросок примера Blink:
- Выберите «USBasp» в меню «Инструменты»> «Программист».
- Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки займет минуту.
Если вы выберете «Загрузить» или нажмете кнопку «Загрузить», вы получите сообщение об ошибке, как показано на рисунке ниже. Это связано с тем, что AVR USBasp не установлен в качестве последовательного порта на нашем ПК, а функция «Загрузить» означает загрузку программы через последовательный порт.Не волнуйтесь, IDE все равно будет загружать через USBasp.
- Процесс загрузки завершается, когда 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, необходимо немного изменить конфигурацию:
- Найдите свой каталог Arduino. В моем случае мой каталог Arduino — C: \ Users \ user \ Desktop \ arduino-1.0.5
Затем найдите каталог hardware \ tools \ avr \ etc. Вы заметите, что есть файл с именем «avrdude.conf »внутри этого каталога.
- Сделайте копию файла «avrdude.conf» для резервного копирования.
- Откройте файл «avrdude.conf» с помощью WordPad.
- Найдите «m328p».
- Ищите «подпись». Под «m328p» должно быть несколько строк.
Изменить 0x1e 0x95 0x0f на 0x1e 0x95 0x14
- Нажмите «Сохранить», чтобы сохранить отредактированный файл конфигурации и закрыть его. Теперь вы изменили конфигурацию Arduino IDE.
Затем подключите головку кабеля программатора ISP к заголовку ISP BBFuino. Пластиковый выступ на головке кабеля «радуга» должен находиться на той же стороне, что и этикетка «ISP» на BBFuino.
Процедура загрузки эскизов в BBFuino аналогична сеансу 1:
- Откройте программное обеспечение Arduino IDE и вызовите любой пример. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.
- Выберите «USBasp» в меню «Инструменты»> «Программист».
- Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки завершается, когда в Arduino IDE отображается сообщение «Выгрузка завершена».
Сессия 3: Загрузка программы в автономную Arduino
В этом сеансе требуется следующее оборудование:
Создайте схему автономной Arduino, как показано ниже:
Рисунки ниже будут Хорошая ссылка при подключении AVR USBasp и автономной Arduino:
Источник: Arduino.cc
На автономной Arduino нет заголовка ISP. Поэтому мы используем перемычку «папа-папа», чтобы выполнить некоторую проводку между кабельной головкой и автономным Arduino. См. Информацию о подключении в таблице ниже:
Программатор 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, следуйте этим инструкциям:
- Сначала закройте программу Arduino, если она открыта.
- Убедитесь, что ваш программатор указан в arduino-0022 \ hardware \ arduino \ programmers.txt . Если нет, вам нужно добавить запись. Например, для программатора USBasp добавьте следующие две строки:
usbasp.name = USB asp
usbasp.protocol = usbasp
Если вы используете USBasp в Linux, вам необходимо выполнить следующие действия, чтобы изменить разрешение устройства, чтобы вы могли использовать его как пользователь без полномочий root. - Откройте файл 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
Другими словами, закомментируйте первые две строки и добавьте вторые две строки. - Следуйте инструкциям в следующем разделе, чтобы изменить код подписи.
- Наконец, подключите программатор 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 в списке.
- Нажмите кнопку «Запись» в разделе «Предохранители и запорные биты». Затем прочтите его, чтобы убедиться, что предохранители хорошо сгорели. Теперь не отключайте свой Usbasp.
- Перейдите в Arduino Ide, в Board Manager выберите SensebenderMicro, если вы хотите использовать загрузчик DualOptiboot FOTA.Или выберите Arduino Mini pro MYSBootloader
- Затем выберите Processeur Atmel328 8Mhz, USBASP As programmer.
- Щелкните Сервис \ Записать загрузчик. Вы получите несколько предупреждений 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.
- Оставьте этот файл открытым и закройте Arduino ide (в противном случае ваши изменения будут стерты).
- В файле preferences.txt в конце добавьте
build.path = C: \ Arduino-Output \
- Откройте Arduino ide и скомпилируйте / проверьте свой проект узла. Теперь вы должны увидеть свои скомпилированные файлы в папке, которую вы установили ранее.
- Скопируйте .hex в путь к прошивке MYSController, если вы его используете.
Запустите обновление FOTA
- Откройте MYSController, перейдите в Config / Serial, проверьте правильный последовательный COM-порт для вашего GW.
- Нажмите «Обновить репозиторий 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
- Теперь, чтобы отправить новый эскиз на ваш узел по беспроводной сети, просто щелкните правой кнопкой мыши узел, который хотите обновить. Для спящего узла батареи выберите «Спящий режим с питанием от батареи». Поэтому, когда ваш узел проснется, MYSController повторно отправит обновление. Потрясающие!
- Нажмите Assign FW,
- Выберите свой .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.

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.
Необходимые компоненты
Для работы с этим руководством потребуются следующие компоненты:
- Attiny412
- Arduino Uno или nano
- Adafruit 8-контактный SOIC
- 4.7k Резистор
- Конденсатор 1уф
- Макет
- Провода перемычки
Ни одно из новых устройств 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 двумя способами;
- Установка через Arduino Board Manager
- Ручная установка
Я исследую оба метода и позволю вам решить, какой из них проще или быстрее.
1. Установка через Arduino Board Manager
Менеджер плат Arduino был разработан, чтобы упростить установку новых плат и надстроек для пользователей. Чтобы установить megaTinyCore с помощью этого метода, выполните шаги, перечисленные ниже;
- Откройте окно настроек в среде Arduino IDE.
Перейдите в File> Preferences or Arduino> Preferences при работе с macOS
.
- В окне настроек найдите текстовое поле « Additional Board Manager URLs » и введите http://drazzy.com/package_drazzy.com_index.json в поле, как показано ниже, и нажмите кнопку OK. Добавить ссылку на дополнительный список URL-адресов платы
- Затем откройте менеджер плат Arduino. Перейдите в инструменты> Платы> Менеджер плат
- Когда откроется менеджер доски, введите megaTinyCore в строку поиска и прокрутите, вы увидите «megaTinyCore by Spence Konde», нажмите «Установить», как показано ниже.
- Также найдите пакет «Официальные платы Arduino megaAVR» и установите его самую последнюю версию.
После того, как все это выполнено успешно, вы должны увидеть все платы Attiny, перечисленные в разделе плат (инструменты -> Платы ) Arduino IDE. Если это так, значит, установка платы прошла успешно.
2. Ручная установка
Метод диспетчера плат Arduino обеспечивает некоторый уровень автоматизации, в то время как ручная установка, с другой стороны, позволяет установить последнюю версию ядра с исправлениями, которые еще могут быть недоступны в версии ядра с диспетчером плат.Однако, чтобы использовать ручную установку, необходимо, чтобы и или использовали менеджер плат для установки последней версии официального пакета платы Arduino megaAVR для работы ручной установки.
Ручная установка рекомендуется, если вы хотите внести свой вклад в разработку ядра или если для вашей сборки важны последние исправления, которых нет в выпущенной версии.
Чтобы установить вручную, выполните следующие действия;
- Убедитесь, что вы установили последнюю версию пакета Official Arduino megaAVR board .
- Загрузите пакет MegaTinyCore.zip (либо «выпущенную» версию, либо путем загрузки .
zip основного репозитория) на свой компьютер.
- Распакуйте и поместите файл в папку «hardware» внутри папки скетчей (где хранятся ваши скетчи Arduino). Если папка оборудования не существует, создайте новую папку и назовите ее «оборудование».
- Перезапустите 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;
- Закройте все экземпляры Arduino IDE, чтобы избежать ошибок.
- Загрузите и извлеките скетч программиста UPDI
- Откройте папку jtag2updi после распаковки загрузки
- Откройте скетч 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 годом. Мы немного удивлены, что не видели больше проектов с людьми, которые перепрофилируют этих дешевых программистов интернет-провайдеров.Вы что-нибудь сделали с одним из них? Дайте нам знать.
.