Прошивка ардуино уно: Страница не найдена | АрдуиноПлюс

Содержание

Мёртвая Arduino, или Как спасти плату / Хабр

Привет, Хабр!

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

Итак, нам дана плата Arduino (неважно, какая), в которую не вгружается скетч. Что же с ней делать?

  1. Проверить настройки IDE.

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

  2. Драйверы.

    Иногда проблема кроется в отсутствии драйверов для работы с платой. Если на плате есть микросхема Ch440, то для неё нужно установить драйвер, и тогда всё скорее всего заработает. Найти его можно, например, здесь

  3. Serial

    Если Ваша плата общается с другими программами на компьютере (Putty, монитор порта и др.), то отключите от неё все программы, с вероятностью 90% все заработает.

  4. Периферия

    Если в Вашем проекте к пинам RX и TX (имеются в виду 0-ой и 1-ый пины), то отключите от них всё, иначе прошивка не будет загружаться

Если всё вышеперечисленное не помогло, то проблема кроется в микроконтроллере. Для решения этой проблемы есть несколько способов:

  1. Прошивка через программатор

    Если у Вас есть программатор, поддерживаемый Arduino IDE, то подключите к нему свою плату и попробуйте записать загрузчик. Если не помогает, то переходите к пункту 2. Если же у Вас нет программатора, то можно сделать его из другой платы Arduino, загрузив в неё стандартный пример ArduinoISP, и собрав всё по схеме. Конденсатор ставим обязательно, без него может не работать. Потом выбираем тип платы, которую будем прошивать, и выбираем программатор «Arduino as ISP». Потом заливаем прошивку.

Если же Вам не помогла и прошивка через программатор, то с вероятностью 99,9% ваша плата умерла.

Однако, у меня был похожий случай с платой Arduino Leonardo, и мне чудом удалось её спасти. Проблема была такова: При подключении платы к компьютеру он замечал её только минуты через 2. При загрузке прошивки компиляция проводилась успешно, но перед началом загрузки прошивки плата, как обычно сбрасывалась (это происходит всегда и для всех плат), и компьютер переставал её видеть вообще, даже после 10 минут ожидания. Решением стала установка такого же конденсатора между пином RESET и GND. Он предотвращает сброс платы.

Спасибо за внимание!

Как прошить arduino uno

Как прошить загрузчик Arduino без программатора

Разбираемся как прошить Arduino Uno R3 без какого-либо программатора для прошивки загрузчика в ATMEGA328P.

Установка программного обеспечения Atmel FLIP

На плате Arduino есть два микроконтроллера — ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, сделав его программатором AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.

Я пробовал разные варианты, но возникали разные проблемы. Многие рекомендации плохо работали в моем случае особенно в части перепрошивки загрузчика через ПО Arduino.

Переда началом прошивки Ардуино потребуется программное обеспечение Atmel (Microchip) FLIP для обновления прошивки внутри 16U2.

Скачиваем Flip с сайта Microchip — отсюда. Устанавливаем. Не должно возникнуть никаких проблем, просто следуйте инструкциям мастера установки.

Возьмите плату Arduino, отсоедините питание и USB. Замкните на ICSP1 пины 5-6 (16U2 RESET будет в низком состоянии).

Распиновка ICSP1

Выглядеть это будет так:

Далее подключите Arduino к USB. Разъедините пины на ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое устройство USB должно быть распознано.

Если драйвер не устанавливается автоматически, установите его из: C:\Program Files\AtmelFlip3.4.7usb»

Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Он будет расположен под USB-устройствами Atmel -> ATmega16U2.

Прошивка AVRISP MKII в Arduino ATmega16U2

Мы готовы перепрошить прошивку в 16U2.

Скачайте hex файл AVRISP MKII отсюда. Отключите Arduino от USB-кабеля и питания. Замкните контакты 5-6 ICSP1. Подключите Arduino к USB. Разомкните выводы ICSP1 5-6.

Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Нажмите «Открыть».

Перейдите в: Файл -> Загрузить файл HEX. Далее выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».

ATMEGA16U2 теперь AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.

Установка Atmel Studio

Скачайте и установите Atmel Studio (включая драйверы) отсюда. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигать два раза (это означает, что 16U2 находится в режиме Atmel Studio). Новое устройство будет распознано.

Установите драйверы. Если они не распознаются автоматически, вы найдете их в USB-драйверах: С:\Program Files\Atmel.

Перейдите в Диспетчер устройств, нажмите: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Должно быть в Jungo Connectivity -> AVRISP MKII.

Вот теперь мы готовы прошить Arduino ATMEGA328P. Переходим к следующему шагу.

Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

Довольно сложная часть нашего мероприятия по прошивке Ардуино. Вам нужно будет припаять некоторые провода. В основном нам нужно подключиться таким образом:

ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
JP2 PB4.Pin.1 -> ICSP RESET.Pin.5

Смотрите картинку ниже для понимания:

Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны помигать два раза. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Зайдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.

Перейдите в: Инструменты -> Программирование устройства. Выберите:

Инструмент -> AVRISP mkII
Устройство -> ATmega328P
Интерфейс -> ISP

Нажмите кнопку «Применить».

Установите частоту ISP на 16,1 кГц. Нажмите кнопку «Установить».

Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: получено состояние ошибки: получено 0x81, ожидаемое 0x00 (истекло время выборки контакта RDY / nBSY)». На английском будет звучать так: «ispProgramMem: Error status received: Got 0x81, expected 0x00 (RDY/nBSY pin sampling timed out)«. Однако максимальная скорость ISP также ограничена и не может превышать 1/4 частоты устройства.

Перейдите в «Подпись устройства» (Device signature) и нажмите кнопку «Читать» (Read). Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Memories» и найдите hex файл загрузчика Arduino. Он находится в:

Нажмите кнопку «Program». Если вы используете совершенно новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите в Fuses и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; extended_fuses = 0x05.

Вы успешно прошили 328P с загрузчиком Arduino. На следующем шаге мы вернем оригинальную прошивку 16U2.

Перепрошиваем Arduino ATMEGA16U2 в оригинальное ПО

Почти сделано. Нам нужно вернуть оригинальное программное обеспечение в ATMEGA16U2.

Отключите Arduino от питания и USB. Замкните на ICSP1 контакты 5-6. Подключите USB-кабель. Разомкните пины ICSP1 5-6.

Запустите программное обеспечение FLIP. Перейдите в: Пуск -> Все программы -> Flip -> Flip. Далее: Настройки -> Связь -> USB.

Нажмите «Открыть». Перейдите в: Файл -> Загрузить файл HEX.

Отсоедините USB-кабель и подключите его снова. Новое устройство USB должно быть распознано. Если драйвер не установлен автоматически, вы найдете его в: С:\Program Files\Arduino\drivers.

Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли загружен драйвер. Вы должны увидеть его в: Ports -> Arduino Uno.

Теперь мы можем проверить любой скетч из примеров, типа Blink. Запустите программное обеспечение Arduino (Пуск -> Arduino).

Нажмите: Open (стрелка вверх) -> -> 01.Basics -> Blink.

Выберите COM-порт а: Инструменты -> Последовательный порт -> COM (выберите порт, на котором была распознана плата).

Нажмите значок «Загрузить» (стрелка вправо). Светодиод должен начать мигать.

Всё готово. Мы узнали как прошить Ардуино и успешно перепрограммировали ATMEGA328P без использования какого-либо внешнего программатора.

Arduino.ru

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

И так, господа профи.. прошу не пинать, если что не так =)

1. Arduino UNO (думаю клоны тоже подойдут)

2. «Голая» ATmega8A

Что будем делать:

1. Подключим наш камюшек к UNO

2. Зальем Arduino ISP

4. Зальем Bootloader

1. Подключите ваш камень как показано на рисунки ниже

2. После этого открываем Arduino IDE и идем в Файл — Примеры — ArduinoISP

И после этого жмем записать загрузчик

Установите программы AVR Burn-O-Mat и AVR DUDE последнию распакуйте например на работчий стол в папку avrbube.

Откройте программу Burn-O-Mat. Выбирите AVR type, у нас ATmega8

Идем Settings — AVRDUDE

AVRDUDE location указываем файл avrdude.exe который был в архиве программы AVR DUDE во второй строке указываем файл avrdude.conf который лежит тут же. Пока все. Нажимаем Ок и перезагружаем программу.

Открываем эти же настройки, у нас в списке Programmer должно появиться всекого разного. Мы выбираем ардуино. Далее ставим ком порт, тот на котором у Вас адруино. ( у меня сначало была на 9, но там почему то максимум до 8, по этому пришлось посадить на 2 порт который был свободен.) В нижней строчки, пишем тоже самое. После чего жмем Ок. В главном окне программы на потив выбранного нами AVR типа жмем Fuse. В открывшемся окне жмем Read Fuse. Если у Вас возникнет ошибка отключите ардуино от юсб и снова включите. После чего ещё раз жмем прочитать фьюсы. Если все успешно прочиталось, ставим галочки так как на картинки:

После того как поставили галочки жмем записать фьюсы (write fuses). Если сообщили об успешной записи то закрываем программу.

4. Зальем Bootloader

Отключите Вашу UNO от USB извлеките микросхему и установите на её место ATmega8A (все проводки можно удалить)

Подключаем нашу плату. Заходим в Arduino IDE. Проверьте что бы был выбран правильный ком порт и плата, как на картинки.

После этого жмем записать загрузчик

Если загрузчик записался, то могу поздравить. Теперь у Вас не камень я сердце ардуино)))

Залейте этот код:

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

А для чего нужны AVR Burn-O-Mat и AVR Dude?

1. Вроде AVR dude уже стоит у всех кто поставил arduinoIDE. В папке hardware\tools\avr\bin\
2. Для чего вообще нужен шаг » 3. Изменим FUSE»?, разве на шаге » Зальем Bootloader» у вас с помощью, все той же avrdude не будут опять перезаписаны фьюзы? Если включить File/Preferences «Show verbose output during upload», то там будет видно, как при загрузке бутлоадера происходит вызов avrdude с фьюзами. А фьюзы возмутся и файлика hardware\arduino\boards.txt

Вообщем может я не прав, но мне кажется что пункт с фьюзами можно сократить. Как из лени, так из снизить шанс «сделать ошибку».

Но — это не критика. Скорее уточнение. Безусловно вы полезное руководство написали.

А еще я не совсем понял. На картинке » Подключите ваш камень как показано на рисунки ниже» у вас показан вариант «атмега без кварца», а при загрузке бутлоадера вы выбираете плату » Arduino NG or older w/ ATmega8″, которая имет бутлоадер и кварц на 16-ть.
У вас точно » После чего светодиод (L) на плате должен маргать. =)»?

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

С шагом 3 я точно не могу знать) описал так как меня научили.

И да, в 4 пункте ошибка (вот что значит новичок))

Подключаем камень как на этой картинки (с кварцем и керамическими конденсаторами на 22 пФ) можно сразу так подключить, но можно и потом добавить кварц с конденсаторами.

И после этого жмем записать загрузчик

Только теперь можно изъять микросхему из ардуино, и поставить на неё ATmega8A.

После чего пункт 5 точно заработает. =)

Кто тут админы, можно это в первом сообщении исправить?)

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

Тогда уж и тему назовите что-то типа «Как прошить загрузчик». Где оживление то? Скейтчи можно и без загрузчика через ArduinoISP заливать.

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

Тогда уж и тему назовите что-то типа «Как прошить загрузчик». Где оживление то? Скейтчи можно и без загрузчика через ArduinoISP заливать.

Дык такие темы уже есть на форуме 🙂 А «просто прошить», так официальный туториал и содержит все нужное Arduino — ArduinoISP

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

Но все это «не точно», «лишние шаги», «уже было» — все второстепенно. А важно
1. Топикстартер не поленился расшаририть свой опыт. Причем постарался качественно сделать это, в меру своего понимания (со скриншотами, пошаговым объяснениям). Тут важно не запинать его энтузиазм нашей тягой к формальной правильности.
2. У новичков действительно большой тормоз дает именно «страх». И такие статьи с красивыми картинками и «я новичок вот так смог» — помогают двинутся дальше.
3. Иногда, как ни странно «новичок новичку» — может лучше объяснить чем опытный. Именно потому что опытному уже трудно стать на место чайника и понять «что же тут не ясного».

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

Согласен с уважаемым leshak, страх убить камень оч. тормозит новичков, лично для меня он стал одной из причин купить PinBoard 2. Лично мне на ней было легче прошить и фузы и загрузчик.

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

Вот, к примеру, прикольная статья именно как оживить ATmega8, если например, выставили неправильно фьюзы SPIEN или RSTDISBL без параллельного/высоковольтного программатора.

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

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

Вобсна тоже вопрос по теме:

Прошил бутлоадер через USBasp — все вроде встало — скетч в память загружается и Всё. Дальше никаких действий не происходит.. Где зарыта собака.

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

Там два файла прошивки попробуйте другой.

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

Спасибо. Сейчас попытаю счастье!

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

Да помогло! Спасибо! очевидное лежало на поверхности

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

Доброе время суток! Не дождался заказа Ардуино решил собрать сам, спаял на макетке Atmega 168PV-10PU програматор собрал по статье http://robocraft.ru/blog/arduino/50.html и пытался шить паралельным программатором из ардуины, пробовал разные виды плат в ответ такая фраза «avrdude: Expected signature for ATMEGA168 is 1E 94 06».
Перебирал варианты плат с контроллером 168, только коды разные, позже спутился до Atmega8, ответ тот же.

Странно при прописывании БутЛоадера фъюзы зашиваются, но я не увидел там ничего похожего на сигнатуру контроллера.

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

Что то тут не так или я просто запутался в разрыве инструкции (((

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

Ссылки не работают. Нашол AVR8-Burn на офс сайте а в ней нет в настройках «Arduino»

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

Друзья, объясните пожалуйста, а почему в статье 2 раза записывается загрузчик?

Пункт 2: После этого жмем записать загрузчик

Пункт 4: После этого жмем записать загрузчик

Или куда по мнению автора записывается он первый раз, а куда второй?

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

Подключаем камень как на этой картинки (с кварцем и керамическими конденсаторами на 22 пФ) можно сразу так подключить, но можно и потом добавить кварц с конденсаторами

вот вы не указали какой кварц а если я вставлю туда 8 МHz(при прошивки). А при сборке самой платы ардуино будет 16 МHz. Работать то будет delay(1000)/

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

поделюсь своим опытом тоже, раз уж все делятся

но это для многкратного испльзования. на один раз использовать любые другие способы

так как испльзую в SMD исполнении то пользуюсь таким переходником

Для тех кто использует DIP удобен такой переходник, раз в 10 дешевле

программирую через USBASP. лучше такой в котором можно менять напряжение

далее так как я использую smd сделал плату разъемом для программирования светодиодом присутствия питания и светодиодом на 13 пине, заливаю blink для тестирования

фото позже выложу

для тех кто в dip все проще. хоть припаиваетесь проводами к zip адаптеру

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

далее нужна программа extreme avr burner

устанавливаем и запускаем.

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

обязательно поставить галочки write. теперь просто нажимаем кнопку сверху Write All и бутлоадер зашьется

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

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

Имеется плата Pinboard 1.1 с залоченной мега16 и программатор PX-400 с внешним USB-COM адаптером. Я так понимаю, этого более, чем достаточно, чтобы прошить любой контроллер.

Также имеются в наличии две Atmega8-16PU в DIP корпусах. Кварцев любых наковырять из старых компьютерных плат тоже не проблема. Помогите сделать ардуинку на базе этих корпусов!

Премудростей обратных и прямых фьюзов я так и не понял. Собственно, в процессе экспериментов залочил нафиг мегу16. Теперь уже страшно за это браться. Кстати, на пинборде ещё есть встроенный FT BB Prog. Уже голова идёт кругом от этого «разнообразия».

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

Имеется плата Pinboard 1.1 с залоченной мега16 и программатор PX-400 с внешним USB-COM адаптером. Я так понимаю, этого более, чем достаточно, чтобы прошить любой контроллер.

Также имеются в наличии две Atmega8-16PU в DIP корпусах. Кварцев любых наковырять из старых компьютерных плат тоже не проблема. Помогите сделать ардуинку на базе этих корпусов!

Премудростей обратных и прямых фьюзов я так и не понял. Собственно, в процессе экспериментов залочил нафиг мегу16. Теперь уже страшно за это браться. Кстати, на пинборде ещё есть встроенный FT BB Prog. Уже голова идёт кругом от этого «разнообразия».

мегу16-ю похороните, как павшую от рук врага, для меги8-й для кого тема написана?

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

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

мне понравилась программа для вашего программатора Avr-Osp II. фьюзы и галочками проставляются, а можно просто ввести 16ричные числа

и сначала перед тем как шить считывайте фьюзы. сразу будет понятно инверсные или нет.

залоченную можно разлочить (точно не помню, в инете найдете) любым программатором, все выводы как обычно, только reset подается не на микроконтроллер, а на базу транзистора, с помощью которого увеличивается напряжение на reset до 12В кажется. и можете зашить свои фьюзы

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

Atmega8-16PU — это мега 8 или 16?

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

Atmega8-16PU — это мега 8 или 16?

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

Расскажите, плиз, как в неё зашить ардуиновский бутлоадер имеющимся у меня оборудованием? Есть кварцы на 8,12 и 16МГц. Реально из этих двух Мег8 собрать пару ардуинок?

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

Мой опыт клонирования Ардуино Уно р3! на чип Atmega 328 PU!!

Собираем схему как в первом посту.

Подключаем, загружаем скетч Arduino ISP

Далее открываем блокнотом avrdude.conf

находим строчку # ATmega328P

и правим сигнатуру signature = 0x1e 0x95 0x0f;

на signature = 0x1e 0x95 0x14;

выбираем плату Arduino Uno

программатор Arduino as ISP и жмем Загрузить загрузчик, ждем когда прошьет.

Отключаем Ардуинку, вынимаем МК и ставим ту что прошили, возвращаем сигнатуру в файле avrdude.conf на signature = 0x1e 0x95 0x0f;

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

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

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

Доброго дня!
Попытался прошить сей контроллер(atmega8L), установленный на макетку, воспользовавшись Arduino Uno c Atmega328P и ArduinoIDE 1.0.5
Перед этим долго курил форумы, промимо этого форума:

2. Соответсвующие статьи о прошивке с помощью платы ардуино на arduino.cc

Все останавливается на попытке прошить загрузчик. До заливки какого-либо скетча не дошло, т.е. atmega328 не выдергивал. Ресет atmega8L соединен с пин10, как написано. (а вообще-то.. если честно, как правильно обращаться с ресетом — не понял, пишут очень много — выдернуть-вставить руками, прокинуть через 10ком на *5в и проч. — пробовал все это в разных комбинациях)

Сначала пробовал просто, не мудрствуя, воспользоваться пунктом Arduino NG or older on /w Atmega8

Потом пробовал залить те файлы с бутлоадером и boards.txt, которые рекомендованы по первой ссылке.

Потом менял туда и обратно avrdude с родного на тот, который рекомендован по первой ссылке.

Потом вернул исходный avrdude и добавил бутлоадер и кусочек в boards.txt вот отсюда

(как понял, отличается от NG только частотой кварца)

avrdude: Device signature = 0x000000
Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

(было в какой-то момент
avrdude: stk500_getsync(): not in sync: resp=0x00
но в этом случае, скорее всего ресет я неправильно подключил)

Так понимаю, что причины могут быть разными. Но, честно говоря, уже готов сдаться — что делать не знаю. Все пишут, что справились с проблемой. Я- пока нет.
Может, кто-то что-то посоветует? Простое решение — что-то поправить? atmega8l и atmega8 чем-то отличаются, кроме частоты кварца? Плохой чип? С Arduino Uno что-то связано? В общем, я в растерянности, уже два дня убил. Заранее спасибо.

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

а вы кварц с конденсаторами для меги 8 ставили?

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

Кварц не ставил, подсоединял по схеме без кварца. Кстати, я нечетко написал, прошиваю не 8, а 8L.

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

хорошо какие фьюзы зашили?

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

Руками ничего не менял.

Стоят в boards.txt:

Последний отчет о работе avrdude:

C:\Program Files (x86)\Arduino\hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega8 -cstk500v1 -P\\.\COM3 -b19200 -e -Ulock:w:0x3F:m -Uhfuse:w:0xca:m -Ulfuse:w:0xdf:m

avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is «C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf»

Using Port : \\.\COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
AVR Part : ATMEGA8
Chip Erase delay : 10000 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 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———— —- —— —— —- —— —— —- —— —— —— ———
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [02]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [81] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [01]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [82] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [12]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [98] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
avrdude: Send: A [41] . [84] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [85] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [86] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [87] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [89] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: Send: A [41] . [81] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [01]
avrdude: Recv: . [10]
avrdude: Send: A [41] . [82] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [12]
avrdude: Recv: . [10]
avrdude: Send: B [42] p [70] . [00] . [00] . [01] . [01] . [01] . [01] . [02] . [ff] . [00] . [ff] . [ff] . [00] @ [40] . [02] . [00] . [00] . [00] [20] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude: Send: P [50] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude: AVR device initialized and ready to accept instructions

Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
################################## | 100% 0.06s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

avrdude: Send: Q [51] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]

Arduino Uno

Arduino Uno — это устройство на основе микроконтроллера ATmega328 (datasheet). В его состав входит все необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (из них 6 могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъем USB, разъем питания, разъем для внутрисхемного программирования (ICSP) и кнопка сброса. Для начала работы с уcтройством достаточно просто подать питание от AC/DC-адаптера или батарейки, либо подключить его к компьютеру посредством USB-кабеля.

В отличие от всех предыдущих плат Ардуино, Uno в качестве преобразователя интерфейсов USB-UART использует микроконтроллер ATmega16U2 (ATmega8U2 до версии R2) вместо микросхемы FTDI.

На плате Arduino Uno версии R2 для упрощения процесса обновления прошивки добавлен резистор, подтягивающий к земле линию HWB микроконтроллера 8U2.

Изменения на плате версии R3 перечислены ниже:

  • Распиновка 1.0: добавлены выводы SDA и SCL (возле вывода AREF), а также два новых вывода, расположенных возле вывода RESET. Первый — IOREF — позволяет платам расширения подстраиваться под рабочее напряжение Ардуино. Данный вывод предусмотрен для совместимости плат расширения как с 5В-Ардуино на базе микроконтроллеров AVR, так и с 3.3В-платами Arduino Due. Второй вывод ни к чему не подсоединен и зарезервирован для будущих целей.
  • Улучшена помехоустойчивость цепи сброса.
  • Микроконтроллер ATmega8U2 заменен на ATmega16U2.

«Uno» (в переводе с итальянского — «один») назван по случаю предстоящего выпуска Arduino 1.0. Совместно с Arduino 1.0 данные устройства будут базовыми версиями Ардуино. Uno — эталонная модель платформы Arduino и является последней в серии USB-плат; для сравнения с предыдущими версиями, см. список плат Arduino.

Характеристики
Микроконтроллер ATmega328
Рабочее напряжение
Напряжение питания (рекомендуемое) 7-12В
Напряжение питания (предельное) 6-20В
Цифровые входы/выходы 14 (из них 6 могут использоваться в качестве ШИМ-выходов)
Аналоговые входы 6
Максимальный ток одного вывода 40 мА
Максимальный выходной ток вывода 3.3V 50 мА
Flash-память 32 КБ (ATmega328) из которых 0.5 КБ используются загрузчиком
SRAM 2 КБ (ATmega328)
EEPROM 1 КБ (ATmega328)
Тактовая частота 16 МГц
Схема и исходный проект

Файлы EAGLE: arduino-uno-Rev3-reference-design.zip (ПРИМЕЧАНИЕ: совместимо с версиями Eagle не ниже 6.0)

Примечание: В файлах проекта Ардуино могут фигурировать микроконтроллеры ATmega8, 168 или 328. Например, в последних моделях используется микроконтроллер ATmega328, но на схеме может быть указан микроконтроллер ATmega8. Это не является ошибкой, поскольку все три микросхемы полностью совместимы между собой по выводам.

Питание

Arduino Uno может быть запитан от USB либо от внешнего источника питания — тип источника выбирается автоматически.

В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера (диаметр — 2.1мм, центральный контакт — положительный) необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.

Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

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

  • VIN. Напряжение, поступающее в Arduino непосредственно от внешнего источника питания (не связано с 5В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера.
  • 5V. На вывод поступает напряжение 5В от стабилизатора напряжения на плате, вне независимости от того, как запитано устройство: от адаптера (7 — 12В), от USB (5В) или через вывод VIN (7 — 12В). Запитывать устройство через выводы 5V или 3V3 не рекомендуется, поскольку в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
  • 3V3. 3.3В, поступающие от стабилизатора напряжения на плате. Максимальный ток, потребляемый от этого вывода, составляет 50 мА.
  • GND. Выводы земли.
  • IOREF. Этот вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера Ардуино. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5В, так и с 3.3В-устройствами.
Память

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

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

С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов может работать в качестве входа или выхода. Уровень напряжения на выводах ограничен 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо этого, некоторые выводы Ардуино могут выполнять дополнительные функции:

  • Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Эти выводы соединены с соответствующими выводами микросхемы ATmega8U2, выполняющей роль преобразователя USB-UART.
  • Внешние прерывания: выводы 2 и 3. Могут служить источниками прерываний, возникающих при фронте, спаде или при низком уровне сигнала на этих выводах. Для получения дополнительной информации см. функцию attachInterrupt().
  • ШИМ: выводы 3, 5, 6, 9, 10 и 11. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
  • Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). С применением библиотеки SPI данные выводы могут осуществлять связь по интерфейсу SPI.
  • Светодиод: 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW — выключается.

В Arduino Uno есть 6 аналоговых входов (A0 — A5), каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Тем не менее, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference(). Помимо этого, некоторые из аналоговых входов имеют дополнительные функции:

  • TWI: вывод A4 или SDA и вывод A5 или SCL. С использованием библиотеки Wire данные выводы могут осуществлять связь по интерфейсу TWI.

Помимо перечисленных на плате существует еще несколько выводов:

  • AREF. Опорное напряжение для аналоговых входов. Может задействоваться функцией analogReference().
  • Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения

Смотрите также соответствие выводов Arduino и ATmega328. Распиновка для микроконтроллеров ATmega8, 168 и 328 идентична.

Связь

Arduino Uno предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega328 имеется приемопередатчик UART, позволяющий осуществлять последовательную связь посредством цифровых выводов 0 (RX) и 1 (TX). Микроконтроллер ATmega16U2 на плате обеспечивает связь этого приемопередатчика с USB-портом компьютера, и при подключении к ПК позволяет Ардуино определяться как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется. На платформе Windows необходим только соответствующий .inf-файл. В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных через микросхему-преобразователь USB-UART во время USB-соединения с компьютером, на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1, без использования USB-преобразователя, данные светодиоды не задействуются).

Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Arduino Uno.

В микроконтроллере ATmega328 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.

Программирование

Arduino Uno программируется с помощью программного обеспечения Ардуино (скачать). Для этого из меню Tools > Board необходимо выбрать «Arduino Uno» с микроконтроллером, соответствующим вашей плате. Для получения более подробной информации см. справку и примеры.

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

Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.

Исходный код прошивки микроконтроллера ATmega16U2 (или 8U2 на платах версии R1 и R2) находится в свободном доступе. Прошивка ATmega16U2/8U2 включает в себя DFU-загрузчик (Device Firmware Update), позволяющий обновлять прошивку микроконтроллера. Для активации режима DFU необходимо:

  • На платах версии R1: замкнуть перемычку на обратной стороне платы (возле изображения Италии), после чего сбросить 8U2.
  • На платах версий R2 и выше — для упрощения перехода в режим DFU присутствует резистор, подтягивающий к земле линию HWB микроконтроллера 8U2/16U2.

После перехода в DFU-режим для загрузки новой прошивки можно использовать программное обеспечение Atmel's FLIP (для Windows) или DFU programmer (для Mac OS X и Linux). Альтернативный вариант — прошить микроконтроллер через разъем для внутрисхемного программирования ISP с помощью внешнего программатора, однако в этом случае DFU-загрузчик затрется. Для получения более подробной информации см. эти инструкции, составленные пользователями.

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

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Uno спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов ATmega8U2/16U2, участвующий в управлении потоком данных (DTR), соединен с выводом RESET микроконтроллера ATmega328 через конденсатор номиналом 100 нФ. Когда на линии DTR появляется ноль, вывод RESET также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR.

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

На плате Uno существует дорожка (отмеченная как «RESET-EN»), разомкнув которую, можно отключить автоматический сброс микроконтроллера. Для повторного восстановления функции автоматического сброса необходимо спаять между собой выводы, расположенные по краям этой дорожки. Автоматический сброс также можно выключить, подключив резистор номиналом 110 Ом между выводом RESET и 5В; для получения более подробной информации см. соответствующую ветку форума.

Защита USB от перегрузок

В Arduino Uno есть восстанавливаемые предохранители, защищающие USB-порт компьютера от коротких замыканий и перегрузок. Несмотря на то, что большинство компьютеров имеют собственную защиту, такие предохранители обеспечивают дополнительный уровень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.

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

Максимальная длина и ширина печатной платы Uno составляет 6.9 см и 5.4 см соответственно, с учетом разъема USB и разъема питания, выступающих за пределы платы. Четыре крепежных отверстия позволяют прикреплять плату к поверхности или корпусу. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.

Как прошивать arduino uno

Как прошить ардуино плату другой ардуиной Arduino ISP

Теперь подсоединим к ней плату, в которую хотим прошить загрузчик. При прошивке используются линии SPI (Serial Peripheral Interface — последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK обеих плат должны быть соединены, а вывод SS Ардуино-программатора подключается к выводу Reset целевой платы. И еще 2 провода нужны чтобы запитать целевую плату. Также может потребоваться предотвратить автоматическую перезагрузку платы-программатора, для этого между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ. Сначала можно попробовать без конденсатора, если же прошивка не начнется, то попробуйте добавить в схему конденсатор. По моим наблюдениям конденсатор нужен при использовании дешевых Ардуино-клонов (без контроллера ATmega8u2) в качестве программатора.

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

Если используются не Uno, а другие платы Ардуино, то перед подключением программатора к целевой плате необходимо уточнить расположение на них выводов MOSI, MISO и SCK. Их расположение для различных плат приведено ниже в таблице. Как вы можете видеть, не на всех платах Ардуино линии SPI мультиплексированны с цифровыми выводами, поэтому для подключения к данному интерфейсу необходимо использовать разъем ICSP. Ниже показан пример подключения Uno в качестве программатора к плате Nano через ICSP разъем.

Как прошить загрузчик Arduino без программатора

Разбираемся как прошить Arduino Uno R3 без какого-либо программатора для прошивки загрузчика в ATMEGA328P.

Установка программного обеспечения Atmel FLIP

На плате Arduino есть два микроконтроллера — ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, сделав его программатором AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.

Я пробовал разные варианты, но возникали разные проблемы. Многие рекомендации плохо работали в моем случае особенно в части перепрошивки загрузчика через ПО Arduino.

Переда началом прошивки Ардуино потребуется программное обеспечение Atmel (Microchip) FLIP для обновления прошивки внутри 16U2.

Скачиваем Flip с сайта Microchip — отсюда. Устанавливаем. Не должно возникнуть никаких проблем, просто следуйте инструкциям мастера установки.

Возьмите плату Arduino, отсоедините питание и USB. Замкните на ICSP1 пины 5-6 (16U2 RESET будет в низком состоянии).

Распиновка ICSP1

Выглядеть это будет так:

Далее подключите Arduino к USB. Разъедините пины на ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое устройство USB должно быть распознано.

Если драйвер не устанавливается автоматически, установите его из: C:\Program Files\AtmelFlip3.4.7usb»

Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Он будет расположен под USB-устройствами Atmel -> ATmega16U2.

Прошивка AVRISP MKII в Arduino ATmega16U2

Мы готовы перепрошить прошивку в 16U2.

Скачайте hex файл AVRISP MKII отсюда. Отключите Arduino от USB-кабеля и питания. Замкните контакты 5-6 ICSP1. Подключите Arduino к USB. Разомкните выводы ICSP1 5-6.

Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Нажмите «Открыть».

Перейдите в: Файл -> Загрузить файл HEX. Далее выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».

ATMEGA16U2 теперь AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.

Установка Atmel Studio

Скачайте и установите Atmel Studio (включая драйверы) отсюда. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигать два раза (это означает, что 16U2 находится в режиме Atmel Studio). Новое устройство будет распознано.

Установите драйверы. Если они не распознаются автоматически, вы найдете их в USB-драйверах: С:\Program Files\Atmel.

Перейдите в Диспетчер устройств, нажмите: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли установлен драйвер. Должно быть в Jungo Connectivity -> AVRISP MKII.

Вот теперь мы готовы прошить Arduino ATMEGA328P. Переходим к следующему шагу.

Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

Довольно сложная часть нашего мероприятия по прошивке Ардуино. Вам нужно будет припаять некоторые провода. В основном нам нужно подключиться таким образом:

ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
JP2 PB4.Pin.1 -> ICSP RESET.Pin.5

Смотрите картинку ниже для понимания:

Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны помигать два раза. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Зайдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.

Перейдите в: Инструменты -> Программирование устройства. Выберите:

Инструмент -> AVRISP mkII
Устройство -> ATmega328P
Интерфейс -> ISP

Нажмите кнопку «Применить».

Установите частоту ISP на 16,1 кГц. Нажмите кнопку «Установить».

Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: получено состояние ошибки: получено 0x81, ожидаемое 0x00 (истекло время выборки контакта RDY / nBSY)». На английском будет звучать так: «ispProgramMem: Error status received: Got 0x81, expected 0x00 (RDY/nBSY pin sampling timed out)«. Однако максимальная скорость ISP также ограничена и не может превышать 1/4 частоты устройства.

Перейдите в «Подпись устройства» (Device signature) и нажмите кнопку «Читать» (Read). Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Memories» и найдите hex файл загрузчика Arduino. Он находится в:

Нажмите кнопку «Program». Если вы используете совершенно новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите в Fuses и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; extended_fuses = 0x05.

Вы успешно прошили 328P с загрузчиком Arduino. На следующем шаге мы вернем оригинальную прошивку 16U2.

Перепрошиваем Arduino ATMEGA16U2 в оригинальное ПО

Почти сделано. Нам нужно вернуть оригинальное программное обеспечение в ATMEGA16U2.

Отключите Arduino от питания и USB. Замкните на ICSP1 контакты 5-6. Подключите USB-кабель. Разомкните пины ICSP1 5-6.

Запустите программное обеспечение FLIP. Перейдите в: Пуск -> Все программы -> Flip -> Flip. Далее: Настройки -> Связь -> USB.

Нажмите «Открыть». Перейдите в: Файл -> Загрузить файл HEX.

Отсоедините USB-кабель и подключите его снова. Новое устройство USB должно быть распознано. Если драйвер не установлен автоматически, вы найдете его в: С:\Program Files\Arduino\drivers.

Перейдите в Диспетчер устройств: Win + Pause -> Оборудование -> Диспетчер устройств. Проверьте, правильно ли загружен драйвер. Вы должны увидеть его в: Ports -> Arduino Uno.

Теперь мы можем проверить любой скетч из примеров, типа Blink. Запустите программное обеспечение Arduino (Пуск -> Arduino).

Нажмите: Open (стрелка вверх) -> -> 01.Basics -> Blink.

Выберите COM-порт а: Инструменты -> Последовательный порт -> COM (выберите порт, на котором была распознана плата).

Нажмите значок «Загрузить» (стрелка вправо). Светодиод должен начать мигать.

Всё готово. Мы узнали как прошить Ардуино и успешно перепрограммировали ATMEGA328P без использования какого-либо внешнего программатора.

Несколько способов прошивки Arduino и решение проблем, связанных с этим

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




Но на всякий прикрепляю дрова для CP2102

Особенности.

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

Это обычный USBasp, самый распространённый программатор AVR микроконтроллеров. Стоит на али те же копейки.

Особенности

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

Прошивка осуществляется не стандартным способом. Для начала идем в Инструменты>Программатор>USBasp

Далее Скетч/Загрузить через программатор.

Как и говорил, тут я описываю проблемы, с которыми столкнулся я. Этот программатор так же требует драйверов. Найти их не сложно. Однако связываясь с китайцами с целью экономии, нужно быть готовым к неожиданным поворотам. Лично я, при работе с этим программатором, столкнулся со следующей проблемой, которую когда-то описывал на радиокоте:

Над решением беды бился долго, и нашел лишь на забугорных форумах. И так:

1)По следующей ссылке скачиваем архив LibUSB-64bit.zip
2)Подключаем программатор к USB порту.
3)Распаковываем архив и переходим по пути куда распаковали\LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\x86

4) Запускаем inf-wizard.exe
5)Жмем Next
6)Выбираем USBasp и жмем Next
7)Следующие поля заполняем таким образом:

vendor ID (hex format) = 0x16C0
product ID (hex format) = 0x05DC
mi (hex format) = оставить пустым
manufacturer name = VOTI
device name = USBasp

8 )Сохраняем сгенерированный файл по пути:
LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\amd64 — если у вас 64-х разрядная система или
LibUSB-64bit\libusb-win32-bin-1.2.1.0\bin\x86 — если 32-х разрядная

9)Жмем install now
10) Система уведомит, что драйвер не из проверенных источников. Жмем «Все равно установить»
11)Начнется установка драйвера. В процессе установки услышим звук отключения и подключения USB устройства. По окончанию установки жмем ОК.

Ещё несколько советов

Если на выводах RX и TX висит какое-то исполняющее устройство — ардуинка не прошьется. Сначала прошивайте, потом подключайте на эти выводы необходимое устройство.

На этом все, Надеюсь информация будет кому-то полезна.
Всем удачи в творчестве!

Обновление прошивки программатора USBASP с помощью Arduino UNO

Обновление прошивки программатора USBASP с помощью Arduino UNO

2020-04-11 16:43:32 — Evgeniy Shumilov

  Когда-то давно я приобрёл китайскую копию программатора USBASP. При попытке перепрошивки микроконтроллеров через ISP я, как и многие другие, получал ошибку следующего вида:

avrdude: warning: cannot set sck period, please check for usbasp firmware update

  Инструкции, которые я обнаружил, были написаны с рассчётом на использование в Windows, а так же в некоторых статьях я заметил ошибки и несоответствия (например, неверно указан тип программатора для avrdude, из-за чего какое-то время пришлось побуксовать), так что решил написать для себя короткую статью, убрав всё лишнее.


  Для начала нам нужен avrdude. Благо, в отличие от windows, нам не нужно искать, качать и ставить драйвера и всё прочее. Если уже установлена среда arduino, то avrdude можно найти по следующему относительному пути:

arduino-X.X.X/hardware/tools/avr/bin/avrdude

  Где X.X.X — версия среды. Если же среды arduino на машине нет, то на debian-based системах установить avrdude можно из репозитория:

sudo apt-get install avrdude

  В этом случае конфигурационный файл будет расположен тут: /etc/avrdude.conf, но среда нам понадобится, чтобы сменить прошивку на нашей текущей ардуине, с помощью которой будет прошиваться программатор.

  Далее необходимо скачать самую «свежую» прошивку для USBASP: 

wget https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz
tar xvzf usbasp.2011-05-28.tar.gz

  Да, самой свежей прошивке на текущий момент чуть менее девяти лет. Внутри архива нас интересует файл bin/firmware/usbasp.atmega8.2011-05-28.hex, его мы и будем прошивать.

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

  Затем соединяем проводами соответствующие пины Arduino и программатора:

  Схему честно стырил из другой статьи. Теперь открываем среду Arduino, выставляем нужную плату (в нашем случае Arduino Genuino/UNO) и порт (в нашем случае /dev/ttyUSB0). Если вы не знаете, какой алиас получил интерфейс, среда сама должна подсказать. В любом случае, подсказку можно найти тут:

$ ls /sys/bus/usb-serial/devices/
ttyUSB0

  Прошиваем скетч из примеров с названием ArduinoISP, на этом окно можно закрывать. В терминале переходим в директорию с avrdude внутри директории с ardunio и сперва проверим, что микроконтроллер нашего программатора виден через Arduino Uno по ISP:

$ ./avrdude -C ../etc/avrdude.conf -p atmega8 -c avrisp -b 19200 -P /dev/ttyUSB0 -v

avrdude: Version 6.3-20171130
         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/corpse/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : avrisp
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 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         4    20   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           efuse          0     0     0    0 no          0    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Fuse reading not support by programmer.
              Safemode disabled.

avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: lfuse reads as EF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode

avrdude done.  Thank you.

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

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01                    
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10    

  В этом случае нужно перепроверить всё ещё раз, особенно подключение. Далее имеет смысл сохранить текущую прошивку в файл на всякий случай (вместо /path/to/backup укажите свой путь):

$ ./avrdude -C ../etc/avrdude.conf -p atmega8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:r:/path/to/backup/original_firmware.bin:r         

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: reading flash memory:

Reading | ################################################## | 100% 5.74s

avrdude: writing output file "original_firmware.bin"

avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode

avrdude done.  Thank you.  

  Прошиваем «свежую» прошивку девятилетней давности:

$ ./avrdude -C ../etc/avrdude.conf -p m8 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:w:/path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9307 (probably m8)
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: reading input file "/path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex"
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
avrdude: writing flash (4700 bytes):

Writing | ################################################## | 100% 6.78s

avrdude: 4700 bytes of flash written
avrdude: verifying flash memory against /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex:
avrdude: load data flash data from input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex:
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
avrdude: input file /path/to/firmwares/usbasp/usbasp.2011-05-28/bin/firmware/usbasp.atmega8.2011-05-28.hex contains 4700 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 3.31s

avrdude: verifying ...
avrdude: 4700 bytes of flash verified

avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode

avrdude done.  Thank you.

Собственно, вот и всё.

Теги: avr

удаленная прошивка UNO через Ethernet

    Имеем
  • Ubuntu 12.04
  • Arduino 1.6.8
  • плата Arduino UNO
  • модуль Ethernet shield W5100
  • Ariadne Bootloader for Arduino

Подключить все необходимое прошивки bootloader в среде Ардуино оказалось очень просто:
Ардуино-Настройки-Дополнительные ссылки для менеджера плат добавляем https://per1234.github.io/Ariadne-Bootloader/package_codebendercc_ariadne-bootloader_index.json
Ардуино-Инструменты-Плата…-Менеджер плат- ищем Ariadne и устанавливаем

Теперь прямо в среде ардуино появились платы типа Ariadne UNO…
Выставляем программатор AVR ISP
и шьем bootloader (который и содержит возможность прошивки Ethernet по ip адресу 192.168.1.128)

Прошивается удаленно при помощи tftp
сначала надо перевести из hex в bin.

Для этого сначала установим avr-objcopy
sudo apt-get install binutils-avr

Потом примерно так :
avr-objcopy -I ihex /tmp/build2902ca5d0c9177089ed0f2785a7bd340.tmp/BlinkWithoutDelay.ino.hex -O binary /home/p/1.bin


Теперь можно заливать любую прошивку по tftp: Чтобы залить прошивку надо в первые 7-8 сек после включение или сброса платы Arduino UNO (c Ethernet) успеть выполнить несколько команд. Чтобы никуда не спешить лучше запустить прнимерно такой скрипт: tftp 192.168.1.128 Содержние tftp1.txt:
  • mode octet
  • trace
  • verbose
  • put 1.bin
  • quit

  • В общем хочу сказать , что у меня все получилось.
      Вот такой вывод примерно получиться
    • [email protected]:~$ ./tftp.sh
    • tftp> tftp> Packet tracing on.
    • tftp> Verbose mode on.
    • tftp> putting 1.bin to 192.168.1.128:1.bin [octet]
    • sent WRQ
    • received ACK
    • sent DATA
    • received ACK
    • sent DATA
    • received ACK
    • sent DATA
    • received ACK
    • sent DATA
    • received ACK
    • sent DATA
    • received ACK
    • sent DATA
    • received ACK
    • Sent 2586 bytes in 5.0 seconds [4138 bits/sec]

    И теперь можно прошивать удаленно , хоть через интернет. Благодарности товарищу Ariadne! Download the Ariadne files here: https://github.com/per1234/Ariadne-Bootloader/archive/ariadne.zip

    Про Ардуино и не только: Arduino as ISP

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

    ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство. До появления этой технологии микроконтроллеры программировались перед установкой в устройство, а для их перепрограммирования требовалось их извлечение из устройства.

    Существует 2 основных подхода внутрисхемного программирования:

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

    Использование загрузчика существенно упрощает процесс перепрограммирования микроконтроллера, что особенно полезно при отладке. Но за удобство приходится платить. Во-первых, загрузчик занимает часть ПЗУ и для программы пользователя остается меньший объем памяти. Во-вторых, загрузчик не может изменить Fuse-биты и Lock-биты (в отличие от программаторов). Ну и, конечно, не обойтись без программатора, если вы хотите обновить бутлоадер или загрузить его в чистый МК. Таким образом существует ряд задач, которые могут быть выполнены только с использованием программатора. Если же у вас нет аппаратного программатора, то вместо него можно воспользоваться Ардуино, о чем и будет рассказано дальше.

    Arduino as ISP. Прошивка загрузчика в Ардуино.

    Итак, мы решили превратить Ардуино в программатор. Для примера попробуем прошить загрузчик в целевую плату Ардуино. Сначала подготовим плату, которую будем использовать в качестве программатора. Для этого загрузим в нее скетч ArduinoISP, его можно найти в стандартных примерах:
    Теперь подсоединим к ней плату, в которую хотим прошить загрузчик. При прошивке используются линии SPI (Serial Peripheral Interface — последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK обеих плат должны быть соединены, а вывод SS Ардуино-программатора подключается к выводу Reset целевой платы. И еще 2 провода нужны чтобы запитать целевую плату. Также может потребоваться предотвратить автоматическую перезагрузку платы-программатора, для этого между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ. Сначала можно попробовать без конденсатора, если же прошивка не начнется, то попробуйте добавить в схему конденсатор. По моим наблюдениям конденсатор нужен при использовании дешевых Ардуино-клонов (без контроллера ATmega8u2) в качестве программатора.

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


    Если используются не Uno, а другие платы Ардуино, то перед подключением программатора к целевой плате необходимо уточнить расположение на них выводов MOSI, MISO и SCK. Их расположение для различных плат приведено ниже в таблице. Как вы можете видеть, не на всех платах Ардуино линии SPI мультиплексированны с цифровыми выводами, поэтому для подключения к данному интерфейсу необходимо использовать разъем ICSP. Ниже показан пример подключения Uno в качестве программатора к плате Nano через ICSP разъем.
    Плата Ардуино 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 3.3В или 5В
    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  3.3В
    Zero ICSP-4 ICSP-1 ICSP-3 3.3В
    101 11 или ICSP-4 12 или ICSP-1 13 или ICSP-3 3.3В
    Подключение Uno в качестве программатора к плате Nano через ICSP
    Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута.

    Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:

    1. В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.
    2. В меню Инструменты > Программатор выбираем Arduino as ISP.

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

    Резюмируя вышеописанное, выделим основные шаги для прошивки загрузчика с использованием Ардуино в качестве ISP программатора:

    • Запускаем Arduino IDE, открываем из примеров скетч ArduinoISP и загружаем его в плату Ардуино, которую будем использовать как программатор.
    • Подключаем к Ардуино-программатору целевую плату по приведенной схеме.
    • Меняем плату в Arduino IDE на целевую.
    • Выбираем в IDE программатор Arduino as ISP.
    • Записываем загрузчик в целевую плату командой из меню IDE.

    Прошивка скетча с использованием Arduino as ISP

    Еще один пример использования программатора — это загрузка скетча в целевую плату. Разумеется, это проще сделать привычным способом, подключив ее напрямую к компьютеру, но это может оказаться невозможным, например, при выходе из строя контроллера ATmega8u2/ATmega16u2 или преобразователя USB/UART. Если при этом основной микроконтроллер Ардуино остался рабочим, то мы можем прошить его, используя программатор. Для этого выполняем все шаги, описанные выше, но на последнем этапе вместо записи загрузчика необходимо:
    • Открыть в Arduino IDE интересующий скетч.
    • Загрузить скетч в целевую плату командой из меню IDE: Скетч > Загрузить через программатор.

    Таким образом можно подарить вторую жизнь плате Ардуино, которую компьютер уже не видит через USB.


    Arduino bootloader | avr | programming

    Что такое бутлоадер? Обычно микроконтроллеры программируются с помощью специального программатора. Это может быть или программатор ISP, JTAG, debugWire, HVSP, HVPP. Для микроконтроллеров AVR в качестве альтернативы может использоваться функция самопрограммирования [4], когда запись в память новой программы (firmware) для микроконтроллера берет на себя специальная маленькая программа. Эта маленькая программа и называется бутлоадер (bootloader, загрузчик) [2]. Она запускается сразу после включения питания платы Arduino, или когда на плате нажата кнопка reset, или когда компьютер-хост USB, к которому подключена плата Arduino, выдал сигнал сброса (это делается с помощью специальной схемы реализации виртуального USB COM-порта Arduino). У программы загрузчика только есть только одна основная функция — принять через USART от компьютера-хоста новую программу, и прошить её в память программ (FLASH) микроконтроллера AVR платы Arduino (подробнее про загрузчик см. врезку «Как работает загрузчик?»).

    Примечание: ISP означает In-System Programming — внутрисхемное программирование, т. е. когда микроконтроллер программируется без физического извлечения из программируемой системы. JTAG это специальный интерфейс для программирования, отладки и тестирования схемы. debugWire это проприетарная разработка (компании Atmel), разновидность интерфейса JTAG для программирования и отладки. HVSP и HVPP обозначают соответственно High-Voltage Serial Programming (высоковольтное последовательное программирование) и High-Voltage Parallell Programming (высоковольтное параллельное программирование).

    Не обязательно использовать бутлоадер. Когда Вы работаете в среде программирования Arduino (или в любой другой среде — BACSCOM AVR, AVR Studio, Atmel Studio, CodeVision AVR, Eclipse, IAR Embedded Workbench, Visual Studio), то для перепрошивки firmware (скетчей) в память микроконтроллера можете использовать внешний программатор [5]. Это дает определенные преимущества — Вы можете использовать для перепрошивки всю память программ (FLASH) микроконтроллера, и при использовании программатора нет задержки запуска программы из-за ожидания загрузчика.

    Прошивка загрузчика из среды разработки Arduino. Чтобы прошить bootloader, Вам понадобится купить AVR-ISP (фирменный программатор ISP компании Atmel), USBtinyISP [6] или самому собрать ParallelProgrammer [7]. Программатор должен быть подключен к коннектору ICSP, это двухрядный разъем «папа», 2×3 выводов, с цоколевкой ISP6 [8]. При подключении убедитесь, что подсоединили коннектор в правильной ориентации, не наоборот. Для программирования на микроконтроллер платы должно подаваться питание; для плат Arduino обычно питание подается от внешнего источника или от порта USB.

    Убедитесь, что правильно выбрали тип платы Arduino через меню Tools -> Board. Затем просто запустите подходящую команду из меню Tools -> Burn Bootloader. Прошивка загрузчика занимает примерно 15 секунд или больше. Подробнее про прошивку загрузчика см. врезки ниже.

    Команда «Burn Bootloader» (прошить загрузчик) среды разработки Arduino IDE использует avrdude, утилиту с открытым исходным кодом. При этом выполняются друг за другом шагов: разблокировка секции загрузки микроконтроллера (с помощью изменения фьюзов lock byte), запись фьюзов микроконтроллера, загрузка кода загрузчика в память микроконтроллера (программа bootloader записывается в секцию загрузки), и затем блокировка секции загрузчика микроконтроллера (с помощью изменения фьюзов активация защиты секции загрузчика lock byte). Эти шаги управляются некоторыми настройками в preferences file системы Arduino.

    Примечание: что такое preferences file, где он находится?

    Вот, например, эти настройки в preferences file для ATmega8 bootloader:

    bootloader.atmega8.programmer (значение по умолчанию: stk500) здесь задается протокол,
    используемый загрузчиком.
    bootloader.atmega8.unlock_bits (значение по умолчанию: 0xFF) это значение записывается в
    байт фьюзов защиты (lock byte) микроконтроллера ATmega8, чтобы разблокировать секцию
    загрузки (bootloader section).
    bootloader.atmega8.high_fuses (значение по умолчанию: 0xca) это значение для записи старшего
    байта фьюзов ATmega8.
    bootloader.atmega8.low_fuses (значение по умолчанию: 0xdf) это значение для записи младшего
    байта фьюзов ATmega8.
    bootloader.atmega8.path (значение по умолчанию: bootloader) путь каталога (относительно
    каталога приложения Arduino), в котором находится готовая прошивка загрузчика (двоичный
    код).
    bootloader.atmega8.file (значение по умолчанию: ATmegaBOOT.hex) имя файла, где содержится
    прошивка загрузчика (в папке bootloader.atmega8.path).
    bootloader.atmega8.lock_bits (значение по умолчанию: 0x0F) это значение записывается в байт
    фьюзов защиты (lock byte) микроконтроллера ATmega8, чтобы включить блокировку секции
    загрузки (чтобы он случайно не был перезаписан программатором или при загрузке скетча).

    Вот настройки для ATmega168 bootloader (здесь слово ПЛАТА может быть либо diecimila, либо ng):

    bootloader.atmega168-ПЛАТА.programmer (значение по умолчанию: avrispmkii) здесь задается
    протокол, используемый загрузчиком.
    bootloader.atmega168-ПЛАТА.unlock_bits (значение по умолчанию: 0x3F) это значение записывается
    в байт фьюзов защиты (lock byte) микроконтроллера ATmega168, чтобы разблокировать секцию
    загрузки (bootloader section).
    bootloader.atmega168-ПЛАТА.extended_fuses (значение по умолчанию: 0x00) это значение для
    записи байта расширенных фьюзов ATmega168.
    bootloader.atmega168-ПЛАТА.high_fuses (значение по умолчанию: 0xdd) это значение для записи
    старшего байта фьюзов ATmega168.
    bootloader.atmega168-ПЛАТА.low_fuses (значение по умолчанию: 0xff) это значение для записи
    младшего байта фьюзов ATmega168.
    bootloader.atmega168-ПЛАТА.path (значение по умолчанию: bootloader168) путь каталога
    (относительно каталога приложения Arduino), в котором находится готовая прошивка загрузчика
    (двоичный код).
    bootloader.atmega168-ПЛАТА.file (значение по умолчанию: ATmegaBOOT_168_ПЛАТА.hex) имя
    файла, где содержится прошивка загрузчика (в папке bootloader.atmega168-ПЛАТА.path).
    bootloader.atmega168-ПЛАТА.lock_bits (значение по умолчанию: 0x0F) это значение записывается
    в байт фьюзов защиты (lock byte) микроконтроллера ATmega168, чтобы включить блокировку
    секции загрузки (чтобы он случайно не был перезаписан программатором или при загрузке скетча).

    Здесь приведен перевод инструкции, предоставленной Gian Pablo Vilamil (Bootload the Arduino Mini site:arduino.cc). Инструкция полезна также для китайских плат Arduino, в которые производители для удешевления производства «забывают» прошить загрузчик.

    В каких случаях может понадобиться перешить загрузчик?

    1. Ваша плата Arduino не имеет загрузчика — по какой-то причине он не записан в память микроконтроллера. Это может произойти, если Вы заменили на плате чип микроконтроллера. Также может быть ситуация, когда производитель платы «забыл» записать загрузчик (так поступают многие китайские поставщики плат Arduino с целью удешевить производство).

    2. Нужно заменить имеющуюся версию загрузчика на другую. Старые несовершенные загрузчики плат Arduino (до появления Arduino Diecimila) ждали около 10 секунд после сброса или включения питания, пока придет от хоста новая программа микроконтроллера (скетч). Такая задержка могла появиться и после программирования скетча. Эта лишняя задержка довольно неприятна, когда не нужно записывать в память скетч. Альтернативные загрузчики, в том числе Adaboot bootloader, LilyPad bootloader и загрузчик Arduino Diecimila устраняют эту задержку. Также в некоторых случаях Вы можете самостоятельно изменить код загрузчика (см. разделы «Исходный код загрузчиков Arduino», ссылку [9] и врезку «Пример конфигурирования загрузчика Arduino UART»). Это полезно, когда нужно, чтобы проект стартовал намного быстрее (без таймаута загрузчика), и особенно когда при включении питания/сбросе возможно поступление на вход UART каких-то данных, не относящихся к загрузке. Если обычный загрузчик получит некоторые посторонние данные, то он будет пытаться их обработать как данные новой прошивки, что может привести к ошибкам, задержке запуска, и возможно даже что Ваша программа никогда не запустится.

    3. Загрузчик вообще не используется. Процедура замены загрузчика в среде программирования Arduino также позволит Вам его полностью заменить каким-то приложением. Преимущество тут в том, что Ваше приложение будет запускаться немедленно, без задержки, и освободятся дополнительно 2 килобайта памяти программ. Недостаток в том, что больше нельзя перепрограммировать Вашу плату Arduino через USB — надо будет использовать ISP (до тех пор, пока Вы не замените/восстановите загрузчик).

    4. Имеющийся загрузчик иногда оказывается поврежденным. Это встречается очень редко, однако все-таки возможно при некоторых обстоятельствах повреждение памяти FLASH микроконтроллера Arduino, и не получается запрограммировать Arduino традиционным способом (через USB — TTL UART). Повторная установка загрузчика может исправить эти проблемы. Ситуация похожа на переформатирование жесткого диска в компьютере.

    Чем программирование загрузчика у Arduino Mini отличается от других плат Arduino? Полноразмерные платы Arduino имеют 6-контактный коннектор ISP для подключения программатора. Ну у платы Arduino такого коннектора нет (он просто не поместился на маленькой плате), поэтому Вам понадобится сделать кабель с коннектором самостоятельно. В остальном программирование загрузчика ничем не отличается.

    Что понадобится?

    • Программатор ISP [5], например AVR ISP MkII или другой.
    • 6 проводков.
    • 2 кусочка линеек по 3 контакта (или двухрядный разъем «папа» на 6 контактов).
    • Среда программирования AVR Studio (можно загрузить с сайта Atmel, или см. [11]).

    Как сделать кабель?

    Кабель должен соединять 6 контактов платы Arduino Mini с контактами разъема ISP программатора. Эти 6 выводов называются MISO, MOSI, SCK, RESET, Power и Ground. Из этих выводов 3 соответствуют цифровым портам ввода / вывода Arduino 11..13. Другие 3 вывода это сброс (Reset), +5V (Power) и земля (Ground, GND), и возможно Вы их уже используете. Обратите внимание, что вывод +5V это не вывод +9V. Вывод +5V нужен для подачи питания в программатор ISP.

    Эти 6 выводов платы Arduino нужно подключить к 6 выводам коннектора ISP, показанным ниже.

    Обратите внимание, что на этом рисунке показана нумерация контактов с обратной стороны коннектора ISP программатора (или со стороны штырьков коннектора, который будет подключен к плате Arduino Mini). Если коннектор программатора наколот на плоский кабель, у которого красным помечен первый провод, и коннектор обращен от Вас, то на рисунке показано то, что Вы увидите.

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

    Как прошить загрузчик в среде программирования Arduino?

    Теперь Вы можете записать загрузчик с помощью программатора и среды Arduino IDE. Запустите Arduino IDE на компьютере, выберите тип платы Arduino (в меню Tools -> Board выберите Arduino Mini). Затем в меню Tools -> Burn Bootloader выберите тип Вашего программатора (например, это программатор AVR-ISP mkII).

    Чтобы прошить альтернативный загрузчик (например, который Вы скомпилировали сами), понадобится программное обеспечение для управления программатором. Есть множество таких утилит, и в зависимости от имеющегося программатора Вам нужно выбрать то программное обеспечение, которое работает с Вашим программатором. Если Вы используете программатор AVR-ISP mkII, отладчик AVR Dragon или JTAGICE mkII, то можете воспользоваться средой программирования AVR Studio [11], где есть утилита программатора.

    Как прошить загрузчик в среде программирования AVR Studio?

    Загрузите и установите среду программирования AVR Studio. К сожалению, она работает только в операционной системе семейства Windows, но в Интернете можно найти инструкции, как прошить загрузчик (как и любую программу в память микроконтроллера AVR) в среде Mac OS/X, Linux и даже FreeBSD.

    Запустите AVR Studio. Нажмите Cancel, чтобы пропустить стартовое окно, предлагающее создать или открыть проект.

    В меню Tools -> Program AVR -> Connect… выберите тип Вашего программатора (Platform:) и порт для его подключения (Port:) и нажмите кнопку Connect.

    Запустится окно утилиты программатора. На закладке Program выберите тип программируемого микроконтроллера, который установлен на Вашей плате Arduino Mini (ATmega168 или ATmega328), режим программирования Programming mode -> ISP mode. Поставьте галочки «Erase Device Before Programming» и «Verify Device After Programming». В разделе Flash -> Input HEX File выберите прошивку загрузчика.

    Нажмите кнопку Program. В строке статуса основного окна AVR Studio Вы увидите отображение прогресса записи кода загрузчика. После окончания записи можно также нажать кнопку Verify, чтобы еще раз убедиться, что процедура завершилась успешно.

    После того, как загрузчик записан, программатор ISP больше не понадобится. Отключите программатор от порта USB компьютера, и отключите коннектор ISP от платы Arduino Mini. Для записи скетчей в плату Arduino Mini понадобится только требуется специальный переходничок, который реализует преобразование интерфейса USB CDC (виртуальный COM-порт) в RS232 TTL (см. врезку «Переходники USB — TTL RS232 на аппаратных чипах»).

    Примечание: если Вы программируете новый микроконтроллер, в котором не были настроены фьюзы (например, если сами собрали плату Arduino или заменили неисправный микроконтроллер), то также понадобится правильно установить фьюзы микроконтроллера. Основной смысл установки фьюзов — обеспечить запуск загрузчика при включении питания сброса, и правильно настроить тактовый генератор. Также полезно установить биты защиты, чтобы случайно не повредить секцию загрузчика. В утилите программирования AVR Studio фьюзы настраиваются на закладке Fuses, а биты защиты на закладке LockBits.

    Подробнее про настройку фьюзов см. врезку «На что нужно обратить внимание при программировании загрузчика». В установке фьюзов и бит защиты очень помогает калькулятор фьюзов [10], также см. даташит на используемый микроконтроллер.

    [Версии загрузчика Arduino]

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

    Текущие версии загрузчиков (например те, которые поставляются вместе со средой Arduino 0009) почти идентичны для плат Arduino Diecimila и Arduino NG (на которых стоит ATmega168). Оба загрузчика этих плат работают на скорости передачи данных 19200 бод, и занимают в памяти программ (FLASH) микроконтроллера ATmega168 область размером в 2 килобайта. Отличия могут быть только во времени, сколько загрузчик ждет поступления новой программы, и в количестве мерцаний светодиодом на порте 13 Arduino (pin 13 LED), когда загрузчик запускается. Из-за автоматического сброса плат Arduino Diecimila загрузчик ждет очень малое время (меньше секунды), и для экономии времени также только один раз мигает светодиодом на порте 13. Загрузчик Arduino NG ждет примерно 6-8 секунд (потому что плата сбрасывается вручную при загрузке) и мигает светодиодом 3 раза при старте загрузчика.

    Загрузчик, который реально поставляется вместе с продающимися платами Arduino NG, имеет незначительные отличия. Он разрешает внутренний pullup резистор микроконтроллера на порте 6, и не разрешает внутренний pullup резистор на выводе RX pin. Также он не использует таймаут при приеме ошибочных данных, так что если Вы пошлете микроконтроллеру через порт UART какие-то данные сразу после сброса (или включения питания), то загрузка Вашего скетча не произойдет (см. вопросы «Почему мой скетч не запускается …» в FAQ [3]).

    Загрузчик платы Arduino BT делает некоторую первоначальную конфигурацию модуля Bluetooth.

    Загрузчик ATmega8 занимает объем всего лишь 1 килобайт памяти программ (flash). Он также не использует таймаут при приеме неправильных данных, поэтому Вам нужно убедиться, что в плату Arduino на основе ATmega8 не отправляется никаких данных в течение 6..8 секунд, пока активен загрузчик.

    Некоторые древние версии загрузчика работают на скорости 9600 бод (вместо 19200). Такая скорость удобна для плат, у которых нет кварцевого резонатора для стабилизации тактовой частоты микроконтроллера. Чтобы код скетча успешно загружался в таких условиях, нужно поменять параметр serial.download_rate в файле настроек (preferences file) на 9600.

    Примечание: правильный выбор скорости обмена через порт USART — основной принцип работы как загрузчика, так и всего программно-аппаратного комплекса Arduino IDE. В частности, загрузчик платы Arduino может работать и на более высоких скоростях — например загрузчик Arduino Mega 2560 работает на скорости 115200 бод. Поэтому если есть какие-то проблемы в работе загрузчика, попробуйте протестировать ряд наиболее часто используемых стандартных скоростей UART (9600, 19200, 38400, 57600, 115200). Еще лучше, если Вы сразу определите правильную скорость обмена загрузчика с помощью осциллографа — см. длительность импульсов бит данных на ножке TX микроконтроллера, при правильно настроенной скорости их длительность должна совпадать с длительностью импульсов бит данных на ножке RX.

    Платы Arduino сторонних производителей также используют загрузчик. Следует заметить, что есть 3 основных разновидности загрузчика — Arduino UART, USBasp, Atmel DFU.

    Arduino UART. Первая, используемая наиболее широко, применяет для передачи данных UART (так называемый загрузчик Arduino UART). Этот загрузчик давно используется совместно с традиционными микроконтроллерами AVR, у которых на борту нет аппаратуры интерфейса USB. Промежуточным интерфейсом для USB служит отдельный аппаратный блок на специальном чипе (мост USB — TTL USART, который смонтирован на многих платах Arduino, а на некоторых платах его нет, и приходится использовать отдельные переходники USB — TTL UART).

    Продвинутый загрузчик, поставляемый с Arduino-совместимыми платами Wulfden Freeduino Kits. Его код основан на коде загрузчика Arduino UART. «Lady Ada», Limor Fried из Adafruit Industries, сделала множество исправлений и добавлений в код загрузчика с целью получения универсальности (код загрузчика работает в любой версии Arduino IDE, скетчи запускаются сразу после включения питания, скетчи запускаются сразу после загрузки). Последние ревизии Brian Riley унифицировали исходный код для микроконтроллеров ATmega168, ATmega328 и ATmega644, так что получился один файл исходного кода и один файл makefile. Добавлено мигание светодиодом pin 13 LED, показывающее процесс загрузки. Этот загрузчик можно использовать на старых, новых (и самостоятельно изготовленных) платах, как оборудованных, так и не оборудованных функцией автосброса (со средой разработки Arduino-0009 и платами Arduino Diecimilia).

    Дополнительную информацию по изменениям кода загрузчика можно найти на сайте Lady Ada (см. Bootloader for the Atmega328 site:learn.adafruit.com). Исходный код ADABOOT можно загрузить на сайте разработчика (см. ADABOOT — an ATmega Arduino(tm) compatible bootloader site:wulfden.org), или в одном архиве [9].

    USBasp. Это загрузчик, часто используемый на платах metaboard, неофициально (и не полностью, см. [3]) поддерживаемых средой разработки Arduino. Его достоинство в том, что не нужно использовать отдельный мост USB — TTL UART для подключения к USB на традиционных микроконтроллерах. Это упрощает и удешевляет схему, и плату metaboard легче собрать в домашних условиях.

    Atmel DFU. С некоторых пор среда разработки Arduino начала поддержку плат, на которых установлен микроконтроллер AVR со встроенной аппаратурой USB. На таких платах также нет отдельного моста USB — TTL UART. Но загрузчик конечно другой, поддерживающий периферию USB AVR, и протокол загрузки кода USB DFU компании Atmel. К сожалению, исходный код оригинальных загрузчиков от Atmel закрыт, есть только бинарники. Однако, поскольку протокол DFU опубликован, имеется альтернативная версия загрузчика с открытым исходным кодом — в библиотеке LUFA.

    Подробную информацию по различным загрузчикам см. в таблицах 4, 5, 6 (врезка «На что нужно обратить внимание при программировании загрузчика»), и 7 (раздел «Исходный код загрузчиков Arduino»).

    Чтобы записать загрузчик, Вам обязательно нужен внешний ISP-программатор [5]. Программатор подключается к программируемой платой Arduino через 6-выводный коннектор ISP [8], который обычно всегда установлен на плате Arduino. При подключении коннектора убедитесь, что он ориентирован правильным образом. Некоторые платы наподобие Arduino Mini требуют самостоятельного подключения коннектора проводами к контактам платы. Если есть сомнения при подключении, то обратитесь к схеме платы и её описанию.

    Загрузчик можно записать прямо из среды разработки Arduino (Tools -> Burn Bootloader), перед этим нужно сначала выбрать тип программатора и тип платы в меню Tools.

    Выбор загрузчика. Поскольку могут быть различные варианты реализации целевой системы — может быть применена разная модель микроконтроллера (ATmega168, ATmega328, ATmega32U4 и т. п.). Загрузчики для разных моделей микроконтроллеров могут быть несовместимыми друг с другом.

    Частота кварцевого резонатора. Обязательно убедитесь, что прошиваемый Вами загрузчик точно соответствует рабочей частоте системы. Рабочая частота микроконтроллера обычно зависит от конфигурации фьюзов и от частоты внешнего кварцевого или керамического резонатора (чаще всего применяют кварцевые резонаторы на 8 или 16 МГц, но могут быть и другие варианты).

    Фьюзы. Для правильного функционирования загрузчика важны 2 аспекта, которые конфигурируются фьюзами — выбор размера секции загрузки (фьюзы BOOTSZ1, BOOTSZ0), разрешение работы загрузчика (фьюз BOOTRST), а также конфигурирование тактовой частоты (фьюзы, управляющие генератором тактовой частоты и прескалером — CKDIV8, SUT1, SUT0, CKSEL3..0).

    Если Вы неправильно прошьете фьюзы BOOTSZ1, BOOTSZ0, BOOTRST, то код загрузчика не будет запускаться, и загрузчик работать не будет. Точно также если Вы неправильно сконфигурируете фьюзами тактовый генератор и прескалер, то микроконтроллер может заработать на той частоте, на которую загрузчик не рассчитан, и работоспособность загрузчика также будет нарушена. Для вычисления правильного значения фьюзов Вам поможет калькулятор фьюзов [10].

    В таблице я привел самые популярные загрузчики и конфигурации для них. Фьюзы указаны в шестнадцатеричном значении, где HFUSE это старший байт фьюзов, LFUSE младший байт фьюзов, EFUSE байт расширенных фьюзов.

    Таблица 4. Загрузчики Arduino UART.

    AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
    ATmega8 8 ArduinoBOOT-mega8-8MHz.hex 1024 HFUSE=CA
    LFUSE=DF
    16 ArduinoBOOT-mega8-16MHz.hex
    ATmega168 8 ArduinoBOOT-mega168-8MHz.hex 2048 HFUSE=DD
    LFUSE=E2
    EFUSE=00
    16 ArduinoBOOT-mega168-16MHz.hex
    ATmega328 8 ArduinoBOOT-mega328-8MHz.hex 2048 HFUSE=DA
    LFUSE=FF
    EFUSE=05
    16 ArduinoBOOT-mega328-16MHz.hex 2048

    Прошивки загрузчиков Arduino можно найти в папке, где установлена система разработки Arduino, обычно это папка с полным путем наподобие c:\Program Files\Arduino1.0.6\hardware\arduino\bootloaders. Там же можно найти исходный код загрузчиков. Также готовые прошивки и исходный код всех загрузчиков можете скачать по ссылке [9], см. папку arduino\bootloaders\HEX архива, и ищите там имена файлов прошивок, указанные в таблицах 4, 5, 6 (имя файла прошивки указано в столбце Прошивка).

    Таблица 5. Загрузчики Atmel DFU.

    AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
    ATmega32U4 8 BootloaderDFU-mega32u4-8MHz.hex 4096 HFUSE=D8
    LFUSE=DE
    EFUSE=F3
    16 BootloaderDFU-mega32u4-16MHz.hex

    Таблица 6. Загрузчики USBasp.

    AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
    ATmega168 12 USBaspLoader-mega168-12MHz.hex 2048 HFUSE=D6
    LFUSE=DF
    EFUSE=00
    16 USBaspLoader-mega168-16MHz.hex
    20 USBaspLoader-mega168-20MHz.hex
    ATmega328 12 USBaspLoader-mega328-12MHz.hex HFUSE=DA
    LFUSE=F7
    EFUSE=03
    16 USBaspLoader-mega328-16MHz.hex
    20 USBaspLoader-mega328-20MHz.hex

    Загрузчик (bootloader) — одна из основных вещей, что отличает Arduino от простого микроконтроллера AVR компании Atmel. Когда Вы собираете свою плату, или когда случайно купили на ebay плату, не прошитую загрузчиком, то Вам нужен внешний программатор ISP, чтобы прошить в память микроконтроллера загрузчик. Но когда Вы прошили загрузчик, то можно программатор ISP положить на полку — больше он не понадобится (за исключением каких-то специальных случаев), потому что дальше перешивать память программ микроконтроллера удобнее с помощью загрузчика.

    Загрузчик [2] это по сути маленькая программа, предназначенная для только одной цели — перепрошить микроконтроллер программой пользователя. Загрузчик размещен в старших адресах пространства памяти программ (FLASH), а программа пользователя — в младших адресах (начиная с нулевого адреса). На рисунке показан типичный пример распределения памяти программ (FLASH) микроконтроллера ATmega328.

    Примечание: если у Вас есть программатор ISP [5], то Вы можете настроить среду разработки Arduino так, чтобы использовать для загрузки именно программатор, а не bootloader. Достоинство такого метода загрузки в том, что Вы можете полностью задействовать всю доступную память программ (FLASH) микроконтроллера (потому что загрузчик уже не используется, и его область памяти программ свободна для использования).

    Микроконтроллер Arduino сконфигурирован фьюзами так, чтобы при запуске системы (включение питания, сброс) управление всегда получал загрузчик. Затем загрузчик некоторое время ждет (1..2 секунды) загрузки программы пользователя, и если загрузка не началась, то запускает программу пользователя (передает управление на адрес 0). Таким образом, всегда можно при желании перезаписать программу пользователя, и тем самым обновить или полностью изменить функционал устройства. Код загрузчика при этом остается нетронутым.

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

    [Готовые прошивки загрузчика Arduino]

    См. архив по ссылке [9] и таблицы 4, 5, 6 во врезке «На что нужно обратить внимание при программировании загрузчика».

    [Исходный код загрузчиков Arduino]

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

    AVR bootloader: https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/bootloaders
    SAMD bootloader: https://github.com/arduino/ArduinoCore-samd/tree/master/bootloaders/zero

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

    Таблица 7. Разновидности загрузчиков, которые можно использовать для платформы разработки Arduino.

    Название AVR Описание
    Arduino UART ATmega8, ATmega168, ATmega328 и другие Используется для большинства плат Arduino, когда код загружается через мост USB-UART.
    Atmel DFU ATmega32U4 и другие Применяется для случаев, когда микроконтроллер AVR имеет на борту аппаратный интерфейс USB. Загрузчик основан на протоколе Atmel DFU Flip и открытой библиотеке LUFA.
    USBasp ATmega168, ATmega328 Применяется для плат metaboard. Загрузчик основан на открытой библиотеке V-USB, эмулирует поведение популярного программатора USBasp.

    Как компилировать. Для компиляции Вам потребуется тулчейн AVR-GCC, доступный для большинства операционных систем — Linux, Mac OS, Windows. На операционной системе Windows тулчейн можно получить, если скачать и установить пакет WinAVR или среду разработки Atmel Studio.

    Компилируется загрузчик командами утилиты make. Обычно для этого нужно зайти в каталог с исходным кодом загрузчика, и выполнить 2 команды:

    После этого в текущем каталоге появится файл с расширением HEX — готовая прошивка загрузчика, которую нужно записать в память микроконтроллера с помощью обычного ISP-программатора [5] (не забудьте также правильно установить фьюзы микроконтроллера!).

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

    Процесс получения прошивки загрузчика состоит из предварительного конфигурирования Makefile, где настраиваются опции (если это необходимо) и последующей компиляции командами make clean и make. Конечно же, для компиляции у Вас должен быть установлен тулчейн (компилятор AVR GCC и библиотеки). На операционной системе Windows тулчейн можно получить, если установить пакет разработки WinAVR или Atmel Studio.

    Когда нужно получить загрузчик для Arduino, то чаще всего (в зависимости от типа платы или Вашей конструкции) это микроконтроллер ATmega328, или реже ATmega168, ATmega8, ATmega32U4. Поэтому сначала нужно выбрать, какой загрузчик использовать. Почти все загрузчики можно найти в папке установки Arduino c:\Program Files\Arduino1.0.6\hardware\arduino\bootloaders, распределенные по подкаталогам atmega8, atmega и другим.

    Выбор загрузчика. Если Вам нужен загрузчик для ATmega8, то его исходный код и Makefile находится в папке atmega8. Если нужен загрузчик для ATmega168 или ATmega328, то см. папку atmega. Если нужен загрузчик для ATmega32U4, то его можно найти в библиотеке LUFA, см. папку Bootloaders\DFU.

    Примечание: исходный код и прошивки загрузчиков можно скачать по ссылке [9].

    Конфигурирование загрузчика для ATmega8. Зайдите в папку atmega8, и откройте текстовым редактором файл Makefile. Вам нужно проверить следующие опции:

    • DIRAVR. Эта опции указывают на каталог установки тулчейна (в этом каталоге находится папка bin с исполняемыми файлами для компилятора и других утилит, и папка include для заголовочных файлов библиотек). Если у Вас установлен тулчейн WinAVR, то значение этой опции должно быть наподобие c:\WinAVR-20100110\avr. Если у Вас установлен тулчейн в составе Atmel Studio, то значение этой опции должно быть наподобие «c:\Program Files\Atmel\AVR Tools\AVR Toolchain» (должны быть кавычки, потому что в составе пути есть пробелы).

    • DEFS. В этой опции указана тактовая частота системы через значение макропеременной F_CPU. Например, если указана опция:

    DEFS = -DF_CPU=8000000 -DBAUD_RATE=19200
    

    то это означает, что прошивка будет скомпилирована в расчете на тактовую частоту 8 МГц. 8 МГц обычно используется, если работает внутренний RC-генератор микроконтроллера AVR. Если у Вас используется другая тактовая частота, задаваемая внешним кварцевым резонатором, то укажите рядом с -DF_CPU= тактовую частоту в Герцах. Чаще всего используется тактовая частота 16 МГц, т. е. нужно указать -DF_CPU=16000000.

    Примечание: важно указать правильную тактовую частоту потому, что к этому значению привязана настройка последовательного порта UART, через который загрузчик получает код от хоста (из системы разработки Arduino IDE с помощью вызова утилиты программирования AVRDUDE). Неправильная настройка UART приведет к тому, что загрузчик не сможет получить код программы пользователя, и микроконтроллер не будет перепрошиваться через загрузчик.

    На этом конфигурирование загрузчика можно считать законченным. Для получения прошивки загрузчика осталось выполнить последовательность из двух команд:

    После компиляции получится файл ATmegaBOOT.hex, который можно с помощью программатора ISP записать в память микроконтроллера ATmega8. Не забудьте после программирования загрузчика правильно установить фьюзы микроконтроллера (см. таблицу 4).

    Конфигурирование загрузчика для ATmega168 или ATmega328. Зайдите в папку atmega, и откройте текстовым редактором файл Makefile. Здесь все устроено несколько сложнее, потому что этот Makefile универсальный, он предназначен для получения прошивок для множества различных плат Arduino:

    Таблица 8. Выбор цели (target) в Makefile для ATmegaXX8.

    Плата Arduino Target
    Arduino LilyPad lilypad
    Arduino Pro или Arduino Pro Mini pro8, pro16 или pro20 в зависимости от используемой тактовой частоты
    Arduino Diecimila diecimila
    Arduino NG ng
    Своя плата на ATmega328 atmega328
    Arduino Pro на ATmega328P без кварца atmega328_pro8
    Arduino Mega mega

    Примечание: цель Target, указанная в таблице, подставляется как опция команды make при компиляции прошивки:

    make clean
    make < тут надо указать Target >

    Первое, что Вам нужно сделать, это выбрать цель для компиляции (вариант из столбца Target таблицы 6) в зависимости от платы, которая у Вас используется. Предположим, что у Вас самодельная плата на микроконтроллере ATmega328, для которой Вы собираетесь сделать свой загрузчик. Тогда цель для компиляции у Вас будет atmega328, прошивка получается выполнением 2 команд:

    make clean
    make atmega328
    

    Если у Вас используется другая тактовая частота, то проверьте значение макропеременной AVR_FREQ (по умолчанию для цели atmega328 задана тактовая частота 16 МГц: AVR_FREQ = 16000000L). После компиляции получите прошивку ATmegaBOOT_168_atmega328.hex, которую можно записать в память Вашего микроконтроллера с помощью программатора ISP. Внимание, не забудьте также правильно установить фьюзы микроконтроллера (см. таблицу 4).

    Для подключения к компьютеру недорогих плат наподобие Arduino Mini понадобится отдельный внешний переходник для моста USB — TTL UART.

    Переходник USB TTL COM-port (он подключается с одной стороны к 6-pin коннектору FTDI, а с другой стороны к компьютеру по USB) можно купить готовый. Обычно такой переходник сделан по простейшей схеме на основе чипа FT232 (компания FTDI) или CP210x (компания Silicon Labs). Драйвер для переходника можно скачать с сайта соответствующей компании. Хорошие переходники USB to TTL Serial Cable FTDI (или на чипе CP210x) можно купить на eBay, dealextreme или aliexpress, есть даже предложения с бесплатной доставкой. При покупке выбирайте 5V версию (иногда бывают версии на 3.3V). Самый лучший вариант – когда можно выбрать перемычкой рабочие уровни порта TTL RS-232 (3.3V или 5V). Если уровни сигналов на переходнике USB to TTL и отлаживаемом устройстве не совпадают, то понадобятся последовательно включенные резисторы номиналом около 1…2 кОм.

    [Ссылки]

    1. Arduino Bootloader Development site:arduino.cc.
    2. Загрузчики (bootloader) для микроконтроллеров AVR.
    3. Arduino: что там внутри? (FAQ).
    4. AVR109: самопрограммирование AVR.
    5. Программаторы для AVR.
    6. USBtinyISP — AVR programmer & SPI interface site:adafruit.com.
    7. Parallel Port Programmer site:arduino.cc.
    8. Цоколевки коннекторов ISP.
    9. 150117arduino-bootloaders.zip — исходный код и готовые прошивки загрузчиков Arduino.
    10. Engbedded Atmel AVR® Fuse Calculator site:engbedded.com.
    11. AVR Studio 4.13, 4.14, 4.19, 5.0 и не только.

    Даунгрейд Arduino после проблем с обновлением прошивки — устранение неполадок

    Ларри М #1

    @RemcoVH

    Не могу изменить интерфейс. Таким образом, единственный вариант/решение — перейти на версию, которая у меня работала правильно. Но это все еще не работает.

    Сначала проверьте, можете ли вы общаться с Arduino с помощью последовательного монитора в Arduino IDE.

    Установите скорость передачи данных на 115200 и «Конец строки» на NEWLINE

    Как только вы снова сможете поговорить с Arduino, мы можем загрузить обратную версию grbl.

    1 Нравится

    @LarryM Просто чтобы убедиться, что я запустил последовательный монитор и получил интерфейс grbl.

    Я знал, что общался с ним, только проблема заключалась в компиляции прошивки grbl. Я скачал три разные версии: 1.1f, 1.0C и grbl-x-carve.

    Для всех я импортировал их как библиотеку (как указано в их «мануале»). Только после нажатия на кнопку компиляции я получаю следующую ошибку (также несколько предупреждений): Sketch использует 32266 байт (100%) дискового пространства программы. Максимум 32256 байт.

    Глобальные переменные используют 1507 байт (73%) динамической памяти, оставляя 541 байт для локальных переменных. Максимум 2048 байт.
    Эскиз слишком большой; см. http://www.arduino.cc/en/Guide/Troubleshooting#size, где приведены советы по его уменьшению.
    Ошибка компиляции для платы Arduino/Genuino Uno.

    Ларри М #3

    Используйте Xloader для загрузки одной из этих версий и повторите тесты
    .
    Гитхаб

    изобретений/грбл

    Inventables X-Carve специальные версии Grbl:. Внесите свой вклад в разработку inventables/grbl, создав учетную запись на GitHub.

    Как использовать Xloader для загрузки новой версии grbl в Arduino/X-контроллер. На левом снимке экрана показано окно, которое Xloader отображает при запуске. Введите путь к файлу или перейдите к файлу .hex, который вы хотите загрузить в контроллер Arduino/X. Выберите тип устройства, в которое вы собираетесь загрузиться (Uno/ATmega328 для Arduino/X-контроллера). Выберите COM-порт, к которому подключен ваш Arduino/X-контроллер. Скорость передачи должна быть 115200.Нажмите кнопку «Загрузить». Когда …

    Хорошо, загрузка шестнадцатеричного файла с помощью xloader работает. Насколько я вижу, у меня снова тот же интерфейс, к которому я привык до получения версии grbl 1.1f. Так что спасибо за помощь в этом вопросе.

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

    Большое спасибо.

    Ларри М #5

    Проблемы с Arduino IDE.

    На этом форуме есть ветка, посвященная этой проблеме, но сейчас у меня нет ссылки.

    Я поищу.

    Здесь:

    Привет, народ, Скачал IDE 1.8.2 — все в порядке или мне нужна более старая версия? Если да, то какой будет лучше? Вин 7 Про 64 Ваше здоровье Исаак

    Прошивка прошивки ESP8266 v1.5 с помощью Arduino Uno

    Я должен признать, что у меня был неудачный опыт при попытке прошить новые прошивки на мои модули ESP-01, но сегодня я нашел простой и надежный способ прошить ESP8266 прошивкой v1.5 (AT v0.51) с использованием моей платы Arduino Uno в качестве контроллера FTDI.

    Предпосылки

    Вам потребуются следующие предметы:
    • ПК с Windows с установленной Arduino IDE
    • Плата Arduino Uno
    • Надежное соединение между модулем ESP-01 и платой Arduino. Эта процедура основана на моем дешевом WiFi-шилде Arduino с ESP-01
    • .

    Проводка

    Прежде всего, вам нужно собрать мой дешевый WiFi-шилд Arduino с ESP8266.Это обеспечит прочную основу для питания модуля ESP и настройки связи с платой Arduino.
    Прежде чем продолжить, убедитесь, что вы можете подавать простые AT-команды на плату ESP-01.

    Теперь измените проводку следующим образом.

    • Удалите микросхему ATmega328P с платы Arduino. Удалив микроконтроллер, вы можете использовать встроенный интерфейс FTDI Arduino Uno для прямой связи с модулем ESP.
    • Подключите контакт ESP RDX к контакту RX Arduino (контакт 0).
    • Подключите контакт TXD ESP к контакту TX Arduino (контакт 1).

    Проверка подключения

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


    Если вы не получили никакого вывода, вы можете попробовать следующее.
    • Скорость передачи данных монитора последовательного порта должна соответствовать скорости передачи данных ESP UART. У старых модулей 9600, у новых 115200.
    • Попробуйте использовать другие настройки для параметра «Конец линии» монитора последовательного порта. Для моего модуля ESP я должен установить его на «Оба NL и CR», как вы можете видеть на скриншоте.
    Пробуйте разные комбинации, пока не сможете правильно взаимодействовать с модулем ESP с помощью последовательного монитора.

    Скачать прошивку и инструменты

    Загрузите следующие файлы и извлеките их


    Вспышка это!

    Чтобы перевести модуль ESP в режим мигания, вы должны соединить контакт GPIO0 ESP с землей.
    1. Отсоедините плату Arduino от ПК
    2. Установите перемычку между контактами GND и GPIO0 (см. фото)
    3. Подключите плату Arduino к ПК.


    Выполните следующие действия, чтобы установить новую прошивку на плату ESP-01.
    1. Закройте среду разработки Arduino, если она еще открыта
    2. Запустите средство загрузки флэш-памяти ESP ( ESP_DOWNLOAD_TOOL_V2.4.exe ), которое вы ранее извлекли
    3. Применить следующие настройки
    4. Bin-файлы (из извлеченного zip-файла esp_iot_sdk):
      1. bin\at\noboot\ орел.flash.bin — 0x00000
      2. bin\at\noboot\ eagle.irom0text.bin — 0x40000
      3. бин\ пустой.бин — 0xfe000
      4. бин\ пусто.бин — 0x7e000
    5. Размер флэш-памяти : 8 Мбит
    6. COM-порт : выберите COM-порт Arduino
    7. Скорость передачи : 115200 или 345600 (это не связано со скоростью передачи ESP

    Теперь нажмите кнопку СТАРТ и дождитесь завершения процесса прошивки.
    Теперь нажмите кнопку STOP и закройте инструмент прошивки.

    Проверить подключение и установить скорость UART по умолчанию

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

    1. Отсоедините плату Arduino от ПК
    2. Удалите перемычку между контактом GND и GPIO0
    3. Подключите плату Arduino к ПК
    Откройте среду разработки Arduino, выберите правильный COM-порт и откройте последовательный монитор.
    Проверьте подключение с помощью команд «AT» и «AT+GMR».Правильные настройки прошивки ESP v1.5:
    • Скорость: 115200
    • Окончание строки: NL и CR
    Если вы собираетесь использовать модуль ESP-01 с Arduino Uno, вам необходимо снизить скорость передачи данных по умолчанию, поскольку максимальная скорость интерфейса SoftwareSerial составляет около 38400 бит/с. Я предлагаю настроить модуль ESP на использование 9600 или 19200 бит/с. Чтобы установить правильную скорость передачи данных, используйте эту команду:
     AT+UART_DEF=9600,8,1,0,0 

    Теперь установите скорость последовательного монитора на 9600 и снова проверьте связь.

    Восстановите защитный экран ESP WiFi

    Удалите изменения, внесенные в защитный экран ESP.

    • Вставьте микросхему ATmega328P обратно в плату Arduino
    • Подключите контакт ESP’ RDX к контакту 7 Arduino
    • Подключите контакт TXD ESP к контакту 6 Arduino

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

    Ваша плата ESP8266 теперь прошита обновленной прошивкой и готова к использованию для ваших подключенных проектов!

    Не забудьте взглянуть на мою библиотеку WiFiEsp для Arduino.

    Как обновить прошивку USB Arduino DUE? – SainSmart Германия

    Как обновить прошивку USB Arduino DUE? – SainSmart Германия

    Как обновить прошивку USB Arduino DUE?

    1. Хранить
    2. Проекты
    3. Как обновить прошивку USB Arduino DUE?

    Что вам нужно:

    • 1 шт.
    • 1 плата SainSmart Due Atmel SAM3X8E ARM Cortex-M3
    • 1x SainSmart UNO R3 ATmega328P макетная плата, совместимая с Arduino UNO R3
    • 1x 1 мкФ конденсатор
    • Соединительные провода

     

    Avrdude используется в качестве программного обеспечения для программирования в Windows. Нажмите кнопку «Пуск» и введите cmd, чтобы активировать окно командной строки.

    Введите в командной строке: avrdude–C avrdude conf-c arduino –p m16u2-vvv-U flash:w:Arduino–DUE-usbserial.hex:i

    Используется команда cd (сменить каталог) в Windows для перехода к папке, в которой находятся ovrdude.exe, avrdude.conf и Arduino –DUE-usbserial. Я просто скопировал их в тот же каталог, чтобы избежать длинных ссылок.

    Измените com9 на com-порт, к которому подключен ваш UNO.

    Измените Arduino –DUE-usbserial .hex на имя вашего обновленного шестнадцатеричного файла.

    DUE   ATMEGA16U2 USB-контроллер DUE требует обновления.

    UNO используется в качестве ISP Programmer

     

    Соединения:

    RST-pin10

    MIOSI-pin11

    MISO-pin12

    SCK-pin13

    5В-5В

    Земля-Земля

    Скетч

    Arduino ISP необходимо загрузить в UNO. Вы найдете его в примерах.

    Конденсатор с 1 мкФ, подключенный между Reset и GND.

     

    Это руководство предоставлено нашим клиентом SainSmart.Большое спасибо за его помощь здесь.


    Почта Альтерер Почта Нойерер


    {{/Предметы}}

    Zwischensumme {{totalPrice}}

    {% if Additional_checkout_buttons %}

    {{ content_for_additional_checkout_buttons }}

    {% конец%}

    Пролистать наверх

    установить новые прошивки с помощью dfu и перепрошить на arduino uno mega r3

    Взято из старого блога WordPress.

    Эту статью также можно найти здесь с картинками: https://github.com/NicoHood/Hoodloader#flashing-new-firmware-with-dfu-and-flip

    Эта статья в основном написана как объяснение того, как установить Hoodloader, который включен в проект HID. Но вы также можете прошить на Arduino другие прошивки. Это руководство предназначено только для версий Windows и R3 . Этот метод называется «Обновление прошивки устройства» и также работает на Linux/Mac и более ранних версиях, но в этой статье он не рассматривается.

    Что вам нужно: Arduino Uno/Mega, кабель USB, обычная перемычка, флип

    Сначала установите Flip . Это также установит необходимые драйверы DFU для прошивки новой прошивки. Запустите флип.

    На короткое время закоротите эти два контакта 16u2 проводом (перемычка только для обозначения соединения) . Если у вас более старая версия, чем R3, пожалуйста, погуглите, как войти в режим DFU. Сегодня у каждого должен быть r3, поэтому не нужны никакие резисторы и сложные вещи.

    Теперь устройство должно отображаться как Atmega16u2 в диспетчере устройств. Если нет или если вы получаете ошибку: «AtLibUsbDfu.dll не найден» , установите драйверы вручную из диспетчера устройств. Щелкните правой кнопкой мыши неизвестное устройство и выберите путь установки Flip для поиска драйверов.

    Нажмите кнопку IC и выберите Atmega16u2. (то же самое для Уно/Мега).

    Нажмите File->Load Hex File и выберите Firmware. (Версия Lite только в том случае, если у вас есть какие-либо ошибки.Пожалуйста, сообщайте об ошибках.)

    Нажмите USB-кабель и нажмите, чтобы открыть .

    Нажмите run , чтобы загрузить прошивку. Снимите флажок «Сброс» и нажмите «Запустить приложение», чтобы перезагрузить Arduino. Или просто переподключить кабель .

    Вероятно, вам нужно установить новые драйвера для новой прошивки. Щелкните правой кнопкой мыши устройство в диспетчере устройств и выберите INF-файл, поставляемый с прошивкой. Или просто щелкните правой кнопкой мыши файл .inf и нажмите «Установить».

    Готово! Получайте удовольствие от новой прошивки Arduino.

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

    Худлоадер Подбросить

    Обновление прошивки на Arduino UNO — устранение неполадок

    Я читал разные темы по обновлению прошивки до 0.2.11, но у меня это не работает. При обновлении не загружается текущая прошивка.У меня были некоторые проблемы с запуском SSR из чтения, я подумал, что, возможно, загрузка текущей прошивки — это начало. Любая помощь была бы отличной, или, может быть, я пропустил тему, в которой была решена эта же проблема. Если бы кто-то мог указать мне в правильном направлении, я был бы очень признателен.

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

    Добро пожаловать в программу обновлений BrewPi!

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

    Проверка актуальности сценария обновления
    /home/pi/brewpi-tools обновлен.

    *** Обновление репозитория сценариев BrewPi ***

    Останов запущенных экземпляров BrewPi
    Сообщение о выходе отправлено экземпляру BrewPi с pid 29083!
    Вы находитесь на филиале Мастер
    Последний коммит в / Home / Brewpi 4C7DFA342D8403EB2B485E9403EB2B485E970E2CDEC9E53C9E4 на ср., 05 авг 2015 16:15:44
    Последний коммит по происхождению / мастеру 4C7DFA342D8403EB2B485E970E2CDEC9E53C9E4 на ср., 05 авг 2015 16:15:44
    Ваша локальная версия /home/brewpi обновлена!

    *** Обновление репозитория веб-интерфейса BrewPi ***
    Путь «/var/www» не является допустимым репозиторием git
    По какому пути вы установили сценарии веб-интерфейса BrewPi? / var / www / html
    Вы находитесь на ветке Мастер
    Последний фиксатор в / var / www / html — D44C03E786D0BDE0DC43F86A8BD655659F3F3D2B на ср., 11 Мар 2015 16:59:39
    Последний коммит по происхождению / мастеру D44C03E786D0BDE0DC43F86A8BD655659F3F3D2B на ср., 11 Mar 2015 16:59:39
    Ваша локальная версия /var/www/html обновлена!

    Изменения не вносились, пропущен runAfterUpdate.ш.
    Если у вас возникли проблемы, вы можете запустить его вручную с помощью:
    sudo /home/brewpi/utils/runAfterUpdate.sh

    Сценарий обновления может автоматически проверять версию микропрограммы вашего контроллера и программировать ее с помощью последней версии на GitHub. Хотите сделать это сейчас? [Y/n]:y
    Останов всех запущенных экземпляров BrewPi для проверки/обновления контроллера…

    Проверка текущей версии прошивки…
    18 окт. 2015 15:06:55 Открытие последовательного порта
    Текущая версия прошивки на контроллере: 0.2,4

    Проверка GitHub на наличие последней версии…
    Последняя версия на GitHub: 0.2.11

    Версия на GitHub новее, чем ваша текущая версия, загрузка новой версии…
    Загрузка последней прошивки…
    Загрузка прошивки не удалась

    *** Обновление BrewPi завершено! ***

    .

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

    Ваш адрес email не будет опубликован.