ota
FOTA обновление по воздуху, позволяет загружать прошивку (эскиз) по беспроводной сети. Это полезно, если ваши узлы недоступны, и вы хотите обновить прошивку или изменить какую-либо конфигурацию в коде.
FOTA может быть реализован по-разному, если использовать mcu Esp8266, 8bits 328p (например, Arduino Pro mini и т. Д.) или ARM.
Теперь покажем вам, как начать работу с этим.
FOTA Загрузчик
Перед использованием FOTA вам необходимо записать правильный загрузчик.
Замечания для Нубов: коротко, загрузчик — это кусок кода, который выполняется при перезагрузке / запуске и позволяет загружать прошивку с помощью usb или других методов вместо использования AVRSPI.
В Mysensors мы можем использовать два вида FOTA:
- Первый вариант: MYSBootloader, созданный Tekka из команды Mysensors.
- Второй вариант: Dualoptiboot, который создан Lowpowerlab и является загрузчиком, используемым в Micro Sensebender.
MYSBootloader не требует внешней флэшки. Обновления FOTA FW передаются в автономном режиме, то есть MYSBootloader взаимодействует с контроллером и получает новый FW, который непосредственно записывается в MCU, после того, как FW передается и CRC проверяется, MYSBootloader передает новый эскиз / FW.
- Плюсы: можно восстановление FOTA, даже с эскизом с ошибками (если эскиз зависает, он перезагружается по сторожевому таймеру и запустит MYSBootloader), внешняя флешка не требуется
- Минусы: Специфика радио, т.е. разные загрузчики для RF24 и RFM69 радио (rfm69 работа в процессе), не в сети (без обработки данных датчиков во время fota). Отправитель MySensors не поддерживает загрузку через ftdi / serial (но в бете ведутся работы).
Для Dualoptiboot требуется внешняя флешка: обновления FOTA FW передаются в режиме работы ноды, то есть пока узел активен. После того как все пакеты FW переданы и проверена CRC, узел перезагружается, копирует FW с внешней флешки в MCU. Это означает, что вам нужно вначале загрузить эскиз по ftdi, иначе fota не будет работать, поскольку он обрабатывается в эскизе.
- Плюсы: Не требуется специфика работы радио в загрузчике, поэтому его можно использовать в разных схемах радио, онлайн (пока узел обрабатывает данные датчика)
- Минусы: При неисправности FW (например, зависание эскиза из-за плохого кода) не может быть восстановлена FOTA => придётся восстанавливать через последовательный порт, требуется внешняя флешка
Что для этого нужно
Почти во всех случаях вам понадобится следующее:
- USBASP для записи загрузчика (или вы можете использовать ArduinoAsIsp, здесь не рассматривается)
- Установить AVRDUDESS: http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/ для конфигурации фьюзов
- Arduino IDE 1.6.x
- Mysensors библиотека
- MYSController
Если вы хотите использовать загрузчик DualOptiboot, вам понадобятся:
- SPI флешь, jedec совместимая, например AT25DF512C-SSHN-B.
Совместимости с другими флеш-микросхемами вы можете проверить здесь https://forum.mysensors.org/topic/3160/ota-flash-types-for-mysensors
- О некоторых проектах для использование флешки
- Устройства MSMD уже встроена флешка
- https://oshpark.com/shared_projects/m5Uugjx5
- https://www.openhardware.io/view/18/OTA-and-Authentication-Evaluation-Board.
- Sensebender Micro или Moteino уже встроена флешка
Теперь вы должны увидеть плату Sensebender Micro в Boards \ tools от Arduino Ide.
Запись загрузчика
Для программирования загрузчика мы используем Usbasp. Это простое в использовании и дешевое устройство. Подключите Usbasp к вашему устройству Arduino.
Вывод | Arduino Nano/Micro/328p/Sensebender итд |
MOSI | D11 |
VTG | VCC 3.3V |
GND | GND |
RES | RESET |
SCK | D13 |
MISO | D12 |
В этом видео, описывается процесс первая запись загрузчика.
После этого нужно установить фьюзы в Avrdudess.
Конфигурация для устройств с кварцем 8MHz:
Конфигурация для устройств с кварцем 16Mhz:
Примечание: даже если вы используете клон Usbasp, выберите Usbasp в списке.
- Нажмите записать в разделе «Fuses&Lock bits». Затем зачитайте, чтобы проверить что фьюзы действительно записались. Не отключайте USBasp.
- Перейдите в Arduino Ide, в Board Manager, выберите SensebenderMicro, если вы хотите использовать загрузчик DualOptiboot FOTA.
Или выберите Arduino Mini pro MYSBootloader
- Затем выберите процессор Atmel328 8Mhz, USBASP As programmer.
- Нажмите Tools \ Записать загрузчик. Вы получите несколько предупреждение SCK, но это не проблема, это может быть из за того что вы используете клон USBasp.
Вот теперь, наш FOTA Загрузчик прошился.
Если вы получаете ошибку
В некоторых версиях среды разработки Arduino не отображается USBasp. Если вы получите сообщение об ошибке, похожее на скриншот выше, исправление найдёте здесь: http://forum.arduino.cc/index.php?topic=415210.msg2862244#msg2862244
Заметки:
- Вы можете использовать Avrdudess для записи загрузчика.
- DualOptiboot: внутренний 8Mhz + 1.8V BOD.
Включение FOTA в вашем эскизе
Чтобы включить FOTA в эскизе, вам нужно добавить
#define MY_OTA_FIRMWARE_FEATURE
#define MY_OTA_FIRMWARE_FEATURE |
Работа FOTA полностью скрыта. Все уже включено в Mysensors lib в process() и wait()
Но важно учесть:
- Не забудьте, что спящий узел не может получить FOTA. Вы можете установить задержку перехода в сон, чтобы увидеть, есть ли у вас что-то для FOTA. Для этого лучше использовать smartsleep(), которые делает wait() после пробуждения.
Это относится к Dualoptiboot (не относится к MYSBootloader, поскольку он выполняет FOTA только во время работы загрузчика, которые не использует сон):
- Во время загрузки нового эскиз (это делается во время выполнения скетча), вы должны учесть это в эскизе. Хорошим тоном, если вы обнаружите FOTA сообщения и приостановите долгого процесса считывания датчиков, или это повлияет на скорость FOTA. Например: если вы читаете датчики и это занимает долгое время (некоторые libs), все это будет задерживать FOTA или будет прерывать во время основного цикла. Ещё если оптимизации не будет, и если вы используете батарейку, то из-за того что передача будет долгой. Вы потратите ресурс батареи очень быстро
- FOTA может работать быстро 15-30 секунд, если её ничего не замедляет, и очень долго если не оптимизировано.
Как загрузить новый эскиз через FOTA
Вам нужно будет использовать .hex файл вместо .ino
Чтобы получить этот файл: в Arduino ide перейдите в File\Preferences\, внизу нажмите на preferences.txt. Он открывает файл preferences.txt.
- Запомните где этот файл и закройте Arduino ide (иначе ваши изменения будут утеряны).
- В файле preferences.txt в конце добавляем
build.path=C:\Arduino-Output\
build.path=C:\Arduino-Output\
или другой предпочтительный путь. Это будет папка компиляции для ваших файлов .hex. Закройте диалоговое окно. - Откройте Arduino ide и скомпилируйте и проверьте проект вашего узла. Теперь вы должны найти свои скомпилированные файлы в папке, которую вы установили ранее.
- Скопируйте .hex в парку Firmware для MYSController. Или загрузите .hex в разделе «Прошивки» в модуле MajorDomo MySensors
Запуск обновление FOTA.
- Открыть MYSController, перейдите в Config/Serial, проверьте правильный последовательный COM-порт для вашего GW.
- Нажмите на кнопку «Обновить FW», для того что вы могли использовать ваш новый файл .hex
Примечание: Если вы не видите свой .hex, вы также можете найти его: В папке Firmware отредактируйте firmware_config.csv и вручную добавьте свой .hex. Вот пример, я добавил файл Humidity .hex для тестов.
Type,Name,Version,File,Comments 10,Blink,1,Blink.hex,blinking example 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,HumiditySensor.cpp.hex,HumidityTest
Type,Name,Version,File,Comments 10,Blink,1,Blink. 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,HumiditySensor.cpp.hex,HumidityTest |
- Теперь чтобы отправить новый эскиз по воздуху на ваш узел, просто щелкните правой кнопкой мыши на узле, который требуется обновить. Для спящего узла батареи, выберите «с питанием от батареи Спящий». При этом, когда ваш узел проснетесь, MYSController будет отправлять обновление.
- Нажмите «Назначить FW»
- Выберите эскиз .hex.
Вуаля! FOTA должен прошится, затем ваш узел перезагрузится и запустит новую прошивку.
Прошивка ардуино про мини через usbasp — Назрановский аграрный техникум
Выбираем нужную плату через меню По окончанию. В этом случае прошивка PRO M U.В прошлый раз мы разобрались, как программировать A P через USB, а сегодня.

Про 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МГц
сообщения при удачной заливке скетча штатным загрузчиком
Все вопросы в
Форум.
Как вам эта статья? |
Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
USB программатор для микроконтроллеров ATMEL
Микроконтроллеры фирмы 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.
Для программатора существует прошивка под названием AVR-Doper, превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск.
atmega328 — Ошибка при попытке загрузки загрузчика в Arduino Pro Mini 328P 8MHz 3.3V
Я попробовал flash загрузчик в Arduino Pro Mini 328P 8MHz /3. 3V клон, но получил ошибку.
Сначала я проверил:
~$ avrdude -c usbasp -p m328p
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:FD, H:D9, L:E2)
avrdude done. Thank you.
~$ avrdude -c usbasp -p m328p -v -U flash:w:optiboot_atmega328_pro_8MHz.hex
avrdude: Version 6.2
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/combox/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbasp
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : usbasp
Description : USBasp, http://www.
fischl.de/usbasp/
avrdude: auto set sck period (because given equals null)
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FD
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: reading input file "optiboot_atmega328_pro_8MHz.hex"
avrdude: error opening optiboot_atmega328_pro_8MHz.hex: No such file or directory
avrdude: can't determine file format for optiboot_atmega328_pro_8MHz.hex, specify explicitly
avrdude: read from file 'optiboot_atmega328_pro_8MHz.hex' failed
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:D9, L:E2)
avrdude done.
Thank you.
@combox:~$ cd Downloads
@combox:~/Downloads$ cd Arduino
@combox:~/Downloads/Arduino$ avrdude -c usbasp -p m328p -v -U flash:w:optiboot_atmega328_pro_8MHz.hex
avrdude: Version 6.2
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/combox/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbasp
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : usbasp
Description : USBasp, http://www.
fischl.de/usbasp/
avrdude: auto set sck period (because given equals null)
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FD
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: reading input file "optiboot_atmega328_pro_8MHz.hex"
avrdude: input file optiboot_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% 0.00s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against optiboot_atmega328_pro_8MHz.hex:
avrdude: load data flash data from input file optiboot_atmega328_pro_8MHz.
hex:
avrdude: input file optiboot_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: input file optiboot_atmega328_pro_8MHz.hex contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7e00
0x00 != 0x11
avrdude: verification error; content mismatch
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as FE
avrdude: safemode: lfuse changed! Was e2, and is now fe
Would you like this fuse to be changed back? [y/n]
Как это решить?
150-Arduino ISP и Algorithm Builder USB adapter из Arduino Nano — GetChip.net
В этой статье я покажу, как просто сделать AVR-программатор из Arduino Nano. Способ не новый и не оригинальный – это штатная возможность Arduino IDE.
В свое время первым программатором для AVR, обычно, становился программатор «5-проводков» который подключался к LPT или COM — порту. Он же выступал программатором для единичных устройств, когда нужно было раз прошить МК и больше к этому не возвращаться. Сейчас подобные нужды (первый программатор или программатор для одного устройства) не перестали быть актуальны. Проблема в том, что LPT и COM — порта становятся редкостью (а в ноутбуках их уже давно нет). Сейчас для программатора нужно использовать USB-порт, но есть проблема — сборка программатора под USB для начинающего довольно сложная задача. Выход есть — купить недорогой программатор типа USBasp. В случае если USBasp (или другой) Вам достать не получилось, то есть вариант собрать программатор из Arduino Nano – получится не хуже.
Arduino ISP
Этот программатор (вернее скетч для него) включен в официальную Arduino IDE (пример под названием «Arduino ISP»).
Все очень просто. Нужно Arduino Nano, несколько проводков и несколько резисторов.
*для Arduino ISP цепи DBG (включая и резистор 10 кОм) не нужны – об этом дальше.
Обвязку можно спаять прямо на Ардуине, как это сделал я. Или собрать на макетке для одного раза, а потом использовать Ардуину для чего-то еще.
После того, как схема собрана, нужно записать в МК прошивку программатора. Это можно сделать 2-мя способами – либо из Arduino IDE либо из моего gcManager. В последнем случае не придется делать каких либо правок по настройке проекта, кроме того я подготовил варианты на разные скорости (19200 и 115200 бод).
После того как прошивка записана – Вы становитесь счастливым обладателем 😉 программатора «Atmel AVR ISP». Это имя нужно будет выбирать в программах для программирования. Например, в avrdudess это выглядит так:
Algorithm Builder USB adapter
Кроме стандартного Atmel AVR ISP, в эту конструкцию можно записать прошивку нестандартного USB адаптера для Algorithm Builder. В этом случае и понадобится ранее не нужная цепочка DBG (это для однопроводной отладки программы в кристалле).
Не вижу смысла что-то писать об этом адаптере – те, кто пользуются Билдером и так знают что это такое. Прошивку можно записать прямо из gcManager (там-же есть и исходник – стандартный из установки, но подправленный для ATmega328p).
(Visited 7 493 times, 3 visits today)
Прошивка atmega8 через usbasp
Прошивка микроконтроллеров Atmega без arduino через USBasp:
Существуют простые и дешевые программаторы для прошивки м/к Atmega ,которые поддерживает среда Arduino >USBasp необходим,если вы просто прошиваете микроконтроллеры Amtel.Программатор основан на м/к Atmega 8 и использует програмный USB.
Цена такого программатора на ebay.com около 3$.Он имеет выход питания 5v/3.3 v(переключается перемычкой JP1) ,а так же соотвествующие выводы SCK,MISO,MOSI ,RESET для подключению напрямую к микроконтроллеру.На картинке показаны выводы на самом программаторе – на разъеме шлейфа соответственно будет зеркально относительно ключа (у 5 вывода),не забывайте об этом.
Для работы в операционной системе Windows необходимы драйвера.Linux же не требует их.
Данный программатор легко превратить в друое устройство,например в I2C-USB переходник , USB контроллер с GIO или контроллер чтения термодатчиков DS18B20.
Программирование через USBasp в Arduino IDE
Для программирования микроконтроллеров,подключенных через USBasp в Arduino IDE необходимо выбрать его в программе согласно скриншоту.
Программирование осуществляется через меню файл,выбрав пункт
«Загрузить с помощью программатора».Не забываем выбрать микроконтроллер в меню «сервис» ->»плата».
Программирование через USBasp утилитой avrdude
Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Для того,чтобы залить прошивку в микроконтроллер необходимо выполнить команду:
avrdude -c usbasp -p m8 -U flash:w:имя_файла. hex . где -p m8 – это модель микроконтроллера.В данном случае atmega 8.
Дополнительно так же можно установить фьюзы дописав :-U hfuse:w:0xХХ:m -U lfuse:w:0xХХ:m .Где ХХ – соотвествующие фьюзы микроконтроллера ,необходимые для конкретной прошивки.
Обычно прошивку можно осуществить через команду make flash ,если Вы имеете исходный код прошивки и установленную WinAVR.
В других средах программирования выбор программатора осуществляется через соответсвующее меню программы.
Обратите внимание,
Что на некоторых микроконтроллерах с завода,например на серии Attiny включен по умолчанию фьюз CKDIV8 ,который устанавливает делитель на 8 и из-за этого USBasp не программирует такие микроконтроллеры пока не установить перемычку JP3 на USBasp.Для настройки фьюзов воспользуйтесь калькулятором фьюзов чтобы выставить нужные настройки , в том числе выключить данный делитель.Фьюзы прошиваются через avrdude командой avrdude -c usbasp -p имя_м/к -U lfuse:w:0xХХ:m .
Пример для установки фьюзов attiny85 для внутреннего генератора 8мгц с выключенным делителем на 8 :
avrdude -c attiny85 usbasp -p -U lfuse:w:0x62:m
При программировании через Arduino IDE можно установить нужные фьюзы выбрав в меню «записать загрузчик»,выбрав перед этим необходимый микроконтроллер.
«Допиливание» программатора.
или исправляем ошибку: avrdude: warning: cannot set sck period. please check for usbasp firmware update
При программировании некоторых микроконтроллеров(например у серии ATtiny) возможны не фатальные ошибки.Хотя и программирование микроконтроллера происходит,но обновить прошивку микроконтроллера на программаторе рекомендуется.
Что для этого нужно ? Вы можете использовать плату arduino как программатор или использовать другой USBasp программатор .Для программирования используются те же выводы SCK,MISO,MOSI ,RESET .
Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI ,RESET к Arduino согласно инструкции .
2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем последнюю версию прошивки usbasp.2011-05-28 тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/ .
4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v
Программа выдаст сообщение ,где покажет состояние фьюзов и другую информацию:
Если Вы видите такие же сообщения- значит подключено все правельно и можно прошивать командой:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbavr.hex -U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Для прошивки из Linux все аналогично, заменяется часть строки:
. /avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 .
Порядок действий для прошивки через другую USBasp:
Прошивка аналогична прошивке обычного микроконтроллера: подключаем выводы SCK,MISO,MOSI,RESET один в один шлейфом идущим в комплекте с программатором.Не забываем про перемычку JP2.
Указываем опцию -c usbasp вместо -c avrisp
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
среда, 10 октября 2018 г.
Прошивка USBasp
1. Подготовка Ардуино
В качестве программатора можно использовать любую имеющуюся плату Ардуино. Для этого подключаем ее к компьютеру и загружаем в нее скетч ArduinoISP из стандартных примеров:
2. Подключение USBasp к Ардуино
Микроконтроллеры семейства AVR, а значит и базирующиеся на них платы (как Ардуино, так и USBasp) поддерживают программирование по ISP-технологии с использованием линий связи SPI. Поэтому сейчас нам нужно:
- соединить выводы Ардуино MOSI, MISO, SCK GND и VCC (5В или 3.3В) с одноименными выводами USBasp;
- цифровой вывод 10 Ардуино подключить к выводу RESET USBasp;
- установить электролитический конденсатор на 10мкФ между RESET и GND Ардуино, чтобы предотвратить автоматическую перезагрузку. Хотя возможно будет работать и без конденсатора, зависит от используемой платы Ардуино.
Для подключения можете использовать как ICSP разъем Ардуино, так и цифровые выводы – не принципиально. Я, например, взял MOSI, MISO, SCK, GND и VCC с ICSP разъема:
На всякий случай приведу таблицу соответствия сигналов MOSI, MISO и SCK цифровым выводам различных плат Ардуино:
Плата Ардуино | MOSI | MISO | SCK |
---|---|---|---|
Uno, Duemilanove | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
Nano | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
Pro Mini | 11 | 12 | 13 |
Mega1280, Mega2560 | 51 или ICSP-4 | 50 или ICSP-1 | 52 или ICSP-3 |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 |
Due | ICSP-4 | ICSP-1 | ICSP-3 |
Zero | ICSP-4 | ICSP-1 | ICSP-3 |
101 | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 |
3.

На плате USBasp присутствуют 3 джампера, хотя распаян у вас, скорее всего, будет только JP1 – выбор напряжения питания программируемого микроконтроллера. Для прошивки USBasp (и любых других манипуляций с ним при помощи программатора) необходимо установить джампер JP2. Советую не мучиться с замыканием контактов подручными средствами и впаять пару штырьков, так будет надежней:
4. Скачивание прошивки
Заходим на страничку автора USBasp https://www.fischl.de/usbasp/ и скачиваем последнюю версию прошивки в разделе Download – Firmware and circuit. На момент написания данной статьи актуальной является версия от 28.05.2011. Файлы прошивки находятся внутри архива по пути usbasp.2011-05-28infirmware, их там три штуки, для каждого типа микроконтроллера (программатор USBasp может быть построен на базе ATmega8, ATmega48 или ATmega88). У меня в USBasp установлен микроконтроллер ATmega8, поэтому я буду использовать файл usbasp. atmega8.2011-05-28.hex.
Прошивать USBasp будем при помощи уже знакомого нам avrdude, входящего в состав IDE Arduino. Файл прошивки нужно поместить в каталог avrdude, чтобы потом не пришлось указывать полный путь к нему. Для этого запускаем Проводник Windows и переходим в каталог Arduino_dirhardware oolsavrin, где Arduino_dir – это путь к IDE Arduino. В моем случае он выглядит так: d:Arduinoarduino-1.6.12hardware oolsavrin, сюда я копирую файл usbasp.atmega8.2011-05-28.hex.
5. Прошивка USBasp
После копирования файла прошивки в каталог avrdude поместите курсор в адресную строку Проводника, удалите из нее путь, введите cmd и нажмите Enter.
Запустится интерпретатор командной строки. В нем нужно ввести команду:
avrdude -C ..etcavrdude.conf -p m8 -c arduino -P com18 -b 19200 -U flash:w:usbasp.atmega8.2011-05-28.hex
Не забудьте проверить и с корректировать ее параметры:
-C ..etcavrdude.conf – путь к конфигурационному файлу (без этого параметра avrdude иногда ругается: can’t open config file «»: Invalid argument)
-p m8 – определяет тип микроконтроллера. Значение m8 сообщает avrdude о том, что мы собираемся работать с ATmega8. Если у вас в USBasp установлен ATmega48 или ATmega88, то замените это значение на m48 или m88 соответственно.
-P com18 – определяет COM порт, присвоенный плате Ардуино. У меня это com18, вам нужно подставить свое значение.
-U flash:w:usbasp.atmega8.2011-05-28.hex – определяет действие, которое мы хотим выполнить. В данном случае мы хотим записать в FLASH память данные из файла usbasp.atmega8.2011-05-28.hex. При необходимости скорректируйте имя файла прошивки в соответствии с типом микроконтроллера в USBasp.
Убедитесь, что команда набрана верно и программатор правильно соединен с Ардуино. После этого подключаем Ардуино к компьютеру и нажимаем Enter в интерпретаторе командной строки. Должен отобразиться прогресс перезаписи содержимого FLASH памяти, а затем сообщение об успешном выполнении команды – avrdude done. Thank you:
Популярное
- Устройство и программирование микроконтроллеров AVR для начинающих – 143
- Трехканальный термостат, терморегулятор, таймер на ATmega8 – 70
- Двухканальный термостат, терморегулятор на ATmega8 – 67
Программатор USBASP — устройство, распиновка, подключение, прошивка
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера.
В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы — AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.
Программатор USBASP
Для того, чтобы запрограммировать микроконтроллер необходимо иметь две вещи:
— программатор
— соответствующее программное обеспечение для записи данных в МК
Одним из наиболее простых, популярных и миниатюрных программаторов для AVR является USBASP программатор, созданный немцем Томасом Фишлем.
Имеется много разных схемотехнических решений этого программатора, программатор можно собрать самому или купить (стоимость — 2-3 доллара). При самостоятельной сборке следует учитывать, что собранный программатор необходимо будет прошить сторонним программатором.
Мы рассмотрим наиболее «навороченную» версию программатора:
Характеристики программатора:
— работает с различными операционными системами — Linux, Mac OC, Windows (для операционной системы Windows, для работы программатора, необходимо установить драйвера — архив в конце статьи)
— скорость программирования до (скорость программирования можно устанавливать самому, к примеру в AVRDUDE_PROG) 375 (5) кб/сек
— имеет 10-контактный интерфейс ISP (соответствует стандарту ICSP с 10-контактной распиновкой)
— поддерживает два напряжения питания программатора — 5В и 3,3В (не все USB порты ПК работают при 5 Вольтах)
— питается от порта USB компьютера, имеет встроенную защиту по току (самовосстанавливающийся предохранитель на 500 мА)
Назначение джамперов:
— разъем JP1 — предназначен для перепрошивки микроконтроллера программатора (для перепрошивки — необходимо замкнуть контакты)
— разъем JP2 — напряжение питания программатора — 5 Вольт или 3,3 Вольта (по умолчанию — 5 Вольт, как на фотографии). Программируемый микроконтроллер, или конструкцию, в которой он установлен, при токе потребления 300-400 мА можно запитать с программатора, для этого на разъеме есть выход +5В (VCC).
— разъем JP3 — определяет частоту тактирования данных SCK: разомкнутый — высокая частота (375 кГц), замкнутый — низкая частота (8 кГц)
Подробнее о разъеме JP3
Джампер JP3 предназначен для уменьшения скорости записи данных в микроконтроллер. Если у микроконтроллера установлена частота тактирования более 1,5 мГц — джампер может быть разомкнут, при этом скорость программирования высокая. Если тактовая частота менее 1,5 мГц — необходимо закоротить выводы джампера — снизить скорость программирования, иначе запрограммировать микроконтроллер не получится. К примеру, если мы будем программировать микроконтроллер ATmega8 (в принципе, практически все МК AVR настроены на тактовую частоту 1 мГц по умолчанию), у которого частота тактирования по умолчанию 1 мГц, необходимо будет замкнуть выводы джампера (как на фотографии). Лучше, наверное, держать этот джампер постоянно замкнутым, чтобы, забыв о его существовании, не мучиться вопросом — почему микроконтроллер не прошивается.
Если вы будете пользоваться программой AVRDUDE_PROG, выложенной на сайте, то о перемычке можно забыть
Программатор поддерживается следующим программным обеспечением:
— AVRdude
— AVRdude_Prog
— Bascom-AVR
— Khazama AVR Prog
— eXtreme Burner AVR
Работать с таким программатором очень просто — соединить соответствующие выводы программатора с микроконтроллером, подключить к USB-порту компьютера — программатор готов к работе.
Распиновка 10-контактного кабеля программатора USBASP :
1 — MOSI — выход данных для последовательного программирования
2 — VCC — выход +5 (+3,3) Вольт для питания программируемого микроконтроллера или программируемой платы от порта USB компьютера (максимальный ток 200 мА — чтобы не сжечь порт USB)
3 — NC — не используется
4 — GND — общий провод (минус питания)
5 — RST — подключается к выводу RESET микроконтроллера
6 — GND
7 — SCK — выход тактирования данных
8 — GND
9 — MISO — вход данных для последовательного программирования
10 — GND
Установка драйверов для программатора USBASP
Установка драйвера для программатора USBASB очень проста:
— подсоедините программатор к USB порту компьютера, при этом в диспетчере устройств появится новое устройство «USBasp» с желтым треугольником и восклицательным знаком внутри, что означает — не установлены драйвера
— скачайте и разархивируйте файл «USBasp-win-driver-x86-x64-ia64-v3. 0.7»
— запустите файл «InstallDriver» — будут автоматически установлены драйвера для программатора
— проверьте диспетчер устройств — желтый треугольник должен исчезнуть (если нет, щелкните правой кнопкой по устройству «USBasp» и выберите пункт «Обновить»
— программатор готов к работе
FUSE-биты при программировании USBASP AVR:
Архив «usbasp.2011-05-28» содержит папки:
= BIN:
— win-driver — драйвера для программатора
— firmware — прошивка для микроконтроллеров Mega8, Mega88, Mega48
= circuit — схема простого программатора в PDF и Cadsoft Eagle
При перепрошивке китайского программатора рекомендую установить FUSE-бит CKOPT. CKOPT взаимосвязан с предельной тактовой частотой. По умолчанию CKOPT сброшен и стабильная работа микроконтроллера программатора при применение кварцевого резонатора возможна только до частоты 8 МГц ( а МК программатора работает на частоте 12 МГц). Установка FUSE-бита CKOPT увеличивает максимальную частоту до 16 МГц. Китайцы не трогают этот FUSE-бит, что довольно часто приводит к отказу программатора (обычно система не определяет программатор).
Архив «USBasp-win-driver-x86-x64-ia64-v3.0.7» предназначен для установки драйверов, как указано в статье
usbasp.2011-05-28 (518,9 KiB, 14 455 hits)
Скачать «USBasp-win-driver-x86-x64-ia64-v3.0.7» (10,9 MiB, 27 217 hits)
Описанный в статье USBASP программатор, прошитый последней версией программы, проверенный в работе, с установленными джамперами и перемычками, вы можете приобрести в интернет-магазине «МирМК-SHOP»
Перейти на страницу магазина
(31 голосов, оценка: 4,97 из 5)
Руководство по перепрошивкеISP — QMK
Перепрошивка ISP (также известная как перепрошивка ICSP) — это процесс непосредственного программирования микроконтроллера. Это позволяет вам заменить загрузчик или заменить «предохранители» на контроллере, которые управляют рядом аппаратных и программных функций, таких как скорость контроллера, способ его загрузки и другие параметры.
Основное использование перепрошивки ISP для QMK — это перепрошивка или замена загрузчика на вашем контроллере на базе AVR (Pro Micros или микросхемы V-USB).
Если у вас возникли проблемы с прошивкой / стиранием вашей платы и вы видите загадочные сообщения об ошибках, подобные любому из следующих для контроллера на базе DFU:
libusb: warning [darwin_transfer_status] ошибка передачи: истекло время ожидания
dfu.
c: 844: -ETIMEDOUT: время ожидания передачи истекло, NAK 0xffffffc4 (-60)
атм.c: 1627: atmel_flash: сбой флеш-данных dfu_download.
atmel.c: 1629: Ожидаемая длина сообщения 1072, получено -60.
atmel.c: 1434: Ошибка перепрошивки блока: err -2.
ОШИБКА
Ошибка записи в память, используйте отладку для получения дополнительной информации.
commands.c: 360: Ошибка записи данных в память. (err -4)
dfu.c: 844: -EPIPE: a) Обнаружение лепета или b) Конечная точка остановлена 0xffffffe0 (-32)
Устройство защищено от записи.
dfu.c: 252: dfu_clear_status (0x7fff4fc2ea80)
атм.c: 1434: Ошибка перепрошивки блока: err -2.
ОШИБКА
Ошибка записи в память, используйте отладку для получения дополнительной информации.
commands.c: 360: Ошибка записи данных в память. (err -4)
Или, если вы видите такое сообщение для контроллера на базе Pro Micro:
avrdude: butterfly_recv (): программист не отвечает
avrdude: butterfly_recv (): программист не отвечает
avrdude: ошибка проверки, первое несоответствие в байте 0x002a
0x2b! = 0x75
avrdude: ошибка проверки; несоответствие содержимого
avrdude: ошибка проверки; несоответствие содержимого
Вероятно, вам понадобится прошить вашу плату / устройство через интернет-провайдера, чтобы оно снова заработало.
Вам понадобится одно из следующих устройств, чтобы на самом деле выполнить перепрошивку ISP (с указанием протокола, который они используют):
Есть и другие устройства, которые можно использовать для прошивки ISP, но это основные из них. Кроме того, все ссылки на продукты относятся к официальным версиям. Вы можете найти их в другом месте.
Вам также понадобится что-то для подключения вашего «ISP Programmer» к устройству, которое вы программируете. Некоторые печатные платы могут иметь заголовки ISP, которые вы можете использовать напрямую, но это часто не так, поэтому вам, вероятно, придется припаивать к самому контроллеру или к другим переключателям или другим компонентам.
Контроллеры Teensy и Pro Micro потребуют от вас прошивки микропрограмм ISP на контроллеры, прежде чем вы сможете использовать их в качестве программиста ISP. Остальное оборудование должно быть запрограммировано заранее. Итак, для этих контроллеров загрузите правильный шестнадцатеричный файл и сначала прошейте его.
После прошивки контроллера этот шестнадцатеричный файл больше не понадобится.
QMK Toolbox может использоваться для большинства (всего) этого.
Однако вы можете взять Teensy Loader, чтобы прошить Teensy 2.0, если вы ее используете. Или вы можете использовать avrdude
(установленный как часть qmk_install.sh
) или AVRDUDESS (для Windows) для прошивки Pro Micro и прошивки ISP.
Это довольно просто — мы будем связывать подобные вещи с похожими вещами следующим образом.
PocketAVR RST <-> СБРОС клавиатуры
PocketAVR SCLK <-> Keyboard B1 (SCLK)
PocketAVR MOSI <-> Keyboard B2 (MOSI)
PocketAVR MISO <-> Keyboard B3 (MISO)
PocketAVR VCC <-> Keyboard VCC
PocketAVR GND <-> Keyboard GND
USBasp RST <-> Keyboard RESET
USBasp SCLK <-> Keyboard B1 (SCLK)
USBasp MOSI <-> Keyboard B2 (MOSI )
USBasp MISO <-> Keyboard B3 (MISO)
USBasp VCC <-> Keyboard VCC
USBasp GND <-> Keyboard GND
Teensy B0 <-> Keyboard RESET
Teensy B1 <-> Клавиатура B1 (SCLK)
Teensy B2 <-> Keyboard B2 (MOSI)
Teensy B3 <-> Keyboard B3 (MISO)
Teensy VCC <-> Keyboard VCC
Teensy GND <-> Keyboard GND
!> Обратите внимание, что контакт B0 на Teensy подключен к контакту RESET / RST на контроллере клавиатуры. . НЕ подключайте контакт RESET на Teensy к RESET на клавиатуре.
Pro Micro 10 (B6) <-> СБРОС клавиатуры
Pro Micro 15 (B1) <-> Клавиатура B1 (SCLK)
Pro Micro 16 (B2) <-> Клавиатура B2 (MOSI)
Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
Pro Micro VCC <-> Keyboard VCC
Pro Micro GND <-> Keyboard GND
!> Обратите внимание, что контакт 10 / B6 на Pro Micro является подключен к контакту RESET / RST на контроллере клавиатуры. НЕ подключайте контакт RESET на Pro Micro к RESET на клавиатуре.
После того, как ваш ISP-программист настроен и подключен к клавиатуре, пора прошить клавиатуру.
Самый простой и быстрый способ вернуть все в норму — это прошить на клавиатуру только загрузчик. Как только это будет сделано, вы можете подключить клавиатуру в обычном режиме и прошить клавиатуру, как обычно.
Стандартные загрузчики можно найти в папке util /
.Убедитесь, что вы установили правильный загрузчик для вашего чипа:
Если вы не уверены, что используется на вашей плате, поищите в файле rules.mk
клавиатуру в QMK. Строки MCU
и BOOTLOADER
будут иметь необходимое значение. Он может отличаться для разных версий платы.
Если вы хотите одновременно прошить как загрузчик , так и обычную прошивку, есть два варианта сделать это.Вручную или с помощью цели : production
при компиляции.
Для этого вручную:
-
Откройте исходный файл .hex прошивки в текстовом редакторе
-
Удалите последнюю строку (она должна быть
: 00000001FF
— это сообщение EOF) -
Копировать все содержимое загрузчика на новую строку (без пустых строк между ними) и вставьте его в конец исходного файла
-
Сохраните его как новый файл, назвав его
_ _production. hex
f7228850b7a»>?> Таким же образом можно использовать другие загрузчики, но для вам понадобится загрузчик , иначе вам придется снова использовать ISP, чтобы записать новую прошивку на клавиатуру.
Создание загрузчика QMK DFU и производственных образов
Вы можете создать микропрограмму, загрузчик QMK DFU и производственные образы микропрограмм для платы, используя цель : production
при компиляции. Как только это будет сделано, вы увидите три файла:
-
_ _bootloader.hex -
_ _production. hex
Загрузчик QMK DFU действительно был протестирован только на контроллерах atmega32u4
(таких как платы Planck на базе AVR и Pro Micro) , и не тестировался на других контроллерах. Однако он определенно не будет работать с контроллерами V-USB, такими как atmega32a
или atmega328p
.
Вы можете прошить либо загрузчик, либо файл производственной прошивки.Для прошивки файла производственной прошивки потребуется намного больше времени, так как он содержит намного больше данных.
?> Примечание. Вам следует использовать тот же загрузчик. Если вы уже используете DFU, переключитесь на QMK DFU. Но, например, для прошивки QMK DFU на Pro Micro требуются дополнительные действия.
Убедитесь, что ваша клавиатура отключена от любого устройства, и подключите ISP Programmer.
Если вы хотите изменить тип загрузчика, вам нужно будет использовать командную строку.
-
Устройство AVRISP подключено
илиПодключено миниатюрное устройство USB
будет отображаться желтым цветом -
Выберите правильный загрузчик / производство.шестнадцатеричный файл с диалоговым окном
Открыть
(пробелы не могут быть в пути) -
Убедитесь, что выбран правильный вариант
Микроконтроллер
для клавиатуры, которую вы прошиваете (не программист ISP) -
Подождите, пока ничего не будет выводиться, особенно с производственными файлами
Если проверка и проверка предохранителей в порядке, все готово! Ваша плата может перезагрузиться автоматически, в противном случае отключите Teensy и подключите клавиатуру — вы можете оставить Teensy подключенным к клавиатуре во время тестирования, но рекомендуется распаять его / удалить проводку, как только вы убедитесь, что все работает.
Откройте терминал (например, cmd
в Windows) и перейдите туда, где находится ваш измененный файл .hex. Мы представим, что этот файл называется main.hex
, и что ваш Teensy 2.0 находится на порту COM3
— если вы не уверены, вы можете открыть диспетчер устройств и найти порты > USB Serial Device
. Используйте этот COM-порт здесь. Вы можете подтвердить, что это правильный порт:
avrdude -c avrisp -P COM3 -p atmega32u4
, и вы должны получить что-то вроде следующего вывода:
avrdude: устройство AVR инициализировано и готово принимать инструкции
Чтение | ############################################### | 100% 0.
02s
avrdude: сигнатура устройства = 0x1e9587
avrdude: safemode: предохранители в норме
avrdude done. Спасибо.
Поскольку наша клавиатура использует atmega32u4
(общий), мы укажем именно этот чип. Это полная команда:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash: w: main.hex: i
Если на вашей плате используется atmega32a
(например, на jj40), команда это (дополнительный код в конце правильно устанавливает предохранители):
avrdude -c avrisp -P COM3 -p atmega32 -U flash: w: main.hex: i -U hfuse: w: 0xD0: m -U lfuse: w: 0x0F: m
Вы должны увидеть пару индикаторов выполнения, затем вы должны увидеть:
avrdude: verifying .
..
avrdude : 32768 байтов флэш-памяти проверено
avrdude: safemode: Предохранители исправны
avrdude done. Спасибо.
Значит, все должно быть в порядке! Ваша плата может перезагрузиться автоматически, в противном случае отключите Teensy и подключите клавиатуру — вы можете оставить Teensy подключенным к клавиатуре во время тестирования, но рекомендуется распаять его / удалить проводку, как только вы убедитесь, что все работает.
Если вы используете программатор SparkFun PocketAVR или другой программатор ISP на базе USB Tiny, вам нужно будет использовать что-то вроде этого:
avrdude -c usbtiny -P usb -p atmega32u4
Если вы при переключении загрузчиков, таких как прошивка QMK DFU на Pro Micro, вам нужно будет заменить предохранители в дополнение к прошивке шестнадцатеричного файла загрузчика. Это связано с тем, что
caterina
(загрузчик Pro Micro) и dfu
по-разному обрабатывают процедуры запуска, и это поведение контролируется предохранителями.
!> Это одна из областей, в которой очень важно соблюдать осторожность, поскольку смена предохранителей — это один из способов навсегда заблокировать контроллер.
Для этого мы предполагаем версии 5V 16MHz atmega32u4
(например, 5V Pro Micro).
Для DFU на atmega32u4
вам нужны следующие настройки предохранителя:
Предохранитель High может быть 0xD9 или 0x99. Разница в том, что 0xD9 отключает JTAG, который прошивка QMK также отключает через программное обеспечение, а 0x99 не отключает JTAG.
Чтобы установить это, добавьте к вашей команде -U lfuse: w: 0x5E: m -U hfuse: w: 0xD9: m -U efuse: w: 0xC3: m
. Таким образом, последняя команда должна выглядеть примерно так:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash: w: main.hex: i -U lfuse: w: 0x5E: m -U hfuse: w: 0xD9: m -U efuse: w: 0xC3: m
atmega32u4 вам нужны следующие настройки предохранителя:
Чтобы установить это, добавьте -U lfuse: w: 0xFF: m -U hfuse: w: 0xD8: m -U efuse: w: 0xCB: m
вашей команде.Таким образом, последняя команда должна выглядеть примерно так:
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash: w: main.
hex: i -U lfuse: w: 0xFF: m -U hfuse: w: 0xD8: m -U efuse: w: 0xCB: m
Если вы используете другой контроллер или хотите другую конфигурацию, вы можете использовать этот калькулятор предохранителей AVR, чтобы найти лучшее значение для вас.
Если у вас есть вопросы / проблемы, не стесняйтесь открывать выпуск!
микроконтроллер Arduino
микроконтроллер ArduinoНастройка Arduino IDE
Загрузите и установите последнюю версию Arduino IDE: https: // www.arduino.cc/en/Main/Software
Ардуино ProMini
Описание
Arduino ProMini — это уменьшенная версия платы Arduino. Он использует тот же микроконтроллер (ATmega328) с меньшим форм-фактором.
Страница продукта: https://www.arduino.cc/en/Main/ArduinoBoardProMini
Примечание: он не включает интерфейс USB, поэтому его необходимо программировать с помощью кабеля UART или программатора Arduino (например, USBASP)
Платы-клоны ProMini можно купить на ebay за ~ 2 доллара.
ATmega328 имеет следующие характеристики:
ЦП | AVR (8 бит) | ||||||||||||||||||||||||||
Частота | 20 МГц (макс.), 16 МГц (тип при 5 В), 8 МГц (тип при 3,3 В) | 2 кБ | |||||||||||||||||||||||||
Флэш-память | 32 кБ | ||||||||||||||||||||||||||
EEPROM | 1 кБ | ||||||||||||||||||||||||||
Пакет | |||||||||||||||||||||||||||
Пакет | Q6 / 902 9025 / Q4 9025/9025 Конфигурация с идентификатором 9025 / Q4
Выберите правильную плату:
Более подробную информацию можно найти там. ЗагрузчикЗагрузчик необходим для использования Arduino IDE для программирования через USB / SERIAL. DigisparkОписаниеDigispark — это очень маленькая плата с форм-фактором USB Key с ядром ATtiny85 .![]() Страница продукта: http://digistump.com/products/1 Из-за ограниченных ресурсов ATtiny многие библиотеки Arduino не работают. Платы-клоныDigispark можно купить за ~ 1 доллар.5 на ebay. ATtiny85 имеет следующие характеристики:
Конфигурация IDEUSB-драйвер DigisparkУстановите драйвер USB в загрузчик MicroNucleus, чтобы IDE могла перепрограммировать плату Digispark через USB Скачать версию для Windows можно здесь Добавить поддержку Digispark в IDE Запустите Arduino IDE. Плата может быть запрограммирована из IDE при подключении через USB. STM32duinoОписаниеSTM32duino использует гораздо более мощный микроконтроллер STM32F103C8T6 на базе процессора ARM Cortex M3 72 МГц. Страница продукта: http://wiki.stm32duino.com/index.php?title=STM32F103_boards ПлатыSTM32duino можно купить на ebay за чуть более 2 долларов. STM32F103C8T6 имеет следующие характеристики:
Загрузчик USBUSB-загрузчик должен быть запрограммирован с помощью UART и ST flasher tool:
Конфигурация IDEДобавить поддержку STM32 в IDE Запустите Arduino IDE. Полную информацию можно найти здесь Установить плату IDE Выберите правильную плату:
WAVGAT AVGA328P | .![]() Это самый обновленный репозиторий, о котором мне известно: https://github.com/dbuezas/lgt8fx В репозитории выше LGT8FX> lgt8f> bootloaders> lgt8fx8p> makefile the Информация об определении make-файла для программирования этого чипа: ————————————— ————————————————— —————- # LGT8F328P lgt8f328p_isp: lgt8f328p -C config-file Использовать указанный файл конфигурации для данных конфигурации. Этот файл Если файл конфигурации записан как + имя файла ———————————————— ————————————————— ————- Не похоже, что логический зеленый создал правильный файл конфигурации -C для AVRdude, по крайней мере, не внутри ядра ArduinoISP и файлов сборки.Похоже, что конфигурация была встроена в цепочку инструментов ArduinoISP. Я не придумал, как его извлечь … пока. Их эскиз ArduinoISP сильно отличается от того, который используется по умолчанию. Хотя я не эксперт. -Джейк Atmel Attiny13a, запрограммированный с использованием Arduino Ide Мне показалось, что работать со студией atmel немного сложно. Atmel studio — это тяжелое программное обеспечение, оно занимает слишком много времени на компиляцию, занимает большую часть системной оперативной памяти, библиотеки не очень хорошо объяснены, и, прежде всего, сообщество помощи невелико.
Распакуйте файл .
Светодиод мигания с Atmel Attiny13A, Arduino Ide и Proteaus SimulationЧтобы доказать, что верхняя конфигурация работает, я сделал простой проект / программу с мигающим светом.Светодиод переключается примерно за полсекунды. Я подключил светодиод к контакту PB4 attiny13a. Я использовал внутренний кристалл 4,8 МГц в качестве источника синхронизации. На выводе сброса я подключил кнопку для повторного запуска микроконтроллера. Вся схема питается от элемента CR2032. Cr2032 представляет собой плоскую батарею на 3,3 В. Attiny во время работы потребляет очень мало энергии. Микроконтроллеры Atmel серии attiny считаются мастерами гибернации. Они могут оставаться в спячке годами при очень небольшом количестве электроэнергии.Принципиальная схема проекта представлена ниже. ПроектПринципиальная схема Attiny13A Пример Blink. Программирование Attiny13a с помощью программатора UsbAsp
Usbasp программатор программирование микроконтроллер atmel attiny13a Программирование attiny13a с использованием Arduino uno в качестве IspAttiny13a можно запрограммировать с помощью arduino uno.![]()
Attiny13a, запрограммированный на Arduino uno Загрузите код проекта и моделирование.Моделирование выполнено в протео. Папка с кодом содержит файл кода Arduino и файл .hex, которые можно записать на микроконтроллер непосредственно для программы с мигающим светодиодом. Пожалуйста, поделитесь с нами своим мнением о проекте. Посмотрите видео о проекте здесь…Включить Arduino для поддержки ATMEGA 168P (запись BOOTLOADER) Недавно я сделал гаджет, потому что первая ДЕМО была сделана на Arduino Pro Mini. При покупке однокристального чипа выяснилось, что ATMEGA168P дешевле ATMEGA328P. Похоже, он поддерживается в Arduino IDE. У чипа IDE есть опция ATMEGA168. Хотя DEMO основан на ATMEGA328P, заменять программу на Arduino не требуется. Доработал, поэтому купил ATMEGA168P, (очень себе яму копаю). После доставки чипа, поскольку программа Arduino обычно загружается из последовательного порта, я оставляю только интерфейс последовательного порта на печатной плате (фактически, он может быть загружен интернет-провайдером, используя загрузку 11, 12, 13 контактов, но у меня нет печатной платы.Оставьте интерфейс). В отличие от минимальной системной платы ProMini, которая приобретается напрямую, продавец приобретенных плат для разработки сначала записывает BootLoader для вас, чтобы вы могли загрузить его прямо из последовательного порта, но если вы купите чип, вы ничего не сожжете. Чтобы загрузить программу удобно (с использованием последовательного порта для загрузки), первым делом необходимо очистить микросхему BOOTLOADER, которая является программой загрузки, упомянутой в среде IDE. Я думал, что с использованием Arduino в качестве ISP (с использованием другого Arduino в качестве загрузчика ISP) можно загрузить.Но все время скачивать не могу. Причина в том, что когда я выбираю ATMEGA168 в среде IDE, его подпись — 1E: 94: 06, а я использую ATMEGA168P, его характеристическое слово — 1E: 94: 0B, поэтому загрузка ISP не удастся.
После некоторой проверки в сети я должен изменить файл плат и добавить плату разработки в IDE в соответствии с фактическими словами функций. После нескольких часов попыток я изменил IDE Arduino, хотя не будет сообщений об ошибках, указывающих на несоответствие функциональных слов.После ожидания более десяти секунд загрузка не удалась. Тогда сдавайся. Модель микросхемы -> функциональное слово ATMEGA328P -> 1E: 95: 0F ATMEGA168 -> 1E: 94: 06 ATMEGA168P -> 1E: 94: 0B
Купил USBISP и использовал AVR_FIGHTER.
Определение интерфейса ISP
Сначала прочтите функциональное слово и прочтите правильное значение, чтобы убедиться в отсутствии проблем с пайкой кристалла и кристалла.
Есть подсказка, не беспокойтесь, потому что в выборе микросхемы этого программного обеспечения нет микросхемы 168P, прочтите все показания, чтобы убедиться, что с подключением нет проблем, нужно обратить внимание на то, чтобы не поскользнуться запись Запись неправильного значения может заблокировать микросхему. По умолчанию используются следующие биты предохранителя: низкий 0x62, высокий: DF, специальный бит: F9 (на фото выше). Мы должны установить его на FF, DD, 00
Затем запишите BOOTLOADER, установите FLASH-> выберите ATmegaBOOT_168_diecimila.шестнадцатеричный -> программирование микросхемы В качестве примера возьмем IDE, которую я установил на диск D. Файл находится в D: \ Program Files (x86) \ Arduino \ hardware \ arduino \ avr \ bootloaders \ atmega .![]()
Дождитесь завершения программирования и проверки. Если программирование прошло успешно, 13-контактный светодиод будет мигать каждые 1 с. Используйте последовательный порт, чтобы загрузить программу Blink и добиться успеха. Обратите внимание на схему сброса, контакт RESET микроконтроллера должен быть подключен к резистору 10K, а затем подключить 0.Конденсатор 1u к интерфейсу RTS от USB к последовательному порту (то есть DTR подключен к RTS) для автоматического сброса при загрузке программы.
Настройки предохранителя | IT ЛюксембургПредохранители — это несколько специальных байтов конфигурации, которые хранятся в микроконтроллере atmega328. Их роль заключается в настройке параметров низкого уровня микроконтроллера, таких как тип кварцевого генератора, подключенного к нему, уровень детектора пониженного напряжения, размер загрузчика и т. Д. Когда вы покупаете модуль OrangeRX или Wolfbox, предохранители предварительно настроены на определенные значения. Однако их значения можно изменить при определенных обстоятельствах. Одного кабеля FTDI недостаточно для изменения значений предохранителей, это можно сделать только с помощью программатора, такого как программатор USBasp. Причин может быть несколько, но для проекта ULRS наиболее очевидной является активация детектора потемнения на модулях OrangeRX. Детектор потемненияДетектор пониженного напряжения (BOD) — это простая функция микроконтроллера, которая отключает его, когда его напряжение питания ниже настраиваемого предела. Это рекомендуется для любого проекта, потому что, если микроконтроллер работает при пониженном напряжении, это может привести к неожиданному поведению: например, он может случайным образом перейти в любую ячейку памяти и выполнить код. Одним из следствий этого является то, что он может перейти в код загрузчика и выполнить произвольные последовательности кода, которые изменят флэш-память. В этом случае сама прошивка может быть повреждена и даже после перезагрузки микроконтроллера и правильного включения питания она не будет работать. Подобные примеры можно найти в других проектах (например здесь). Для этого напряжение питания модуля должно быть очень низким, ниже 3,39 В (помните, что из-за импульсного регулятора напряжение питания микроконтроллера ниже). Этого не должно происходить при нормальном использовании с модулем, подключенным напрямую к батарее, но это уже произошло с пользователем с почти разряженной батареей и полным газом. Непонятно, почему Hobbyking не активирует BOD по умолчанию, но в любом случае для максимальной безопасности рекомендуется это сделать. Требуется только для модулей OrangeRX?Да, потому что Arduino Mini (модули ULRS Mini) имеют заводскую настройку BOD 4,3 В, что нормально, поскольку эти платы работают при 5 В. Так что все модули ULRS Mini на базе arduino mini уже имеют хороший BOD. А для модулей Wolfbox это еще нужно проверить. Значения предохранителей Предохранители представлены 3 байтами: предохранитель высокого уровня, предохранитель низкого уровня и расширенный предохранитель. Обратите внимание, что предохранители верхнего, нижнего и нижнего пределов иногда располагаются в другом порядке. Заводские параметры предохранителей для OrangeRXЗаводские настройки модулей OrangeRX: Расширенный предохранитель: 0xFF (0x означает, что это шестнадцатеричное значение) Заводские значения предохранителей для Arduino pro mini 5V 16MHz, используемых в ULRS MinisЭто просто для информации, как объяснено выше, Arduino pro mini имеет заводскую настройку 4.3V BOD, и это нормально, так как он работает при 5V. Так что не нужно его менять. Заводские настройки на Arduino pro mini 5V 16MHz: Расширенный предохранитель: 0xF8 Рекомендуемые значения предохранителей Значения предохранителей различаются для детектора перегорания, который затем настраивается на 2,7 В. Обратите внимание, что atmega328 допускает только 3 различных значения BOD, и 2,7 В — единственное значение, которое будет работать для этого проекта. (Не пытайтесь установить значение 4.3 В, потому что микроконтроллер питается от 3,3 В, и не устанавливайте его на 1,8 В, потому что это не даст никаких улучшений.) Расширенный предохранитель: 0xFD ПредупреждениеСледует отметить, что неправильная модификация предохранителей может сделать плату непригодной для использования. Например, если Debugwire и SPI деактивированы одновременно, невозможно будет снова запрограммировать деталь, в том числе невозможно будет снова изменить предохранители.Обычно в этом случае вам придется покупать новую деталь. Замена предохранителейНе вдаваясь в подробности установки avrdude, команда для запуска установки предохранителей с помощью USBasp следующая: avrdude -Cavrdude. Последние сообщениястраницКатегорииАрхивсообщений по категориямUltimate LRS Mini | IT ЛюксембургНа рынке есть несколько модулей, которые можно использовать с Ultimate LRS, включая модули Hobbyking OrangeRX. Однако также возможно построить Ultimate LRS Mini. Идея заключалась в том, чтобы предложить простую схему, и позволить сообществу спроектировать печатную плату на основе этой схемы. Результаты превзошли все ожидания, и на этой странице вы можете найти 11 производственных проектов (на самом деле немного больше, поскольку некоторые конструкции имеют разные печатные платы для TX и для RX), 5 других находятся в стадии разработки. Обратите внимание, что IT Luxembourg не продает какое-либо оборудование, печатные платы, компоненты или модули.
Один из 11 дизайнов ULRS Mini ОписаниеЭталонная схема была основана на следующих принципах:
Текущая версияСхема для версии 1.04 Миниатюрная эталонная схемаULRS, версия 1.04
Несколько пользователей сделали модули ULRS Mini на основе эталонной схемы. Вы можете выбрать любой из этих вариантов, но обратите внимание на их различия. Сквозные отверстия ULRS MinisДоска обезьян
ULRS плата Monkey, модули TX (слева) и RX (справа) Дизайн основан на схеме ULRS Mini, созданной пользователем rcgroups neo_04, полная информация здесь и здесь.Две разные платы, одна для TX, другая для RX.
Доска для морских звезд
Доска Joey
Доска Wombat
Версия 1Очень похож на Spongeboard, но меньше по размеру, эта конструкция от австралийского пользователя rcgroups як-54 выглядит очень красиво: Версия 2
Губчатая доска
Пользователь ljakob из rcgroups сделал печатную плату для Ultimate LRS Mini, которую можно заказать прямо сейчас.В нем используются только компоненты со сквозными отверстиями, и его очень легко построить:
Мини-модули SMD ULRSПчелиная доска
Доска Chamaleon V1.2
Доска для бабочек
Предупреждение: есть несколько отчетов пользователей о проблемах с этой платой. На всякий случай подумайте о создании еще одной из предложенных плат. Пользователь «Cereal_Killer» изRcgroups сделал печатную плату с SMD-компонентами, и она была намного меньше, чем Spongeboard. Доска Warthog
Пользователь «shaggibomb» из rcgroups сделал печатную плату для Ultimate LRS Mini, которая поместится в корпусе JR, имеет ВЧ-фильтр и импульсный источник питания.
Совет саамиПользовательRcgroups Самисин сделал три SMD-платы с множеством функций:
В незавершенном производствеQ-Board
Доска для колибри
Две платы ULRS Mini из КитаяПреимущество открытого дизайна, такого как ULRS Mini si, в том, что пользователи по всему миру создают свой собственный вкус.Недавно я заметил новую доску ULRS Mini на китайской доске обсуждений. Примечание: пользователь, который это сделал, связался со мной по электронной почте и сказал, что сожалеет о том, что использовал дизайн и логотип ULRS Mini без разрешения. Чтобы было понятно, здесь нет никаких проблем, и я разрешаю любому создавать оборудование на основе эталонной схемы ULRS Mini и иметь на нем логотип / название ULRS.
И еще один пользователь из Китая прислал мне несколько фотографий другого дизайна ULRS Mini:
Вариант саамской доски
А…Сообщите мне о ваших успехах в создании DIY Ultimate LRS Mini, я опубликую вашу печатную плату или изображения на этой странице. 2019 © Все права защищены. Карта сайта |