Как прошить 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

Распиновка 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 без параллельного/высоковольтного программатора.

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

HWman аватар

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

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

Прошил бутлоадер через 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: После этого жмем записать загрузчик

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

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

ascon аватар

Подключаем камень как на этой картинки (с кварцем и керамическими конденсаторами на 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 мм.

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

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