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

Содержание

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 в списке.

  1. Нажмите записать в разделе «Fuses&Lock bits». Затем зачитайте, чтобы проверить что фьюзы действительно записались. Не отключайте USBasp.
  2. Перейдите в Arduino Ide, в Board Manager, выберите SensebenderMicro, если вы хотите использовать загрузчик DualOptiboot FOTA. Или выберите Arduino Mini pro MYSBootloader
  3. Затем выберите процессор Atmel328 8Mhz, USBASP As programmer.
  4. Нажмите 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.

  1. Запомните где этот файл и закройте Arduino ide (иначе ваши изменения будут утеряны).
  2. В файле preferences.txt в конце добавляем

    build.path=C:\Arduino-Output\

    build.path=C:\Arduino-Output\

    или другой предпочтительный путь. Это будет папка компиляции для ваших файлов .hex. Закройте диалоговое окно.
  3. Откройте Arduino ide и скомпилируйте и проверьте проект вашего узла. Теперь вы должны найти свои скомпилированные файлы в папке, которую вы установили ранее.
  4. Скопируйте .hex в парку Firmware для MYSController. Или загрузите .hex в разделе «Прошивки» в модуле MajorDomo MySensors

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

  1. Открыть MYSController, перейдите в Config/Serial, проверьте правильный последовательный COM-порт для вашего GW.
  2. Нажмите на кнопку «Обновить 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. 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

  1. Теперь чтобы отправить новый эскиз по воздуху на ваш узел, просто щелкните правой кнопкой мыши на узле, который требуется обновить. Для спящего узла батареи, выберите «с питанием от батареи Спящий». При этом, когда ваш узел проснетесь, MYSController будет отправлять обновление.
  2. Нажмите «Назначить FW»
  3. Выберите эскиз .hex.

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

Прошивка ардуино про мини через usbasp — Назрановский аграрный техникум



Выбираем нужную плату через меню По окончанию. В этом случае прошивка PRO M U.В прошлый раз мы разобрались, как программировать A P через USB, а сегодня. Прошивка USB с помощью A. Как установить драйвер для программатора USB в W 8 и W 10. Ардуино про мини ATMEGA328P 5 В 16 МГц Скачайте образ новой прошивки для A P M U и поместите ее в папку D на. 208 и специальный драйвер, который необходим для прошивки A P M U. USBA если он еще не установлен и запускам среду A IDE Выбираем тип программатора USBASP Выбираем тип. Разберемся как программировать A P через программатор USB. Еще раз про A P M и его прошивку A P M в проверенном. Спасибо сказали 299 раз. Для прошивки A P M U нам необходимо скачать и установить приложение U P T. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку. Мультиком звонил от ног программатора до контактов на ардуино, все было норм. Приведу схему, показывающей правильное подключение программатора к плате. Проверьте обновление прошивки. Переходник USB TTL PL2303 Ардуино про мини ATMEGA328P 5 В 16 МГц Провода. Проблема прошивки A P через USB. Такая же, просто через кабель, а не напрямую от программатора. 0 он адекватно работал и шил ардуинки, но. Для примера пусть это будет мигание светодиодом Далее подключаем его, точнее я подпаял, к ардуино нано. Прошивка аналогична прошивке обычного микроконтроллера подключаем выводы SCK, MISO, MOSI, RESET один в. Запрограммировать Ардуино Про Мини не так уж и просто если нет нормального. Обновление прошивки USBASP программатора для AVR микроконтроллеровОбо всм понемножку! Программирование Ардуино с нуля. Делаем из USB SPI программатор. Если прошить в про мини бутлоадер ему это не повредит? Доброго времени суток всем! Здесь вы найдете стоковые и официальные прошивки для U A M, а также пошаговые инструкции по установке программного обеспечения. Избавиться от постоянных сбоев в работе A PRO M U поможет прошивка, которую можно скачать с официального сайта Прошивка Ардуино про Мини через USB. Прошивка A P M через 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.

Установка джампера JP2 на USBasp

На плате 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»
Перейти на страницу магазина

Программирование микроконтроллеров AVR фирмы Atmel

(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 при компиляции.

Для этого вручную:

  1. Откройте исходный файл .hex прошивки в текстовом редакторе

  2. Удалите последнюю строку (она должна быть : 00000001FF — это сообщение EOF)

  3. Копировать все содержимое загрузчика на новую строку (без пустых строк между ними) и вставьте его в конец исходного файла

  4. Сохраните его как новый файл, назвав его _ _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.

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

  1. Устройство AVRISP подключено или Подключено миниатюрное устройство USB будет отображаться желтым цветом

  2. Выберите правильный загрузчик / производство.шестнадцатеричный файл с диалоговым окном Открыть (пробелы не могут быть в пути)

  3. Убедитесь, что выбран правильный вариант Микроконтроллер для клавиатуры, которую вы прошиваете (не программист ISP)

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

Если проверка и проверка предохранителей в порядке, все готово! Ваша плата может перезагрузиться автоматически, в противном случае отключите 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 имеет следующие характеристики:

904
ЦП AVR (8 бит)
Частота 20 МГц (макс.), 16 МГц (тип при 5 В), 8 МГц (тип при 3,3 В)
2 кБ
Флэш-память 32 кБ
EEPROM 1 кБ
Пакет
Пакет Q6 / 902 9025 / Q4 9025/9025 Конфигурация с идентификатором 9025 / Q4

Выберите правильную плату:
Инструменты > Платы = ‘Arduino Pro или Pro Mini’
Инструменты > Процессор = ‘ATmega328 (5 В, 16 МГц)’
Инструменты > Программатор = ‘USBasp’

Более подробную информацию можно найти там.

Загрузчик

Загрузчик необходим для использования Arduino IDE для программирования через USB / SERIAL.

Digispark

Описание

Digispark — это очень маленькая плата с форм-фактором USB Key с ядром ATtiny85

.

Страница продукта: http://digistump.com/products/1

Из-за ограниченных ресурсов ATtiny многие библиотеки Arduino не работают.

Платы-клоны

Digispark можно купить за ~ 1 доллар.5 на ebay.

ATtiny85 имеет следующие характеристики:

CPU AVR (8-бит)
Частота 20 МГц (макс.)
RAM 512B
Flash 8kB
Пакет SOIC-8

Конфигурация IDE

USB-драйвер Digispark

Установите драйвер USB в загрузчик MicroNucleus, чтобы IDE могла перепрограммировать плату Digispark через USB

Скачать версию для Windows можно здесь

Добавить поддержку Digispark в IDE

Запустите Arduino IDE.
Файл > Настройки > Дополнительные URL-адреса Board Manager = ‘http://digistump. com/package_digistump_index.json’
Инструменты > Board > Boards Manager : Install ‘Digistump AVR Boards’
Инструменты > Board = ‘Digispark (по умолчанию)’

Плата может быть запрограммирована из IDE при подключении через USB.

STM32duino

Описание

STM32duino использует гораздо более мощный микроконтроллер STM32F103C8T6 на базе процессора ARM Cortex M3 72 МГц.

Страница продукта: http://wiki.stm32duino.com/index.php?title=STM32F103_boards

Платы

STM32duino можно купить на ebay за чуть более 2 долларов.

STM32F103C8T6 имеет следующие характеристики:

Процессор ARM Cortex M3 (16/32 бит)
Частота 72 МГц
RAM 20kB
Flash 64kB (может быть 128kB)
Freq QFP-48

Загрузчик USB

USB-загрузчик должен быть запрограммирован с помощью UART и ST flasher tool:

  • Загрузите и установите инструмент STM32 Flasher отсюда
  • Загрузите загрузчик USB STM32 отсюда
  • Подключите Serial1 UART: PA9-> RX, PA10-> TX
  • Установите Boot0 (напротив сброса) на высокий
  • Запустить прошивальщик, снять защиту от флеш-памяти, прошить загрузчик.

Конфигурация IDE

Добавить поддержку STM32 в IDE

Запустите Arduino IDE.
# установить набор инструментов arm-none-eabi-g ++
Инструменты > Board > Boards Manager : Установите ‘Arduino Zero’
Загрузите аппаратную библиотеку STM32 отсюда.
Разархивируйте в «Мои документы / Arduino / оборудование»
Установите драйверы последовательного порта STM32: в Windows запустите drivers / win / install_drivers.bat

Полную информацию можно найти здесь

Установить плату IDE

Выберите правильную плату:
Инструменты > Платы = ‘Стандартная серия STM32F103C’
Инструменты > Вариант = ‘STM32F103C8 (20 КБ ОЗУ, 64 КБ флэш-памяти)’
Инструменты > Частота процессора = ’72 МГц (нормальная)’
Инструменты > Метод загрузки = ‘STM32duino bootloader’
Инструменты > Порт = <интерфейсный порт USB / UART>

05-окт-2018

WAVGAT AVGA328P | .

Стек | Hackaday.io

Это самый обновленный репозиторий, о котором мне известно:

https://github.com/dbuezas/lgt8fx

В репозитории выше

LGT8FX> lgt8f> bootloaders> lgt8fx8p> makefile

the Информация об определении make-файла для программирования этого чипа:

————————————— ————————————————— —————-

# LGT8F328P
lgt8f328p: EXT_OSC? = 0
lgt8f328p: TARGET = lgt8f328p
lgt8f328p: MCU_TARGET = atmega328p
lgt:
# lgt8f328p: CFLAGS + = $ (COMMON_OPTIONS) ‘-DSOFT_UART’
lgt8f328p: CFLAGS + = ‘-DVIRTUAL_BOOT_PARTITION’
lgt8f328p: AVR_FREQgt? = 16000000L section: AVR_FREQgt? = 16000000L sectionbootv = 0x0
lgt8f328p: LDSECTIONS + = -Wl, — section-start = .text = 0x7400 -Wl, — section-start = .version = 0x77fe
lgt8f328p: $ (ПРОГРАММА) _lgt8f328p.elf
lgt8f32 ПРОГРАММА) _lgt8f328p.hex
lgt8f328p: $ (ПРОГРАММА) _lgt8f328p. lst

lgt8f328p_isp: lgt8f328p
lgt8f328p_isp: TARGET = lgt8f328p
lgt8f328p_isp: MCU_TARGET = atmega323p
lgt8f328p_isp
lgt8f328p_isp 9_______________ 9 _________________nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions):

-C config-file

Использовать указанный файл конфигурации для данных конфигурации. Этот файл
содержит все определения программиста и деталей, о которых знает AVRDUDE.
Если у вас есть программатор или деталь, о которых AVRDUDE не знает, вы
можете добавить его в файл конфигурации (обязательно и отправьте исправление обратно автору
, чтобы его можно было включить в следующую версию). Если не указан
, AVRDUDE читает файл конфигурации из
/ usr / local / etc / avrdude.conf (FreeBSD и Linux). См. Приложение A для
метода поиска файла конфигурации для Windows.

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

———————————————— ————————————————— ————-

Не похоже, что логический зеленый создал правильный файл конфигурации -C для AVRdude, по крайней мере, не внутри ядра ArduinoISP и файлов сборки.Похоже, что конфигурация была встроена в цепочку инструментов ArduinoISP. Я не придумал, как его извлечь … пока.

Их эскиз ArduinoISP сильно отличается от того, который используется по умолчанию. Хотя я не эксперт.

-Джейк

Микроконтроллер

Atmel Attiny13a, запрограммированный с использованием Arduino Ide

Мне показалось, что работать со студией atmel немного сложно. Atmel studio — это тяжелое программное обеспечение, оно занимает слишком много времени на компиляцию, занимает большую часть системной оперативной памяти, библиотеки не очень хорошо объяснены, и, прежде всего, сообщество помощи невелико. Поэтому я решил запрограммировать микроконтроллеры серии Atmel attiny с помощью arduino ide. Arduino ide напрямую не поддерживает микроконтроллеры серии atmel attiny. Чтобы создать серию attiny, запрограммированную на arduino ide. Мы должны установить некоторые плагины в системные файлы arduino ide. В этом посте я объясню, как установить плагины серии attiny для arduino ide и какие изменения нам нужно внести в системные файлы arduino, чтобы сделать серию attiny распознаваемой arduino ide. После установки совместимости серии я объясню небольшой проект, который я сделал с использованием микроконтроллера atmel attiny13a.Я запрограммировал микроконтроллер attiny13a с помощью arduino ide с помощью внешнего программатора usbasp. Я также запрограммировал микроконтроллер attiny13a с автономным Arduino как icsp.

Чтобы установить плагин arduino ide для микроконтроллера atmel attiny13a. Загрузите файл, указанный ниже.


Распакуйте файл . rar. Вы получите папку с именем attiny13. Найдите каталог установки файлов Arduino.Найдите папку «Оборудование» в каталоге установки arduino. Обычно это C: \ Program Files (x86) \ Arduino \ hardware. Поместите папку attiny13 в папку оборудования. Перезапустите arduino ide, и под опцией плат вы найдете опции attiny13a. Attiny13a будет перечислен с пятью различными конфигурациями часов. Во всех конфигурациях используется небольшой внутренний источник синхронизации. Я проверил все источники часов, и они работают нормально. Но некоторые пользователи в Интернете говорят, что им сложно создавать надлежащие задержки.Я проверил функцию delay () для каждого источника часов, и она у меня сработала правильно.

Выбор микроконтроллера

Attiny13a в arduino ide

Типовой вывод attiny13a для использования с arduino ide приведен ниже. D0-D5 обозначает цифровые выводы, а A0-A1 обозначает аналоговые выводы. Итак, attiny с arduino ide имеет 5 цифровых контактов и два аналоговых контакта.

Распиновка

Attiny13a для arduino ide

Светодиод мигания с Atmel Attiny13A, Arduino Ide и Proteaus Simulation

Чтобы доказать, что верхняя конфигурация работает, я сделал простой проект / программу с мигающим светом.Светодиод переключается примерно за полсекунды. Я подключил светодиод к контакту PB4 attiny13a. Я использовал внутренний кристалл 4,8 МГц в качестве источника синхронизации. На выводе сброса я подключил кнопку для повторного запуска микроконтроллера. Вся схема питается от элемента CR2032. Cr2032 представляет собой плоскую батарею на 3,3 В. Attiny во время работы потребляет очень мало энергии. Микроконтроллеры Atmel серии attiny считаются мастерами гибернации. Они могут оставаться в спячке годами при очень небольшом количестве электроэнергии.Принципиальная схема проекта представлена ​​ниже.

Проект

Принципиальная схема Attiny13A Пример Blink.

Программирование Attiny13a с помощью программатора UsbAsp

Для загрузки кода в микроконтроллер я использовал внешний программатор Usbasp. Attiny13a можно запрограммировать, используя его интерфейс icsp. Схема подключения аттини к программатору usbasp представлена ​​ниже. Usbasp может программировать при Vcc = 3,3 В и 5 В. Выбрать уровень напряжения можно с помощью перемычки, установленной на программаторе usbasp.Я выбрал 3.3в. Поскольку я использую аттини с аккумулятором cr2302, рассчитанным на 3,3 В. Лучше работать на одном уровне напряжения. Но вы также можете запрограммировать его на 5В.
Примечание : При использовании внешнего программатора, такого как usbasp, код можно загрузить в микроконтроллер только с помощью опции Sketch> Upload using Programmer .

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

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

Usbasp используется для программирования микроконтроллера attiny13a с использованием arduino ide

Usbasp программатор программирование микроконтроллер atmel attiny13a

Программирование attiny13a с использованием Arduino uno в качестве Isp

Attiny13a можно запрограммировать с помощью arduino uno. Код можно загрузить, выполнив следующие простые шаги.
  • Подключите arduino к ПК.
  • Выберите правильный порт и плату Arduino, в нашем случае «Arduino Uno».
  • Загрузите на Arduino скетч «ArduinoISP», приведенный в примерах. Дождитесь загрузки скетча. После загрузки переходите к следующему шагу.
  • Выберите «Arduino as ISP» в раскрывающемся меню «Программист».
  • Выберите правильный порт.
  • Выберите «ATtiny13A standalone 4.8Mhz» из раскрывающегося меню Board.
  • Откройте скетч, который вы хотите загрузить на attiny13a, и загрузите код, нажав кнопку загрузки.

Attiny13a, запрограммированный на Arduino uno

Загрузите код проекта и моделирование.Моделирование выполнено в протео. Папка с кодом содержит файл кода Arduino и файл .hex, которые можно записать на микроконтроллер непосредственно для программы с мигающим светодиодом. Пожалуйста, поделитесь с нами своим мнением о проекте.

Посмотрите видео о проекте здесь…

Включить Arduino для поддержки ATMEGA 168P (запись BOOTLOADER)

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

При покупке однокристального чипа выяснилось, что 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 байтами: предохранитель высокого уровня, предохранитель низкого уровня и расширенный предохранитель. Каждый бит каждого байта имеет определенное значение, пожалуйста, обратитесь к таблице данных atmega328 для описания всех битов (или к этой статье или к этому онлайн-калькулятору предохранителей).

Обратите внимание, что предохранители верхнего, нижнего и нижнего пределов иногда располагаются в другом порядке.

Заводские параметры предохранителей для OrangeRX

Заводские настройки модулей OrangeRX:

Расширенный предохранитель: 0xFF (0x означает, что это шестнадцатеричное значение)
Высокий предохранитель: 0xD8
Низкий предохранитель: 0xF7

Заводские значения предохранителей для Arduino pro mini 5V 16MHz, используемых в ULRS Minis

Это просто для информации, как объяснено выше, Arduino pro mini имеет заводскую настройку 4.3V BOD, и это нормально, так как он работает при 5V. Так что не нужно его менять.

Заводские настройки на Arduino pro mini 5V 16MHz:

Расширенный предохранитель: 0xF8
Верхний предохранитель: 0xDA
Низкий предохранитель: 0xFF

Рекомендуемые значения предохранителей

Значения предохранителей различаются для детектора перегорания, который затем настраивается на 2,7 В.

Обратите внимание, что atmega328 допускает только 3 различных значения BOD, и 2,7 В — единственное значение, которое будет работать для этого проекта. (Не пытайтесь установить значение 4.3 В, потому что микроконтроллер питается от 3,3 В, и не устанавливайте его на 1,8 В, потому что это не даст никаких улучшений.)

Расширенный предохранитель: 0xFD
Верхний предохранитель: 0xD8
Низкий предохранитель: 0xF7

Предупреждение

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

Замена предохранителей

Не вдаваясь в подробности установки avrdude, команда для запуска установки предохранителей с помощью USBasp следующая:

avrdude -Cavrdude. conf -patmega328p -c usbasp -V -D -U efuse: w: 0xFD: m -u -U hfuse: w: 0xD8: m -U lfuse: w: 0xF7: m

Последние сообщения

страниц

Категории

Архив

сообщений по категориям


Ultimate LRS Mini | IT Люксембург

На рынке есть несколько модулей, которые можно использовать с Ultimate LRS, включая модули Hobbyking OrangeRX.

Однако также возможно построить Ultimate LRS Mini. Идея заключалась в том, чтобы предложить простую схему, и позволить сообществу спроектировать печатную плату на основе этой схемы. Результаты превзошли все ожидания, и на этой странице вы можете найти 11 производственных проектов (на самом деле немного больше, поскольку некоторые конструкции имеют разные печатные платы для TX и для RX), 5 других находятся в стадии разработки.

Обратите внимание, что IT Luxembourg не продает какое-либо оборудование, печатные платы, компоненты или модули.

Один из 11 дизайнов ULRS Mini

Описание

Эталонная схема была основана на следующих принципах:

  • Должно быть легко реализовать, копировать, улучшать
  • Маленький, подходит для трансмиттера
  • Недорого:
    • Arduino pro mini 5V = 2 доллара. 11 (ссылка)
    • RFM23BP = 7,66 $ (ссылка)
  • Arduino mini на базе:
    • Встроенный регулятор напряжения, разделительные конденсаторы, светодиод включения, переключатель сброса, доступные контакты
    • Широко поддерживаемая платформа, пятая версия Arduino mini
    • Arduino mini — одна из самых маленьких плат Arduino, размер которой аналогичен самой RFM23BP.
  • с питанием от 5В
    • Обеспечьте более высокую мощность для модуля RFM23BP
    • В пределах спецификаций atmega328 для работы 16 МГц (позволяет избежать проблем с EEPROM)
  • Простая проводка
    • Были выбраны мини-контакты ввода-вывода Arduino, обращенные точно к контактам RFM23BP, их можно легко реализовать на макетной плате или прототипе.
    • Нет необходимости в контакте NIRQ, только 4 контакта + питание.
  • Максимальная безопасность
    • Atmega328 16 МГц с питанием от 5 В (3,3 В выходят за рамки технических характеристик)
    • Все контакты связи с RFM23BP, PPM, последовательным портом, RSSI защищены резистором, что обеспечивает низкий ток и правильное напряжение на этих контактах.
  • RSSI с фильтром
    • Внешний фильтр нижних частот RSSI не требуется
  • 7 оставшихся цифровых контактов ввода-вывода

Текущая версия

Схема для версии 1.04

Миниатюрная эталонная схема

ULRS, версия 1.04

  • На схеме выше замените R1, R2, R3 и R4 на резисторы 1 кОм. Это действительно для всех плат ULRS Mini.
  • FTDI DTR подключен к выводу RST через конденсатор. Это будет работать, альтернативный вариант — подключить его напрямую к мини-контакту Arduino pro mini ‘DTR’ (отмеченному как GRN на мини-платах Arduino pro). Однако в библиотеке Eagle, использованной выше, этот вывод был недоступен.
  • Использование линейных регуляторов обеспечивает очень чистый источник питания, но они легко нагреваются при питании от батареи.Замена импульсного регулятора для LM7805 может быть этим. Он также может заменить LM317, но будьте осторожны, так как распиновка отличается.
  • Схема намеренно сделана предельно простой и может быть сделана на макете или прототипе платы. Его можно повторно использовать как есть или модифицировать в ваших собственных продуктах.
  • На схеме не показан, но зуммер можно подключить к цифровому выводу 8 Arduino.
  • На этой схеме запланированы некоторые изменения:
    • Когда я делал эту схему, я думал, что atmega может поддерживать только 5.5 В, и именно поэтому есть источник питания 5 В и 6 В. что не идеально. Таким образом, новая конструкция будет иметь только один источник питания на 6 В (который поддерживается как atmega, так и RFM), и, вероятно, импульсный источник питания, как линейные слишком сильно нагреваются на практике. Подача всего на 6 В вызывает некоторые моменты внимания:
      — если подключены устройства I2C, мы должны убедиться, что они могут поддерживать это напряжение. Обратите внимание, что на порте I2C мы не можем поставить резисторы на выводы SDA и SCL.
      — то же самое для последовательных портов (но с резисторами нет риска). Я рассматривал возможность использования настоящего переключателя напряжения для RFM, но до сих пор никто не жаловался на сгоревший RFM на платах ULRS Mini: резисторов кажется достаточно и они ограничивают ток до крайне низкого значения.Обратите внимание, что в некоторых реализациях, таких как плата Sami, есть микросхема с полным переключением напряжения, что идеально, но цель эталонной схемы — сделать ее как можно более простой, оставаясь при этом полностью надежной. В используемой мини-библиотеке Arduino контакты I2C не являются доступный, поэтому я постараюсь найти другую лучшую библиотеку, которая включает все мини-контакты Arduino. Я знаю, что не многие пользователи реализовали устройства I2C, за исключением 16-канального расширителя Adafruit, но этот порт скоро будет очень полезен для функций разнообразия: вы сможете использовать любые две платы ULRS и подключать их через порт I2C к иметь систему полного разнообразия.
    • Edit: рекомендуемое напряжение 5 В, при 6 В RFM имеет тенденцию слишком сильно нагреваться.

Несколько пользователей сделали модули ULRS Mini на основе эталонной схемы.

Вы можете выбрать любой из этих вариантов, но обратите внимание на их различия.

Сквозные отверстия ULRS Minis

Доска обезьян

ULRS плата Monkey, модули TX (слева) и RX (справа)

Дизайн основан на схеме ULRS Mini, созданной пользователем rcgroups neo_04, полная информация здесь и здесь.Две разные платы, одна для TX, другая для RX.

  • TX:
    • Помещается в пустой футляр Frsky
    • Пины для FTDI, кнопки, зуммера
    • Контакты для модуля Bluetooth
    • Контакты для модема телеметрии teensy
    • Импульсный регулятор работает на 5в.
    • С экраном на радиочастотном модуле, bluetooth и teensy, все идеально помещается внутри корпуса Frsky с закрытой крышкой,
      просто вырезал отверстие, чтобы пропустить антенну через
    • Вы выбираете, как подключить антенну, например.5см косичка sma и т. Д.
    • Ссылка на страницу заказа печатной платы для TX: http://dirtypcbs.com/store/designer/…7/ulrs-mini-tx
  • RX:
  • Инструкции по сборке

Доска для морских звезд

  • Пользователь 007trains Rcgroups сделал для вас эту печатную плату:



  • Характеристики:
    Малый размер 3,9 см x 5 см
    Встроенный регулятор TO-220
    Использует компоненты со сквозными отверстиями для простой сборки
    Соединения, совместимые с разъемом JR передатчика
    Контакт заголовка для последовательного порта: gnd, rx, tx, 5v
    Контакт разъема для кнопки и зуммер: земля, кнопка, зуммер, 5в
  • Ссылка на исходный пост
  • Ссылка на страницу заказа печатной платы

Доска Joey

  • Это еще одна разработка австралийского пользователя ULRS Як-54, который сделал доску Wombat
  • Джоуи — младенческое сумчатое животное, такое как кенгуру (википедия), хорошее название для маленькой австралийской доски…

  • Он идеально помещается в корпус за 5 долларов, продаваемый Banggood, но будьте осторожны: он не предназначен для подключения к RC TX (для этого у него нет разъема в нужном месте).Взгляните на платы Starfish или Monkey, если вы хотите подключиться к RC TX.

Доска Wombat

Версия 1

Очень похож на Spongeboard, но меньше по размеру, эта конструкция от австралийского пользователя rcgroups як-54 выглядит очень красиво:

Версия 2

Губчатая доска

Пользователь ljakob из rcgroups сделал печатную плату для Ultimate LRS Mini, которую можно заказать прямо сейчас.В нем используются только компоненты со сквозными отверстиями, и его очень легко построить:

  • Ссылка на список компонентов и схему:
  • Ошибка: PPM подключен к выводу atmega A0, а не A3, как показано на этой схеме. Обратите внимание, что прошивка поддерживает эту плату, несмотря на это отличие от эталонной схемы.
  • Список компонентов, или просмотрите список компонентов ULRS Mini Bee Board
    • RFM23BP 433 МГц ссылка на версию
    • Arduino pro mini 5V 16MHz ссылка
    • R1 — R4: 3.Резисторы 3k, 1/4 ватта
    • R5, R6: резисторы 220 Ом, 1/4 Вт
    • R7: резистор 2,2 кОм, 1/4 Вт
    • R8, R9: резистор 1 кОм, 1/4 ватта
    • C1: конденсатор 150 мкФ, 16 В или более. Значение не критично, например, этот конденсатор 100 мкФ из этого будет работать. (не обязательно)
    • C2: конденсатор 100 пФ (пример) (не обязательно)
    • C3: конденсатор 100 нФ (пример) (не обязательно)
    • C4: конденсатор 100 нФ (пример)
    • LED1, LED2: стандартные светодиоды, но не все марки и цвета дают хорошие результаты, они дают очень хорошую светимость.
    • Разъем SMA: этот или этот (под углом 90 °)
    • Заголовки контактов: например, этот.
    • Разъем передатчика
    • RC: используйте это.
    • Примечание:
      • Для резисторов может быть интересна упаковка из 500 резисторов (ссылка1, ссылка2)
      • То же для конденсаторов: link1, link2
  • В комплект не входит стабилизатор напряжения, необходимо запитать 5 В.
  • Будьте осторожны, правильно сориентируйте arduino pro mini и RFM23BP, см. Фото.
  • Обратите внимание, что он будет работать даже без конденсаторов C1 — C3 (C4 по-прежнему требуется), что делает его одним из самых простых в сборке ULRS Mini.
  • Светодиоды могут быть любой распространенной модели, но, поскольку их яркость зависит от модели и цвета, ML37B дает хорошие результаты. Ориентация важна: самый короткий вывод должен быть ближе к краю печатной платы.
    Светодиод, расположенный ближе к краю печатной платы, означает «пакет принят», другой светодиод — «пакет отправлен».
  • Название Sponge Board происходит от легендарного низкого IQ губок, животных, у которых даже нет мозга … Просто сказать, что это очень легко сделать своими руками.

Мини-модули SMD ULRS

Пчелиная доска

  • Интересный дизайн от пользователя rcgroups nopkorn
  • Назван в честь его страсти к пчелам:

Люблю пчел, это чудо. У него маленькое крыло, меньше его самого. Но может летать.

  • Список компонентов и ссылки
    • RFM23BP 433 МГц ссылка на версию
    • Arduino pro mini 5V 16MHz ссылка
    • C1, C3, C5 = 0.1 мкФ 0805 ссылка
    • C2 = 100 мкФ 3528 ссылка
    • C4 = 10 мкФ 0805 ссылка
    • R1, R2, R3, R4 = 3.3K 0805 ссылка
    • R5, R6 = 1K 0805 ссылка
    • R7, R8 = 220R 0805 звено
    • R9 = 2.2K 0805 ссылка
    • R10 = 10K 0805 ссылка
    • LED = 0805 или звено 3 мм
    • Гнездовой разъем RF SMA
  • Альтернативные источники компонентов от пользователя rcgroups gcp900:
    • RFM23BP 433 МГц ссылка на версию
    • Arduino pro mini 5V 16MHz ссылка
    • Конденсатор 0805 0.1 мкФ ссылка
    • Конденсатор 3528100 мкФ ссылка
    • Конденсатор 0805 10 мкФ перемычка
    • Все сопротивления 0805 ссылка
    • светодиод 0805 ссылка
    • SMA Гнездо для паяльной ссылки
  • Пост 1, Пост 2, Пост 3

Доска Chamaleon V1.2

Доска для бабочек

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

Пользователь «Cereal_Killer» из

Rcgroups сделал печатную плату с SMD-компонентами, и она была намного меньше, чем Spongeboard.


Доска Warthog

Пользователь «shaggibomb» из rcgroups сделал печатную плату для Ultimate LRS Mini, которая поместится в корпусе JR, имеет ВЧ-фильтр и импульсный источник питания.

  • Схема основной платы:

  • Схема дочерней платы:

  • Название «Warthdog» происходит от любимого зверька пользователя, создавшего эту доску, который живет в Намибии.

Совет саами

Пользователь

Rcgroups Самисин сделал три SMD-платы с множеством функций:

В незавершенном производстве

Q-Board

  • Пользователь jvargas Rcgroups создал эту версию ULRS Mini на основе эталонной схемы.
  • Ссылка 1
  • Ссылка 2

Доска для колибри

Две платы ULRS Mini из Китая

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

Примечание: пользователь, который это сделал, связался со мной по электронной почте и сказал, что сожалеет о том, что использовал дизайн и логотип ULRS Mini без разрешения. Чтобы было понятно, здесь нет никаких проблем, и я разрешаю любому создавать оборудование на основе эталонной схемы ULRS Mini и иметь на нем логотип / название ULRS.

И еще один пользователь из Китая прислал мне несколько фотографий другого дизайна ULRS Mini:

Вариант саамской доски

  • Пользователь Rcgroups FlyingW создал здесь список ссылок для покупки компонентов ULRS Mini.
  • Arduino mini можно найти здесь по цене $ 2,49
  • Digikey или Farnell также должны иметь все необходимые компоненты.
  • Для TX разъем, который получит контакты RC TX, следующий:

  • Для некоторых плат ULRS Mini может потребоваться немного другой список компонентов, но вот самые распространенные:
    • RFM23BP 433 МГц ссылка на версию
    • Arduino pro mini 5V 16MHz ссылка
    • C1, C3, C5 = 0,1 мкФ 0805 ссылка
    • C2 = 100 мкФ 3528 ссылка
    • C4 = 10 мкФ 0805 ссылка
    • R1, R2, R3, R4 = 3.3K 0805 ссылка
    • R5, R6 = 1K 0805 ссылка
    • R7, R8 = 220R 0805 звено
    • R9 = 2.2K 0805 ссылка
    • R10 = 10K 0805 ссылка
    • LED = 0805 или звено 3 мм
    • Гнездовой разъем RF SMA
  • Альтернативные источники компонентов от пользователя rcgroups gcp900:
    • RFM23BP 433 МГц ссылка на версию
    • Arduino pro mini 5V 16MHz ссылка
    • Конденсатор 0805 0,1 мкФ перемычка
    • Конденсатор 3528100 мкФ ссылка
    • Конденсатор 0805 10 мкФ перемычка
    • Все сопротивления 0805 ссылка
    • светодиод 0805 ссылка
    • SMA Гнездо для паяльной ссылки

А…

Сообщите мне о ваших успехах в создании DIY Ultimate LRS Mini, я опубликую вашу печатную плату или изображения на этой странице.

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

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