Сразу признаюсь, что заголовок призван привлекать внимание — конечно, за $3 полноценную Arduino-плату не собрать, но минимальное решение вполне можно.
Платы проекта Arduino идеальны для макетирования и сборки прототипов, а для законченных устройств хотелось найти что-то более дешевое и доступное. В этой заметке будет описана минимальная Arduino-совместимая конструкция.
В качестве отправной точки использовались статьи Minimal Arduino with ATmega8 (внимание: в этой статье есть ошибка, значения fuse-битов неверны) и страница об ArduinoISP из официальной wiki. К сожалению, ни одна из этих статей в своё время не ответила на все мои вопросы, кроме того появилось желание немного «подкрутить» стандартный bootloader, но об этом ниже.
В качестве отправной точки использовались статьи Minimal Arduino with ATmega8 (внимание: в этой статье есть ошибка, значения fuse-битов неверны) и страница об ArduinoISP из официальной wiki. К сожалению, ни одна из этих статей в своё время не ответила на все мои вопросы, кроме того появилось желание немного «подкрутить» стандартный bootloader, но об этом ниже.
Поддержка новых плат и IDE
(дополнение от 01.05.2012, файлы исправлены 27.05.2012)
(дополнение от 01.05.2012, файлы исправлены 27.05.2012)
Действия, описанные в статье, проверялись на Arduino IDE 0023 и клоне Arduino Duemilanove. С момента написания статьи были выпущены новые платы и обновлена среда. Судя по комментариям пользователей к этой записи, всё работало если в качестве платы-программатора использовались Arduino Uno и Arduino Mega 2560. Для новой версии среды Arduino IDE 1.0.1 я подготовил обновлённый архив (доступен в конце статьи), обновление необходимо из-за незначительных изменений в формате файла boards.txt
Минимальная Arduino-конструкция за $3.5
(дополнение от 02.05.2012)
Этот способ является альтернативным описанному в статье ниже!
В комплекте Arduino IDE 1.0 поставляется новый бутлоадер Optiboot, который занимает всего 512 байт (бутлоадер, описанный в этой статье в два раза больше — 1 Кб) и работает на высоком бодрейте — 115200 (в статье ниже — 38400). Для работы этого бутлоадера дополнительно к описанным в статье компонентам нужен внешний кварц на 16МГц и два конденсатора на 22пФ его обвязки (этим объясняется увеличение стоимости на $0,5 :)). В комплекте с Arduino IDE 1.0 есть уже скомпилированная версия для ATmega8, достаточно только добавить в boards.txt следующее и прошить бутлоадер:
(дополнение от 02.05.2012)
Этот способ является альтернативным описанному в статье ниже!
В комплекте Arduino IDE 1.0 поставляется новый бутлоадер Optiboot, который занимает всего 512 байт (бутлоадер, описанный в этой статье в два раза больше — 1 Кб) и работает на высоком бодрейте — 115200 (в статье ниже — 38400). Для работы этого бутлоадера дополнительно к описанным в статье компонентам нужен внешний кварц на 16МГц и два конденсатора на 22пФ его обвязки (этим объясняется увеличение стоимости на $0,5 :)). В комплекте с Arduino IDE 1.0 есть уже скомпилированная версия для ATmega8, достаточно только добавить в boards.txt следующее и прошить бутлоадер:
############################################################## atmega8optiboot.name=ATmega8 (optiboot, 16Mhz XTAL) atmega8optiboot.upload.protocol=arduino atmega8optiboot.upload.maximum_size=7680 atmega8optiboot.upload.speed=115200 atmega8optiboot.bootloader.low_fuses=0xBF atmega8optiboot.bootloader.high_fuses=0xCC atmega8optiboot.bootloader.path=optiboot atmega8optiboot.bootloader.file=optiboot_atmega8.hex atmega8optiboot.bootloader.unlock_bits=0x3F atmega8optiboot.bootloader.lock_bits=0x0F atmega8optiboot.build.mcu=atmega8 atmega8optiboot.build.f_cpu=16000000L atmega8optiboot.build.core=arduino:arduino atmega8optiboot.build.variant=arduino:standard
В версии файлов к статье от 14.07.2012 настройки для этого способа добавлены в состав архива, поэтому править главный boards.txt больше нет необходимости.
Внимание! Автор не несёт никакой ответственности за возможные последствия следования инструкциям в этой статье.
Что будет нужно:
- Arduino-совместимая плата (я использовал китайский клон Arduino Duemilanove, на момент написания заметки новая Arduino Uno не поддерживается скетчем ArduinoISP. Обновление: по сообщениям пользователей ArduinoISP из Arduino 023 поддерживает Arduino Uno). Плата будет использоваться в качестве программатора для прошивки bootloader'а и в дальнейшем как USB-TTL конвертер;
- Arduino IDE версии 0022 (последняя на момент написаний статьи);
- Микроконтроллер в корпусе DIP-28 ATmega8 или ATmega8A (функционально они идентичны, версия с буквой «A» имеет более низкое энергопотребление). Для тактирования будет использоваться внутренний RC-осциллятор с максимальнй для него частотой 8Mhz.
- Провода для соединения всего этого на время прошивки bootloader'a (я использовал беспаечную макетную плату и набор зачищенных проводов к ней)
- 1 светодиод и токоограничительный резистор на 220-500 Ом (подключается к пину №19 (PB5), это тот же выход Digital pin 13, к которому на большинстве Arduino-совместимых плат подключен светодиод L);
- 1 резистор на 10 кОм (подключается от RESET'а микроконтроллера к +5V для предотвращения произвольного сброса);
- 1 конденсатор 100 нФ (подключается между плюсом и минусом питания для фильтрации помех).
Пригодится также распечатанная схема соответствия пинов контроллера и их Arduino-названий:
Подготовка IDEВыбор именно ATmega8(A) объясняется очень просто: в местных магазинах радиотоваров не было никаких других контроллеров, поддерживаемых средой Arduino. С одной стороны, это сильно ограничило меня в объёме кода, с другой — именно благодаря тому, что код моего проекта на Arduino не поместился в память контроллера, я был вынужден разобраться с WinAVR и переписать проект под AVR-GCC. Времени на вспоминание C и чтение datasheet'ов ушло довольно много, но код получился раз в пять компактнее и, пожалуй, к программированию в среде Arduino я врядли вернусь :).
Скачайте архив с настройками и bootloader'ом и разархивировать его в папку Sketchbook (путь можно посмотреть в пункте меню File -> Preferences Arduino IDE). После перезапуска Arduino IDE в меню Tools -> Board должен появиться новый пункт ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate).
В архиве находится следующее:
- Модифицированный bootloader для ATmega8 от проекта Arduino. Оригинальный исходный код можно найти в папке hardware\arduino\bootloaders\atmega8. Этот bootloader занимает всего 1 Кб (512 слов) в памяти контроллера, в отличие от более нового hardware\arduino\bootloaders\atmega, который используется для плат на основе ATmega168 и ATmega328. Отличия от оригинальной версии заключаются в следующем: уменьшено время ожидания скетча при сбросе микроконтроллера, скорость загрузки поднята до 38400;
- Файл boards.txt, в котором описана конфигурация нового типа платы (с более высокой скоростью загрузки и fuse-битами для работы от внутреннего RC-осциллятора на частоте 8Mhz).
В Arduino нужно загрузить скетч ArduinoISP (File -> Examples -> ArduinoISP), после этого Arduino может играть роль ISP-программатора практически для любых AVR чипов (я проверял на ATmega8 и ATtiny45).
Подключение «программатора» к контроллеру
Схема подключения описана на странице об ArduinoISP из официальной wiki, будет использоваться такой вариант подключения (без внешнего осциллятора):
Схема продублирована в тексте скетча ArduinoISP:
// this sketch turns the Arduino into a AVRISP
// using the following pins:
// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK
Обновление от 30.10.2011: Для Arduino Mega назначение выводов другое:
// 50 (MISO) // 51 (MOSI) // 52 (SCK) // 53 (slave reset)
Дополнительно можно подключить светодиоды, которые будут перемигиваться при прошивке (их наличие или отсутствие на функциональность не влияет):
// Put an LED (with resistor) on the following pins:
// 9: Heartbeat - shows the programmer is running
// 8: Error - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
Проверка подключения
Arduino использует для компиляции скетчей avr-gcc, штатной утилитой для прошивки в котором является программа avrdude (расположен в этой папке: \hardware\tools\avr\bin\). Прежде чем предпринимать что-либо дальше необходимо проверить, правильно ли мы подключили контроллер с помощью следующей команды:
avrdude -v -patmega8 -cstk500v1 -PCOM10 -b19200
Назначение параметров:
- -v — выводить больше информации
- -patmega8 — тип контроллера (для ATmega8A нужно всё равно указывать atmega8)
- -cstk500v1 — тип программатора (ArduinoISP эмулирует STK500)
- -PCOM10 — номер COM-порта (можно посмотреть в меню Tools -> Serial Port в Arduino IDE)
- -b19200 — скорость обмена, скетч ArduinoISP работат на этой скорости
AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.05s avrdude: Device signature = 0x1e9307 avrdude: safemode: lfuse reads as E1 avrdude: safemode: hfuse reads as D9 avrdude: safemode: lfuse reads as E1 avrdude: safemode: hfuse reads as D9 avrdude: safemode: Fuses OK avrdude done. Thank you.
Важно! Если всё подключено правильно, а всё равно не работает, возможно, проблема в версии avrdude. На одной из моих тестовых плат возникла следующая ситуация: avrdude из ArduinoIDE плату-«программатор» с ArduinoISP не видит, а avrdude из WinAVR работает отлично. Решение этого непонятного бага довольно простое — на время прошивки bootloader'a заменить файл \hardware\tools\avr\bin\avrdude.exe на более новую версию из WinAVR. Bootloader может прошиться не с первого раза, а со второго — жалоб о таком поведении на форумах тоже хватает. После прошивки bootloader'а можно восстановить оригинальную версию avrdude.
Прошивка bootloader'a
Самая простая часть. Нужно запустить Arduino IDE, выбрать в пункте меню Tools -> Board следующую плату: ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate). Здесь указывается целевая плата, поэтому нужно выбрать именно этот пункт, а не модель Arduino-совместимой-платы, которая работает ISP-программатором.
После этого нужно запустить процесс прошивки bootloader'а командой Tools -> Burn Bootloader -> w/ Arduino as ISP. Процесс прошивки занимает 1–2 минуты.
Что же получилось в итоге
После прошивки bootloader'а и установки fuse-битов новая ATmega8A будет работать от встроенного RC-осциллятора на частоте 8Mhz. Программы в флеш-памяти контроллера ещё нет, поэтому bootloader будет запускаться снова и снова, о чём будет свидетельствовать постоянное помигивание светодиода L.
Bootloader ждет команд по UART около половины секунды после сброса микроконтроллера. Для заливки прошивки в контроллер можно использовать:
- USB-TTL конвертер (его можно собрать или купить);
- Arduino-совместимая плата со снятым контроллером.
- использование bootloader'a обеспечивает совместимость и с Arduino IDE, и с AVR Studio;
- меньше проводов для подключения (вместо линий ISP только UART). При этом UART часто используется для отладки, поэтому его все равно приходится подключать.
Архив с bootloader'ом и настройками для Arduino IDE всех версий
Проект на GitHub
в приложеном zip-архиве присутствует неоднозначность в вопросе "правильных" фузов. Так, в файле boards.txt указано:
ОтветитьУдалитьatmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
при этом в Makefile указаны
FUSE_L = 0xdf
FUSE_H = 0xca
Вопрос к автору: какие значения fuse-битов правильные? (и в чём их неправильность в исходной статье)
Фьюзы из Makefile'а будут использоваться, если вы будете прошивать бутлоадер через make program (или как там настроено в makefile'е), при прошивке bootloader'а через Arduino используется boards.txt.
ОтветитьУдалитьВ оригинальной статье:
atmega8noxtal.bootloader.low_fuses=0xe4
atmega8noxtal.bootloader.high_fuses=0xc4
У меня:
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
Разницу можно увидеть с помощью калькулятора:
http://www.engbedded.com/fusecalc/
С4 = 256 слов на бутлоадер (512 байт)
С2 = 512 слов на бутлоадер (1024 байт)
Bootloader занимает ~900Кб, поэтому нужно С2. При неправильных фьзах бутлоадер прошьётся, но не будет работать. Можно посмотреть мой и другие комментарии под статьёй
http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/
если поставить C2 включается EESAVE - зачем
Удалить-> Bootloader занимает ~900Кб
ОтветитьУдалитьнаверное 900б... а то 1Мб это круто.
Неправильно указаны параметры avrdude (нужны пробелы).
ОтветитьУдалитьПрошил таким образом Mega8L.
ОтветитьУдалитьПочему-то прошивка загрузчика прошла очень быстро (секунд 5-10). Но не ясно что дальше делать: вставил прошитую микруху в arduino плату, но при попытке что-то залить в IDE пишется:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Как посмотреть эту сигнатуру и какая она должна быть?
Сообразил посмотреть в Avrdude:
ОтветитьУдалитьProgrammer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.10s
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Т.е. выходит у микрухи стерлась сигнатура и теперь я с ней ничего не смогу сделать?
> наверное 900б... а то 1Мб это круто.
ОтветитьУдалитьДа, конечно, 900б, а не кб.
> Неправильно указаны параметры avrdude (нужны пробелы).
работает и так, кроме того среда Arduino запускает именно без пробелов (можно включить детальный вывод вот так:
http://snippets.crisp-studio.com/view/109/vklyuchenie-detalnyx-soobshhenij-kompilyatora-i-avrdude-v-arduino-ide
Разобрался почему не работала плата с прошитой микрухой.
ОтветитьУдалитьОказывается avrdude который идет с Arduino IDE не просто старая версия, а патченная версия, которая игнорирует сигнатуру чипа.
Т.е. не забудьте вернуть родной avrdude после того как будет зашит загрузчик.
> Т.е. не забудьте вернуть родной avrdude после того как будет зашит загрузчик.
ОтветитьУдалитьСтранно, я использую WinAVR с родным avrdude для прошивки через ардуиновский бутлоадер и через ArduinoISP -- работает нормально, сигнатуру говорит. Да, фьюзы будут показаны нулевыми, если прошивать через бутлоадер. А где можно почитать про то, что именно там пропатчено?
Кстати, Mega8L на 8Mhz работает от встроенного RC-осциллятора?
Что-то про reset function.
ОтветитьУдалитьДа, от внутреннего осциллятора, все по инструкции с этой страницы.
На Windows использую avrdude 5.10 из WinAVR 20100110 -- ресетит вроде бы нормально, если указать "-c arduino" нужно будет как-нибудь покопаться...
ОтветитьУдалитьСобрал, попробовал - все отлично работает.
ОтветитьУдалитьЕсть пара проблем.
Шью через RS232-TTL преобразователь на MAX232.
1. Если использовать RX, TX, GND, то момент для "старта" загрузки скетча выбрать крайне тяжело - приходится давить ресет и БЫСТРО нажимать кнопку загрузки
2.Если подать еще сигнал DTR на Reset через емкость - все шьется, но для старта скетча нужно пнуть Reset (вроде как на Freeduino все само стартовало) - может так и должно быть ? Ресет дернуть не трудно, но хотелось бы разъяснений =)
И еще - раз уж такое устройство "позиционируется" как основа для реальной "железки", не могли бы Вы опубликовать статью, как шить Arduino-скетчи без бутлоадера. Чтобы не было задержки после подачи питания - в случае с минимальным ардуино задержка маленькая, но все равно.
Заранее спасибо!
Adruino-скетчи без bootloader-а? Тут потребуется программатор... Какой программатор Вы предпочитаете? ;)
ОтветитьУдалить> 1. Если использовать RX, TX, GND, то момент для "старта" загрузки скетча выбрать крайне тяжело - приходится давить ресет и БЫСТРО нажимать кнопку загрузки
ОтветитьУдалитьВ моём случае я подключал RESET целевой ATmega8 к RESET'у на Arduino Duemilanove с вытащенным контроллером, таким образом за RESET в нужный момент отвечал конденсатор на одной из линий FT232 (как на обычной Duemilanove). Всего соединялось 4-мя проводами: RESET, GND, RX, TX.
> И еще - раз уж такое устройство "позиционируется" как основа для реальной "железки", не могли бы Вы опубликовать статью, как шить Arduino-скетчи без бутлоадера. Чтобы не было задержки после подачи питания - в случае с минимальным ардуино задержка маленькая, но все равно.
Без программатора тут не получится. В качестве программатора можно использовать ArduinoISP (который в этой статье использовался для прошивки бутлоадера). Скомилированный скетч (hex для прошивки) придётся выковыривать откуда-то из временных файлов (зависит от версии IDE).
Скомпилированный скетч обычно лежит hex-файлом в подкаталоге applet, в папке скетча.
ОтветитьУдалить> Скомпилированный скетч обычно лежит hex-файлом в подкаталоге applet, в папке скетча.
ОтветитьУдалитьНа Windows насколько помню ничего не создаётся в папке скетча, точно на 0022?
Да понятно, что придется использовать программатор. Скетчи, кстати, складываются на Linux/MacOS в /tmp. Тут весь вопрос с fuses (нужно ли их менять) и командах avrdude правильных.
ОтветитьУдалитьВедь, насколько я понимаю, fuse-бит еще и задает размер бутлоадера. А тут, если бутлоадера нет, то и fuse должен быть другой ? Вроде на arduino.cc была статья, но я лично мало что понял из нее.
> Ведь, насколько я понимаю, fuse-бит еще и задает размер бутлоадера. А тут, если бутлоадера нет, то и fuse должен быть другой ? Вроде на arduino.cc была статья, но я лично мало что понял из нее.
ОтветитьУдалитьНасколько помню, секция бутлоадера размещается в конце памяти контроллера, поэтому если прошить контроллер прошивкой, меньшей по размеру чем "размер флеша минус установленный размер бутлоадера", то при ресете контроллер стартанёт с адреса бутлоадера (там будет пусто) и не найдя его начнёт с начала прошивки.
Насколько помню, пробовал шить программатором не меняя фьюзы будтлоадера, работало.
Правильнее конечно будет поменять фьюзы и заодно lock-биты для красоты. :)
Илья, поправьте если я не прав...
P.S. Ещё один вариант, чтобы не выковыривать скетчи -- использовать другую IDE, но используя Arduino'вские библиотеки:
Eclipse:
http://habrahabr.ru/blogs/arduino/111908/
Visual Studio:
http://habrahabr.ru/blogs/arduino/111321/
Ну и тут уже один шаг остаётся до программирования на чистом AVR-GCC :)
http://snippets.crisp-studio.com/view/114/ispolzovanie-netbeans-s-winavr
Коллеги! Я правильно понимаю, что алгоритм такой примерно:
ОтветитьУдалить1. Выковыриваем hex
2. Даем программатору команду "стирать флеш" - фузы не трогаем
3. Даем программатору команду "писать флеш" - фузы не трогаем.
4. В идеале, после подачи питания, стартовать должна прошивка сразу.
Если размер прошивки для ATmega8 меньше чем 7168 байт (или сколько там получается), то всё вроде бы верно.
ОтветитьУдалитьп.2 и 3. делаются одновременно обычно (вернее, avrdude сам выполнит стирание перед прошивкой, если не указано обратное).
Спасибо, буду пробовать в скором времени...
ОтветитьУдалитьВсе получилось!
ОтветитьУдалитьСпасибо за поддержку...
Еще бы ликбез по fuses бы =)
Классно, что получилось :)
ОтветитьУдалитьПо фьюзам у DI HALT'а есть:
http://easyelectronics.ru/avr-uchebnyj-kurs-konfiguraciya-fuse-bit.html
Для конкретного контроллера можно проверить этим калькулятором:
http://www.engbedded.com/fusecalc/
Ну вот, собственно финальное (почти) описание устройства. http://a320.emulate.su/2011/02/24/dingoo-a320-arduino-%d1%87%d0%b0%d1%81%d1%82%d1%8c-%d0%b2%d1%82%d0%be%d1%80%d0%b0%d1%8f/
ОтветитьУдалитьФотки готового изделия будут позднее - допиливаю.
Привет!
ОтветитьУдалитьДай знать, когда фотки будут :) Я правильно помню, что у Dingoo есть ТВ-выход и в итоге проекта может получиться полноценный аркадный автомат? :)
Да, и многие так и делают, но я сделал нано-вариант - используется сам экран, а тв-аут выведен на тюльпаны сзади, впрочем покажу
ОтветитьУдалитьЕсли бы не эта статья, ничего бы не получилось.
ОтветитьУдалитьhttp://a320.emulate.su/2011/02/27/fallout-mod/
Да, штука зачётная и стильная получилась :)
ОтветитьУдалитьУважаемые, а можно чайнику небольшое пояснение?
ОтветитьУдалитьВыковырили HEX, а как будет выглядеть команда заливки оного в атмегу8 через ArduinoISP?
Максим, правильно ли я понял, имеется в виду как использовать ArduinoISP чтобы залить произвольный HEX-файл в произвольный контроллер подключенный ISP-проводаками?
ОтветитьУдалитьЕсли я всё понял правильно, то чтобы прошить, например attiny45, подключенный к ArduinoISP нужно следующее
avrdude -v -p attiny45 -c stk500v1 -P COM10 -b19200 -U flash:w:my_hex_file_here.hex
Целевым контроллером в данном случае является то, что подключено к ArduinoISP.
Спасибо, Артем!
ОтветитьУдалитьВ принципе уже дошло, но я лучше переспрошу :)
Все получилось! Спасибо автору статьи и за развернутые комментарии.
ОтветитьУдалитьblink.hex прекрасно залился и сразу заработал.
Классно, что всё получилось, а какой был целевой контроллер?
ОтветитьУдалитьatmega8A-PU
ОтветитьУдалитьЯ в небольшом сметении...
ОтветитьУдалитьПодскажите, а что никакой особой обвязки ненужно??? Ну разве что кроме двух резистора и двух перемычек? (я смотрю по схеме товарища ZNO http://a320.emulate.su/wp-content/uploads/2011/02/board.png)
Зачем тогда так много всего на самой ардуине?
Я так понимаю это остальное все USB, и внутрисхемный программатор.
Если все так, то получается отличный девайс - так сказать простой старт.
И еще вопрос: можно ли так прошивать те же atmega168, atmega328?
ОтветитьУдалитьПодскажите, а что никакой особой обвязки ненужно???
ОтветитьУдалить> Ну разве что кроме двух резистора и двух перемычек?
По хорошему нужно поставить пару конденсаторов на питание, чтобы сгладить помехи, но по минимуму запустится и так. Подробнее тут: http://easyelectronics.ru/podklyuchenie-mikrokontrollera-likbez.html
> Зачем тогда так много всего на самой ардуине?
На arduino стоит USB-TTL преобразователь, регулятор на 5В, схема выбора питания (от DC-джека или от USB)
> Я так понимаю это остальное все USB, и внутрисхемный программатор.
Программатора на Arduino нет, только USB-TTL преобразователь, предварительно зашитый внутрь контроллера бутлоадер прикидывается программатором и принимает прошивку.
> И еще вопрос: можно ли так прошивать те же atmega168, atmega328?
Да, можно. Кроме этого ArduinoISP прошивает любые другие контроллеры ATmel, которые программируются по ISP. Из популярных (кроме названных): ATtiny13, ATtiny2313. Единственное "но" программатор USBtinyISP, например, делает это раза в два быстрее (10с против 2-3с :)).
Подскажите в чем проблема:
ОтветитьУдалитьavrdude -v -patmega8 -cstk500v1 -PCOM4 -b19200
В ответ получаю:
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is ""
avrdude: can't open config file "": Invalid argument
avrdude: error reading system wide configuration file ""
Спасибо! Все отлично получилось! В команде не хватает пробелов:
ОтветитьУдалитьavrdude -v -p atmega8 -c stk500v1 -P COM4 -b 19200
Странно, должно и так понимать, правда я использовал avrdude из WinAVR, а вы судя по этому "Version 5.4-arduino" из Arduino?
ОтветитьУдалитьу меня версия из ардуино не работала совсем :-(.
ОтветитьУдалитьзабыл написать, что для этого я заменил из winavr.
И то даже она почему-то обнаружила со второго запуска той же самой комманды
Этот комментарий был удален автором.
ОтветитьУдалитьВсе оказалось на много проще и не понятнее. Достаточно из во фридуино воткнуть USB в два этапа, т.е. сначала немного, потом еще чуть дальше и все скетча нет.
ОтветитьУдалитьНа макетке собрал девайс. Когда питаю всю схему от Freduino - работает хорошо. Как только запитал от зарядки с мобильного (5.2В, 0,7А) - все скетч пропал.
Исходя из этих двух наблюдений я так понимаю налицо проблемы с питанием, как решать?
И самый главный вопрос - как может питание (может действительно не правильное...) лишать меня залитого скетча????
> у меня версия из ардуино не работала совсем :-(.
ОтветитьУдалитьСудя по куску вывода запускается именно Arduino'воская версия. Не напутал с путями?
> И то даже она почему-то обнаружила со второго запуска той же самой комманды
Это глюк ArduinoISP, о нём на форумах писали и я его пару раз ловил. Обычно ничего страшного, вторая прошивка или ресет Arduino-программатора помогает.
> Теперь дело дошло до сбора уже прошитой Atmega8A-PU на макетной плате. Собираю - не работает,
>вставляю в FreeDuino - работает. Заново собираю схему - не работает.
Как сконфигурированы фьюзы на этой ATmega8? Возможно, сконфигурировано на работу с внешним кварцем, на макетке его нет, а на FreeDuino -- есть?
> Повторная заливка скеча - опять работает. Пока не поместишь на макетную плату.
> С чем связаны такие приключения? как решать?
Можно глянуть на фотку макетки и на фьюзы меги (они выводятся при прошивке).
И ещё: почему бы не оставить мегу на макетке и там же её и шить, не вынимая?
>Судя по куску вывода запускается именно Arduino'воская версия. Не напутал с путями?
ОтветитьУдалитьНет это я после комментария пробовал
Как выяснилось проблема вовсе не в моей макетной плате.
Проблема вот в чем. Скетчь теряется даже в самой Freeduino если не правильно вставить USB. А именно: вставлять в два этапа сначала немного без усилия, потом до конца. В результате скетч потерян. На сколько я помню такого небыло 328 чипом. Может я над ним не так издевался..
Возможно, дело в маленькой задержке у модифицированного бутлоадера -- он успевает "схавать" какой-то мусор во время инициализации USB-TTL и запрограммировать его в себя.
ОтветитьУдалитьНа Freeduino какой USB-TTL чип?
Во фридуино FT232RL
ОтветитьУдалитьВ том то и дело если вставить до конца сразу резким движением, то такого сброса не происходит.
Тоже самое наблюдалось когда подключал питание не от платы а от зарядного с мобилки. Но когда обвесил конденсаторами - на макетке баг пропал.
Если баг пропадает в том случае, если к TX\RX ничего не подключено -- скорее всего бутлоадер. Эта версия по описанию не так устойчива к мусору во время загрузки.
ОтветитьУдалитьТут у меня еще один неудобный момент обнаружился. А можно ли как-то сделать так, чтобы скетч в atmega8 заливать без постоянного перемещения в саму arduino. Может можно вывести какие пины и соеденить непосредственно с платой. Может ещ какие варианты. т.е. что-то вроде внутрисхемног опрограмматора
ОтветитьУдалить> А можно ли как-то сделать так, чтобы скетч в atmega8 заливать без постоянного перемещения в саму arduino.
ОтветитьУдалить1. Нужно выдернуть чип из Arduino
2. Соединить GND, RESET, TX, RX от Arduino с соотв. пинами на ATmega8.
3. Заливаться будет так, как будто Atmega8 вставлена в ардуину.
P.S. Питание ATmega8 желательно, чтобы совпадало с ардуино, т.е. 5В и там и там.
> 1. Нужно выдернуть чип из Arduino
ОтветитьУдалитьУточнени:
Имеется в виду вытащить штатный для твоей Arduino контроллер (ATmega328 скорее всего) и отложить в сторону, чтобы в раъёме DIP-28 ничего не было. После этого Arduino-плата превращается в переходник USB-TTL с автоматическим передёргиванием линии RESET при заливке скетча.
по уарту сам не работает.. не заливает..
ОтветитьУдалитьподскажите про кварц. у меня на 8мгц. не хочет работать... а на програматоре на 12 мгц от него работает нормально... вывод. поставить на 12
А что именно не работает и как собрано\подключено? Если цель сделать как в статье -- то кварц не нужен (вообще на 8 заработает, но если фьюзы поменять, а для 12 нужно как минимум бутлоадер пересобирать).
ОтветитьУдалитьКоллеги, в чем может быть проблема?
ОтветитьУдалитьИмею:
- Arduino MEGA2560 (оригинальный)
- IDE Arduino 0022
- ATmega 8A-PU
Выполняю:
- Подключил все по указанной здесь схеме.
- Прошил Arduino скетчем ArduinoISP (очевидно прошилось успешно, т.к. стал плавно помигивать диод Heartbeat на 9-й ноге).
- Далее выбираю Tools->Board->ATmega8A и Tools->Burn Bootloader->w/ Arduino as ISP
Через несклько секунд 2 раза мигает Error диод и появляется сообщение об ошибке: avrdude: stk500_getsync(): not in sync: resp=0x00
- Проверяю avrdude -v -patmega8 -cstk500v1 -PCOM3 -b19200
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is "D:\arduino-0022\hardware\tools\avr\bin\avrdude.conf"
Using Port : COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done. Thank you.
- Проверяю с самой последной версий avrdude -v -patmega8 -cstk500v1 -PCOM3 -b19200
avrdudenew: Version 5.10, compiled on Jan 19 2010 at 10:45:23
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "D:\arduino-0022\hardware\tools\avr\bin\avrdude.conf"
Using Port : COM3
Using Programmer : stk500v1
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 0 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
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 STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdudenew: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
avrdudenew: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdudenew: stk500_disable(): protocol error, expect=0x14, resp=0x51
avrdudenew done. Thank you.
Alex.
ОтветитьУдалитьЭта ошибка означает, что программатору не удалось перевести прошиваемый мк в режим программирования. Тут может быть что угодно - неправильное соединение прошиваемого мк к программатору, неисправность мк или неисправность выводов программатора.
У меня часто бывает, что устройства не могут подключиться друг к другу, если питание на прошиваемый контроллер идет от другого источника. Тогда я перед прошивкой отключают программатор и питание, потом подключаю программатор и питание и запускаю прошивку. Т.е. нужно чтоб и программатор и питание были "свежевключенными". Почему так происходит - я так и не понял.
Но первые разы, когда я пробовал прошивать этим программатором, то ошибался в неправильном или некачественном соединении программатора и программируемого мк. Прозвони соединения между ними, попутно сверяясь с даташитами на устройства.
build_your_web,
ОтветитьУдалитьРазводка по схеме - ОК
Скетч/проц пины - ОК
Работоспособность выводов на Arduino - ОК
Пробовал с тестить ATmega88, та же ситуация.
Ума не приложу в чем дело, как-то можно проверить микруху?
Попробуйте использовать avrdude напрямую.
ОтветитьУдалитьAvrdude есть в одной из подпапок Program Files/arduino.
Если не заработает, скачайте свежую версию с официального сайта, установите в отдельную папку, попробуйте подключится используя новую версию.
Судя по ответу на команду:
ОтветитьУдалитьavrdude -v -patmega8 -cstk500v1 -PCOM3 -b19200
Программатор из Ардуины отзывается, целевой контроллер -- нет. Наиболее частая причина -- неправильное подключение. Можно фотографию подключения? Кстати, земли программатора и целевого контроллера соединены? От чего питается целевой контроллер?
Автору респект!
ОтветитьУдалитьСделал все как описано в статье, FUSE не менял, оставил как в прошивке.
Все работает.
Artem Volk.
ОтветитьУдалитьArduino отзывается, но по прежнему прошивать отказывается, ошибка - avrdude: stk500_getsync(): not in sync: resp=0x00
Arduino питается от USB компа с которого прошиваю.
Фотки тут: http://c64-alex.blogspot.com/2011/10/arduino.html
P.S. Для чистоты эксперимента купил новый чип ATmega8A, а результат остался старый. Очевидно делаю что-то не так...(
Смотри, для программирования используется SPI интерфейс, номера его пинов в скетче ArduinoISP показаны для плат на Atmega328. На твоей судя по всему нужно использовать вместо 10,11,12,13 вот эти:
ОтветитьУдалитьSPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). These pins support SPI communication using the SPI library.
Взял тут:
http://arduino.cc/en/Main/ArduinoBoardMega2560
Отпиши плз, получится или нет.
Artem Volk - мой респект!
ОтветитьУдалитьДля решения вопроса с Arduino Mega нужно:
1. Перекинуть пины:
10 -> 50 (MISO)
11 -> 51 (MOSI)
12 -> 52 (SCK)
13 -> 53 (SS)
2. Скачать последнюю версию ArvDude
3. Прошивать avrdude -v -c stk500v1 -P com3 -p atmega8 -b 19200 -U flash:w:ATmegaBOOT.hex
Спасибо, добавил примечание в статью выше.
ОтветитьУдалитьПри попытке запустить загрузчик на Atmege8 выдает ошибку
ОтветитьУдалитьarduino-0023\hardware/tools/avr/etc/avrdude.conf:383 unrecognized character: "u"
> При попытке запустить загрузчик на Atmege8 выдает ошибку
ОтветитьУдалитьВ ответ на какую команду такое отвечает?
Arduino Uno не поддерживается скетчем ArduinoISP, нажаль у меня Arduino Uno. Не заметил этот момент в статье сразу.
ОтветитьУдалитьУстановите ArduinoIDE 0023
ОтветитьУдалитьArduino Uno поддерживается скетчем ArduinoISP
не вводите читателей в заблуждение.
Экспериментировал с 8A-PU и 8L-8PU, "reset" вручную. Использовал Arduino Uno
isaak, спасибо за информацию! Автор никого специально не вводит в заблуждение, просто статье уже скоро как год, а arduino 0023 вышла всего-то неделю назад ;)
ОтветитьУдалитьАвтор даже отмазался на этот счёт "на момент написания заметки новая Arduino Uno не поддерживается скетчем ArduinoISP".
ОтветитьУдалитьЕсли серьезно, то добавил в статью примечание + упомянул о том, что новый optiboot можно тоже попробовать.
Приношу свои извинения автору, но я имел ввиду комментарий Rodot
ОтветитьУдалитьАвтор не обижается и даже рад, что кто-то проверил на Arduino Uno! :)
ОтветитьУдалитьДля того чтобы создать hex файл Arduino IDE во время Upload скетча, зажмите Shift, файл в Windows 7 находится путь c:\Users\rodot\AppData\Local\Temp\....
ОтветитьУдалитьВзято с http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1287332515
простите я совсем новичок, расскажите как можно подробнее как сделать чтобы скетчи можно было заливать с первой попытки не подгадывая каких-то особых моментов? я так понимаю подключить к компьютеру не 3-мя проводами а 4-мя включая DTS? Я пытаюсь сделать автономное устройство, так чтобы его можно было использовать отдельно от "настоящей" arduino.
ОтветитьУдалитьЕсли есть "настощая" Arduino плата и отдельно контроллер с бутлоадером (дальше буду называть "цель"), то достаточно сделать следующее:
ОтветитьУдалить1. Вытащить (физически, пальцами) контроллер из настоящей Arduino.
2. Подключить от Arduino к цели следующее:
Arduino <-> Цель
GND <-> GND
RX <-> TX
TX <-> RX
RESET <-> RESET
Подключение RESET'а цели к выводу RESET на Arduino задействует механизм сброса.
Позразумеваю, что:
- У цели есть своё питание 5В (если цель питается от 3.3В (например, пары АА батареек), нужно согласование уровней).
- В цель уже прошит бутлоадер с помощью программатора или описанного в этой статье способа
ардуино то у меня есть но МЕГА, и контроллер в нее впаян ) я использую преобразователь уровней ST232BN, но с резетом как-то не все понятно из 10 попыток удалось залить скетч только один раз.
ОтветитьУдалитьМожешь кинуть ссылку -- какая именно Мега у тебя, чтобы я чего-попало не насоветовал.
ОтветитьУдалитья, конечно, не совсем мега-нуб, но кто мне объяснит: почему такое простое дело - прошить бут-лоадер в атмега8 - это такая огромная проблема для начинающего???
ОтветитьУдалитьпочему сам прощивальщик бутов а пакете Ардуино не может это всё за нубов сделать грамотно, с нужными фьюзами
сам не ожидал, что меня остановят в самом начале фьюзы...
хе-хе вроде как разобрался сам)
ОтветитьУдалитьнужно сигнал DTR из COM порта компьютера завести на ножку RESET, НО только не напрямую конечно же, а вначале через преобразователь уровней ST232BN (например нога 8 -> нога 9) а потом через конденсатор 0,1 мкф. И все заработало как часики!!!!!
фьюзы определяют конфигурацию кварца, необходимую для старта.
ОтветитьУдалитьардуина не может знать какой кварц используется в вашей схеме.
установил в программатор USBasp читую Atmega8a;
ОтветитьУдалитьзапустил оболочку Ардуино;
указал, что буду работать с Atmega8 в разделе Board;
указал, что программировать буду через USBasp;
нажал "прошить бутлоадер";
прошило!
закрыл оболочку Ардуино;
открыл программу USBASP_AVRDUDE_PROG;
решил её там прочесть, прощупать;
откликалось и читалось "на ура";
потом решил поумничать и выставить с её помощью фьюзы;
всё! после этого Atmega8 перестала откликаться;...
Все и есть просто для тех конфигураций, которые идут в стандартной поставке (например, ATmega8 + внешний кварц на 16МГц). Если нужно что-то нестандартное (например, как в этой статье), то нужно добавлять записи в boards.txt и все сразу опять становится просто -- все можно делать из среды arduino.
ОтветитьУдалить> потом решил поумничать и выставить с её помощью фьюзы;
ОтветитьУдалить> всё! после этого Atmega8 перестала откликаться;...
А причём тут среда Arduino, если фьюзы были выставлены вручную в неправильные значения? :)
т.е. не нужно было умничать, а только прошить бутлоадер из среды Ардуино?
ОтветитьУдалитьне трогая фьюзы вообще?
ArduinoIDE в процессе прошивки бутлоадера шьет и фьюзы тоже.
ОтветитьУдалить> А причём тут среда Arduino, если фьюзы были выставлены вручную в неправильные значения? :)
ОтветитьУдалитьесли всё сама грамотно ставит среда Ардуино при прошивке бутлоадер, откуда тогда в Сети так много шума и болтовни по поводу грамотной установки фьюзов???
Лучшее - враг хорошего.
УдалитьОтдельно шить фьюзы не нужно, если бутлоадер шьется из среды Arduino. При прошивке из среды снача снимаются лок-биты, затем шьются фьюзы, потом прошивка с бутлоадером, потом опять прошиваются лок-биты, насколько помню.
ОтветитьУдалитьа будут тут добрые подсказки: как теперь Атмегу оживить обратно?..
ОтветитьУдалитьА кто-нибудь знает как теперь залить скетч из новой IDE версии 1?
ОтветитьУдалитьу меня сначала была ошибка In file included from Blink.cpp:8:
D:\arduino-1.0\hardware\arduino\cores\arduino/Arduino.h:212:26: error: pins_arduino.h: No such file or directory
потом я подсунул ей этот файл - pins_arduino.h
НО теперь стала подновляться другая ошибка и я уже не знаю что с ней делать:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
> а будут тут добрые подсказки: как теперь Атмегу оживить обратно?..
ОтветитьУдалитьПроблемы с неправильными фьюзами могут быть двух видов :
1) Заперещено программирование по SPI, тогда нужен высоковольтный (HV) программатор, чтобы заново прошить фьюзы с такими значениями, при которых прошивка по SPI включена.
2) Установлен "неправильный" источник тактовой частоты -- например, внешний генератор.
Детальнее вот: http://www.getchip.net/posts/059-ispravlyaem-avr-fyuzy-pri-pomoshhi-atmega-fusebit-doctor/
По поводу проблемы со сборкой проекта на 1.0. Верни pins_arduino.h где был и попробуй вот такой boards.txt вместо того, что в архиве (основной трогать не нужно!)
##############################################################
atmega8noxtalfast.name=ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
atmega8noxtalfast.upload.protocol=stk500
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino
atmega8noxtalfast.build.variant=standard
После этого скетчи должны собираться.
Илья, я подготовлю обновлённый для 1.0 архив, обновишь?
>1) Заперещено программирование по SPI, тогда нужен высоковольтный (HV) программатор, чтобы заново прошить фьюзы с такими значениями, при которых прошивка по SPI включена.
Удалить> 2) Установлен "неправильный" источник тактовой частоты -- например, внешний генератор.
спасибо за подсказки; надеюсь на 2-й пункт :)
хороший у вас форум
Да, разумеется обновлю! ;)
УдалитьА по поводу запрещения программирования SPI: фьюз SPIEN можно переключать только в высоковольтном режиме, т.е. дело не в нем. Чаще всего люди попадаются на RSTDISBL - разрешение использования пина, назначенного RESET в качестве обычного DIO. Увы, программирование в режиме ISP начинается именно со сброса :(. Чтобы его восстановить, нужен программатор с поддержкой режима параллельного программирования (в случае с ATmega8).
Ну и по факту - лезть без особого понимания во фьюзы не очень разумно, но если уж пришлось - сначала их надо прочесть, выписать на бумажку, сравнить с новыми значениями и ТРИ раза подумать о правильности изменений (я сам всегда так делаю ;)
К сожалению стало еще хуже - теперь даже не компилируется и в старой и в новой 1.0 версии IDE, на каждое ключевое слово ругается, а вывод примерно такой:
ОтветитьУдалитьwaterMachine003_Alpha_Small.cpp:21:22: error: Arduino.h: No such file or directory
waterMachine003_Alpha_Small.cpp: In function 'void setup()':
waterMachine003_Alpha_Small.pde:-1: error: 'OUTPUT' was not declared in this scope
waterMachine003_Alpha_Small.pde:-1: error: 'pinMode' was not declared in this scope
- Какая выбрана плата в настройках?
Удалить- Куда положен boards.txt из архива?
Плата выбрана: ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
УдалитьФайл лежит в C:\Users\Например Андрей\Documents\Arduino\hardware\arduino-addons\ но только не из архива с содержанием как в Вашем посте выше.
Если выбрать любую другую плату, скетч собирается?
Удалитьда
УдалитьЕсли убрать всё из "C:\Users\Например Андрей\Documents\Arduino\" и добавить вот это прямо в boards.txt в инсталляции Arduino IDE:
ОтветитьУдалить##############################################################
atmega8noxtalfast.name=ATmega8A for test
atmega8noxtalfast.upload.protocol=stk500
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino
atmega8noxtalfast.build.variant=standard
собирается?
Компилируется, но все равно не заливается:
Удалить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]
avrdude done. Thank you.
Ок, значит это уже другая (следующая) проблема. Судя по сообшению -- либо неправильно подключена целевая плата, либо бутлоадера в ней нет. Начнём с подключения. Что и как подключено?
УдалитьЭтаже плата прекрасно работает с версией 0.22, в неё даже залит скетч и прекрасно работает! А скетч общается через COM1 с встроенным сериал монитором. У меня одновременно на комьютере лежат две папки с IDE версии 0.22 и 1.0 и в из старой заливается скетч а из новой - нет (
УдалитьА попробуй вот такие настройки в boards.txt (старые нужно удалить), есть одно подозрение...
Удалить##############################################################
atmega8noxtalfast.name=ATmega8A for test
atmega8noxtalfast.upload.protocol=arduino
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino
atmega8noxtalfast.build.variant=standard
Этот последний вариант хорошо заработал и компилируется и заливается, но ТОЛЬКО если эта конфигурация записана в ОСНОВНОМ файле ардуины.
УдалитьКак вариант:
Удалить- "C:\Users\Например Андрей\Documents\Arduino\" -- имя пользователя тут на русском? Если указать File -> Preferences Arduino IDE -> Sketchbook на какую-то другую папку, поближе к корню диска и без русских символов в названии.
- Какая структура папок внутри папки Sketchbook?
тут ещё вопрос назрел по ходу моих изысканий;
ОтветитьУдалитьдело в том, что решил быстро сам спать Ардуино-совместимую плату;
если прошить и установить Atmega8L, то можно без кварца? т.е. на 8 Мгц?
будет работать сама и с Ардуино?
Судя по этому: http://www.atmel.com/Images/doc2486.pdf
Удалитьбез кварца на 8МГц работают и оригинальные 8 и 8L, смысл ATmega8L в том, что она может работать при более низком напряжении питания, а обычная ATmega8 -- нет. Более новая ATmega8A является заменой обоих в "модельном ряду". У нас (Украина) продаются только ATmega8A, остальных уже давно нет.
тоже из Украины;
ОтветитьУдалитькупил тут Atmega8a, но запорол, похоже; писал про это выше;
Atmega8L-8UI вытянул из платы сигнализации; стояла там без кварца;
потестил её на живучесть в программаторе; прошил в неё штатный бутлоадер;
мой вопрос был больше про 8 Мгц и работу без кварца в моей самодельной Ардуино;
в оригинальной же стоит 16 Мгц;
в моём варианте 8 и без кварца тоже всё будет фурычить?
Штатные бутлоадеры, насколько помню все на 16Мгц, т.е. их прошить можно и они прошьются, но работать не будут. Собственно по этой же причине и писал этот пост -- ATmega8A на 8МГц.
УдалитьЕщё неплохой вариант -- поставить таки кварц на 16МГц, тогда можно будет прошить новый optiboot, который всего 512 байт занимает и поддерживает высокий битрейт при заливке. Все необходимое уже есть в комплекте Arduino IDE, нужно только boards.txt подправить, вот тут я писал: http://snippets.crisp-studio.com/view/160/nastrojki-arduino-ide-dlya-atmega8a-s-optiboot
привет!
ОтветитьУдалитьотличная подсказка таки на 16Мгц его!
собрал Ардуино своими руками на Атмега8;
подключил его через КОМ-порт (обычная схема на 2-х транзисторах)
а теперь не могу понять как Ардуино настроить;
установка КОМ-порта есть; а какой программатор выбрать чтобы Ардуино заливала откомпилированные скетчи?...
Если у тебя схема согласования уровней RS232 -> TTL, то скорее всего тебе нужно будет ещё подтянуть ресет к DTR (не уверен, нужно по схеме проверить). Либо выбрать бутлоадер с большей задержкой при старте и ресетить вручную.
Удалитьну вот такую я собрал на макетной плате
ОтветитьУдалитьавтосброс не подпаял
это важно?
при попытке UPLOAD, в самом конце выдаёт "avrdude: stk500_getsync(): not in sync: resp=0x00"
Если ресет ни к чему не подключен, то нужно ресетить вручную в нужный момент.
УдалитьДобрый день всем! Подскажите новичку, пожалуйста:
ОтветитьУдалитьВзял ATmega8-16PU
прошил бутлоадер с помощью платы Arduino UNO и arduino 0023 по статье
вынул из UNO мк и поставил ATmega8: 13 пин миагет (означает, что там бутлоадер есть, если я все правильно понимаю)
вернул прежний avrdude в папку arduino, выбрал в IDE Arduino NG or older w/ ATmega8 и попроовал прошить выдало
Binary sketch size: 826 bytes (of a 7168 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Что я сделал не так и как сделать работающую версию?
Выбрать нужно эту плату "ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate)", а не "Arduino NG or older w/ ATmega8"
УдалитьМинимальная Arduino-конструкция за $3.5
ОтветитьУдалитьATmega8 замена на ATmega328, как сделать ?
Этот комментарий был удален автором.
УдалитьВ случае варианта с optiboot'ом и внешним кварцем на 16МГц, то нужно просто зашить бутлоадер от Arduino Uno, он как раз для ATmega328 и 16МГц кварца
УдалитьУ меня скетчи так не захоели компилироваться в IDE 1.0 (получал ошибку о том что файл Arduino.h не найден). Решил проблему добавление содержимого boards.txt из архива в "родной" boards.txt в папке с IDE.
ОтветитьУдалитьАга, проблему смог повторить (на чистой инсталляции), попытаюсь найти причину и выложить обновление
УдалитьЭтот комментарий был удален автором.
УдалитьПривет!
УдалитьПроблему описал вот тут:
http://arduino.cc/forum/index.php/topic,106029.0.html
Решения пока не нашел.
Вобщем подтверждаю такой же косяк.
УдалитьЯ конечно рад, что 16 мгц увеличивает цену всего лишь на полбакса, но как представлю, что надо за этим всем идти/ехать - сразу пропадает желание ковыряться дальше.
Пытался запустить всю музыку через последний ArduinoIDE, если arduino-addons отдельно - не работает. Если перенести в основной boards.txt (что опасно при апгрейдах, на маке например - где все тупо перезапишется) - компилируется и пытается шиться.
То, что не шьется - это уже третья история, то ли java у меня обновилась, то ли система и драйвера pl2303 "вышли из себя" (я использую pl2303+max232) - вобщем ни на старом, ни на новом ArduinoIDE прошиться больше не получается :-(
> Я конечно рад, что 16 мгц увеличивает цену всего лишь на полбакса
УдалитьСтарое решение никто не отменял же...
> Пытался запустить всю музыку через последний ArduinoIDE,
> если arduino-addons отдельно - не работает.
Точно использовал последнюю версию из архива из этого поста? Она несколько раз обновлялась, текущая должна работать без добавления чего-либо в boards.txt
> вобщем ни на старом, ни на новом ArduinoIDE
> прошиться больше не получается :-(
Показывай вывод ошибок, тогда можно будет сказать, кто виноват.
Так, дело было не в бобине.
УдалитьВиноваты были дрова Prolific, которые я почему-то заменил на opensource'ные. Вернул на место - все взлетело.
Значит все прекрасно работает, если писать в boards.txt и настройки вот эти
##############################################################
atmega8noxtalfast.name=ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
atmega8noxtalfast.upload.protocol=arduino
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino
atmega8noxtalfast.build.variant=standard
Сейчас попробую взять из архива поста и сделать arduino-addons, отпишу по результатам
Вобщем докладываю.
УдалитьИспользуемое железо - безкварцевый клон.
ArduinoIDE -последний на сегодня.
Взял архив из поста для 1.0 и выше и подложил
Все компилируется
При прошивке - Invalid signature
Заменил протокол - было stk500, заменил на arduino - все взлетело. Огромное спасибо.
Скажите, там действительно должен быть stk500 ? Или нужно таки исправить на arduino и перезалить архив ? :-)
Спасибо за репорт, да, должен быть arduino, обновлю архивы.
УдалитьВам спасибо.
УдалитьНа самом деле, использование очень дешевых микросхем и минимума деталей - правильный и единственный пусть. Если скетч занимает больше 6 килобайт полезной нагрузки - пора творцу задуматься либо о более навороченной плате, либо о вырастании из "штанов" ардуино и переходе на хардкор авр девелопмент :-) - а для простых поделок - атмега8 и 8мгц - хватит надолго.
На самом деле "хадркор авр девелопмент" не такой уж и хардкор и гораздо интереснее Arduino, хотя да, навыков потребует больше.
УдалитьФайлы я обновил, заодно перенёс на github и добавил настройки для optiboot в общий архив.
Исправил проблему и обновил файлы, теперь должно работать.
ОтветитьУдалитьНи кто не подскажет, почему после всех манипуляций описанных в статье, уже после заливки скетча (например blink из примеров), то после подачи напряжения питания всегда проходит всегда ровно 12 секунд прежде чем светодиод подключенный к 13 цифровому пину (ножка 19) начнет мигать?
ОтветитьУдалитьЗаливал бутлоадер Arduino NG or older w/ ATmega8, кварц и 2 конденсатора по 22 пкф тоже подключены. может что-то упустил? или так и должно быть?
Кто-то подскажет :)
УдалитьНе тот бутлоадер был залит (у того, который залит пауза гораздо больше):
См. выше:
"Нужно запустить Arduino IDE, выбрать в пункте меню Tools -> Board следующую плату: ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate). Здесь указывается целевая плата, поэтому нужно выбрать именно этот пункт, а не модель Arduino-совместимой-платы, которая работает ISP-программатором."
Кстати, если кварц на 16Мгц уже все равно есть, то можно сделать как описано выше в разделе "Минимальная Arduino-конструкция за $3.5 (дополнение от 02.05.2012)" и получить бутлоадер optiboot.
Действительно если выбрать для заливки бутлоадера пункт ATmega8 (optiboot, 16Mhz XTAL), то задержки при включении нет вообще никакой, и мне даже показалось что и скетч работает более стабильно.
УдалитьНа стабильность работы основной программы выбор бутлоадера врядли повлияет, а вот места под скетч на 1,5 Кб больше стало :)
УдалитьНестабильность работы была вызвана тем что я экспериментировал с приемниками ИК сигнала TSOP4836, а они "глючили" от моей настольной лампы дневного света. А бутлаодер я залил и испробовал уже утром (когда лампа была выключена) вот мне и показалось что бутлоадер влияет на стабильность :)))).
ОтветитьУдалитьНо у меня возник еще вопросик: а как можно перевести микроконтроллер на частоту в 4 МГц? И будут ли на такой частоте работать мои скетчи? (Те которые не используют сторонние библиотеки и те которые используют)?.
Теоретически, чтобы перевести МК на частоту 4 МГц, достаточно поправить определение платы в boards.txt - банально изменить 16000000 на 4000000. Но вот как это скажется на сторонних библиотеках - сказать трудно. Если написаны без привязки к тактовой частоте и потактовому выполнению - то будут.
УдалитьБольшое спасибо!
ОтветитьУдалитьВсе получилось. Но сначала бутлоадер не хотел шиться из-за того, что в ArduinoIDE был выбран Программатор -> AVR ISP и я все прошил SinaProg+avrdude с последующей прошивкой фьюзов и локов. Но позже сменил локи и фьюзы в дефолт SinaProg+avrdude следом выбрав в ArduinoIDE Программатор -> Arduino as ISP перезалил бутлоадер, проверил фьюзы/локи .. все ОК!
Вынул камень из UNO, подключил к меге 8 на макетке и дергая reset вручную передал Blink. Также пробовал, как вы советовали, подключить целевой ресет к ардуине с вынутым камнем - шьет, но после прошивки не отдает ресет, все равно приходится отключать ресет.
Arduino IDE 1.0.1
Arduino UNO
ATmega8A-PU
Спасибо большое за репорт, значит у кого-то все-таки получается повторить ):
УдалитьОшибка в boards.txt
ОтветитьУдалитьСейчас:
##############################################################
atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot)
...
atmega8optiboot.build.f_cpu=16000000L
atmega8noxtalfast.build.core=arduino:arduino
atmega8noxtalfast.build.variant=arduino:standard
А нужно:
##############################################################
atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot)
...
atmega8optiboot.build.f_cpu=16000000L
atmega8optiboot.build.core=arduino:arduino
atmega8optiboot.build.variant=arduino:standard
Если поправить, то optiboot становится и работает отлично!
Спасибо, поправил в коммите:
Удалитьhttps://github.com/artvolk/electronics-minimal-arduino/commit/c2451bd2b95c69b9b91787b7a4eca707e6368168
А не подскажите как и из atmega 328 сделать Ардуинку. Ну Там Фьюсы Подпрпвить Или Можно Ее "представить" Для Иде Любой Ардуиной С Такимже МК На Борту. А Если Захочится Без Кварца Запустиь На 8 мгц. Как Тогда?
ОтветитьУдалитьoptiboot для обоих вариантов есть в комплекте свежей Arduino IDE, там же и правильные фьюзы. Итого -- максимум, что нужно -- добавить запись в boards.txt.
УдалитьСтранное дело, добавил запись в boards.txt, в которой только изменил значение low fuses с 0xFF на 0xE2, что вроде как соответствует только изменению с внутренней частоты 16 мгц внешнего кварца, на 8 мгц внутренней RC цепочки. Прошил бутлоадер с такими настройками, и хотя теперь скетч заливается и работает в таком МК, но заливается он только через пункт меню программы "Файл"->"Загрузить с помощью программатора". А вот через выводы Com порта самой микросхемы ну никак не хочет, хотя мониторинг Com порта видит сообщения которые приходят от этого же МК. Бьюсь уже второй день - не пойму в чем причина, пробовал даже не Optiboot заливать а "старый/обычный" загрузчик.
ОтветитьУдалитьКроме смены фьюзов нужно прописать версию бутлоадера под эту частоту. К сожалению под рукой нету установленной IDE, чтобы посмотреть как он называется.
УдалитьТак ну хоть раз сам отвечу на свой вопрос:
УдалитьПрочитав отличную статью на http://arduino.cc/forum/index.php?action=printpage;topic=124879.0
Сделал все как там описано и все получилось. Если коротко, то перекомпилировал бутлоадер с пониженной скоростью загрузки скетча равной 38400(скачать можно тут http://rghost.ru/41547541 (не понял как вложить файл в комментарий)), и добавил в boards.txt:
##############################################################
atmega328_384_8.name=ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc.
atmega328_384_8.upload.protocol=arduino
atmega328_384_8.upload.maximum_size=30720
atmega328_384_8.upload.speed=38400
atmega328_384_8.bootloader.low_fuses=0xE2
atmega328_384_8.bootloader.high_fuses=0xDE
atmega328_384_8.bootloader.extended_fuses=0x05
atmega328_384_8.bootloader.path=optiboot
atmega328_384_8.bootloader.file=optiboot_atmega328_384_8.hex
atmega328_384_8.bootloader.unlock_bits=0x3F
atmega328_384_8.bootloader.lock_bits=0x0F
atmega328_384_8.build.mcu=atmega328p
atmega328_384_8.build.f_cpu=8000000L
atmega328_384_8.build.core=arduino:arduino
atmega328_384_8.build.variant=arduino:standard
Если оформите это в виде, пригодном для закидывания в sketchbook установленной Arduino IDE, то можем включить в набор из этой статьи. Он живёт тут (там же и пример):
Удалитьhttps://github.com/artvolk/electronics-minimal-arduino
Приветствую, Артем!
ОтветитьУдалитьСнова и снова возвращаюсь к наиполезнейшей статье! :)
Обнаружил тут интересный момент. Загрузчик, получается, фьюзы не читает?
Programmer Type : Arduino
Description : Arduino
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: Fuses OK
avrdude done. Thank you.
При этом, все отлично заливается и работает. USBASP, с помощью которого был залит загрузчик, фьюзы видит нормально.
Рад, что статья помогла кому-то :)
УдалитьДа, всё верно загрузчик фьюзы не показывает. И в принципе не должен -- смысл то в нём, чтобы нельзя было ничего сломать, только залить прошивку. Для этого и лок-биты выставляются при прошивке бутлоадера.
USBASP с бутлоадером не общается и про него не знает просто программирует контроллер по протоколу in-system программирования.
Насколько помню, бутлоадер не только фьюзы не показывает, но ещё и не умеет EEPROM писать, лок-биты (понятное дело).
Всецело, не важно, что бутлоадер не умеет шить EEPROM и показывать FUSEы, важно что цель за 3$ достигнута.
ОтветитьУдалитьЯ беру атмеги8 десятками, потому они мне обходятся примерно по 40 руб. Мост cp2102 на китайских барахолках можно приобрести за те же 40 руб. Минимальный обвес уложить в 10 руб. Кусок текстолита можно найти и за так, разъем усб найти нахаляву тоже не проблема. Вот наши искомые 90 руб и получатся ;)
Причем, это уже будет почти настоящая автономная "ардуина".
зы: да, понятно, что не каждому под силу припаять корпуса TQFP32 и QFN28, но тут дело принципа! )))
... и повод прокачать уровень своих навыков :)
Если не секрет, а куда идут самодельные платки в таких количествах? :)
Удалить> да, понятно, что не каждому под силу припаять корпуса
> TQFP32 и QFN28, но тут дело принципа! )))
QFN паять паяльником не доводилось, но с первыми TQFP проблем вообще не возникло, даже учитывая мою крайнюю неаккуратность в мелких работах :) Судя по отзывам у тех кто хоть чуть-чуть имеет практики пайки, пайка относительной мелочёвки не требующей микроскопа -- вопрос хорошего флюса :)
Про коммерческие свои устройства распространяться сильно не буду, прошу извинить :)
ОтветитьУдалитьВ качестве мнения: атмега8 - это сейчас самая доступная универсальная микросхема широкого применения. Вместо сотен наименований разнообразных специальных микросхем, держишь в коробочке кучу атмег, набор некоторых ЛУТ-шаблонов и элементы "обвеса".
> Про коммерческие свои устройства распространяться сильно не буду, прошу извинить :)
УдалитьЯ просто думал, что это для души столько атмег используется :)
> В качестве мнения: атмега8
Ну Atmega88 вроде бы как должна была её заменить, но в наших (и, наверное, ваших) краях они почти не появляются, хотя в больших партиях не дороже, чем Atmega8
В моих домашних поделках тоже в основном использую Atmega8, всё что мельче -- ненамного дешевле, а все, что старше -- мне оказывается ненужным.
Да, STM8 серии S ещё дешевле и работают на 5В, если у вас что-то массовое.
Для души девайсов делается тоже приличное количество. В основном коллеги по работе, подсевшие на карписи, периодически "беспокоят" разного рода задачками :)
ОтветитьУдалитьЧто касаемо stm8, то наткнулся тут на статью и понял, что, выбрав AVR, не прогадал.
http://speleoastronomy.org/elektro/stm/index.html
88 и 168 стОят примерно одинаково. Изредка требуется функционал 88/168/328, тогда их применяю. 99% работ сделано на атмега8.
По поводу статьи -- да, всё так и есть AVR -- большая история использования, куча всего уже сделанного. STM8 -- если интересно посмотреть какие ещё контроллеры бывают и на сравнении вынести для себя что-то новое (всё про домашнее использование).
Удалить"Дискавери" заказал. Для расширения кругозора, так сказать :)
ОтветитьУдалитьА у меня такой вопрос. Вот бутлоадер прошился, а дальше не хотел шиться писал ошибку stk500_getsync(): not in sync: resp=0x00 заменил в boards на это
ОтветитьУдалитьatmega88.name=ATmega8
atmega88.bootloader.low_fuses=0xE4
atmega88.bootloader.high_fuses=0xCF
atmega88.bootloader.unlock_bits=0x3F
atmega88.bootloader.lock_bits=0x0F
atmega88.upload.maximum_size=7168
atmega88.build.mcu=atmega8
atmega88.build.f_cpu=8000000L
atmega88.build.core=arduino:arduino
atmega88.build.variant=standard
и всё стало нормально прошиваться (блинк заработал). Но вот в чём дело не как не могу подобрать скорость для сиреал порта, а то выводит какуето хрень я всё скорости перепробовал в serial.begin которые у них поддерживаются не помогле. В CVAVR посмотрел что у у 8ой атмеги при 8мгц погрешность 0 только при 600 но получается ide ардуинки не поддерживает ?
Тайминги для UART'а могут уходить гораздо сильнее, чем получается по калькулятору, т.к. нет кварца. Возможно, стоит попробовать другую микросхему, чтобы исключить кривость (неоткалиброванность) RC-цепочки конкретного экземпляра.
УдалитьКстати, в конфиге отличий не нашел, что на что менялось?
Спасибо огромное автору за статью. Было 11 чипов Атмега8А-20PU Прошил загрузчик во все чипы по инструкции. IDE 1.03 Все мигают загрузчиком. Вроде все работает. Решил для надежности прошить Блинк во все чипы. 5 прошились, 6 с разного рода ошибками (в основном CANT COMMUNICATE WITH DEVICE) не стали шиться. Загрузчик прошивался очень быстро секунд за 10. Решил перешить загрузчик в глючные 6 чипов с большим временем ожидания (как написал автор 1-2 минуты). Хотя диод и показывает через 10 секунд, что все прошито. Опять шью БЛИНК, еще в один записался, оставшиеся 5 как не принимали скетчи, так и стоят на своем. Понять в чем проблема я так и не смог. Подключаю USBasp, Считываю фьюзы с рабочего чипа, шью в глючный (на случай если мусор забрался) опять пытаюсь шить Блинк и те же ошибки. Выбираю в IDE Arduino программатор USBasp и скетчи шьются.
ОтветитьУдалитьЧерез ArduinoISP bootloader 11 чипов = OK
Через ArduinoISP BLInk 6 из 11 чипов = OK
USBasp BLInk 11 из 11 чипов = OK
Есть какие-нибудь мысли? Через AVRdude все чипы откликаются.
И второй вопрос: после прошивки бутлоадера на 8мгц, пока часть чипов глючила, я решил их перешить на 16мгц и попробовать с кварцем записать скетч (просто уже не знал куда рыть, это я потом USBasp подключил и увидел, что через USBasp все чипы работают). То есть для чипа с уже зашитым загрузчиком на 8, поверх сделал ЗАГРУЗИТЬ bootloader 16мгц. Шил через ArduinoISP по инструкции и чип оказался заблокированным. Не сразу понял причину, т.к. была надпись о неверной сигнатуре, поэтому залочил еще один чип такими же действиями. Теперь их даже USBasp не читает, вернее успевает считать что все фьюзы включены и вылетает с ошибкой НЕВОЗМОЖНО ПОДКЛЮЧИТЬСЯ (уж не знаю, считывает ли он их реально или просто все галочками отмечены, т.к. не удалось подключиться) Что случилось с Атмега8 при запись, одного загрузчика поверх другого, без предварительного стирания чипа на заводские установки?
ОтветитьУдалить1. Почему часть чипов работает, а часть нет: точность встроенной RC-цепочки невелика, при повышении битрейта UART'а могут плыть тайминги и бутлоадер не будет работать. На моих экземплярах такого не было, но в теории может быть.
Удалить2. По второму вопросу не видя что конкретно шилось сказать что-то трудно. Как вариант -- если в контроллер зашились фьюзы для использования внешнего кварца -- нужно подключить кварц и попробовать обратится программатором. 16Мгц на ATmega8 -- это только с внешним кварцем, встроенная RC-цепочка максимум 8Мгц. Если есть Arduino Duemilanove и программатор -- можно поставить Atmega8 туда, кварц на этой Arduino плате есть, если нет -- собрать на макетке: кварц и пара конденсаторов понадобится.
Спасибо за ответ и советы. То есть мигающий диод (бутлоадера) еще не значит, что он работает? Блинк шил после загрузки бутлоадера (8мгц), вытащив атмега328 из ардуино УНО и вставив в сокет атмега8. Как уже говорил, часть прошились, часть нет. Кварц там тоже установлен, но как я понимаю при бутлоадере 8мгц кварц установленный в УНО не используется (что подтверждают часть атмега8, в которые зашился блинк). ... Дальше проблемы: все по вашей инструкции. Шью бутлоадер 8мгц, а потом выбираю 16мгц и жму прошить бутлоадер (на тот же самый чип, на который минуту назад шил 8мгц) вот так чипы и заблокировались. Вставив их в ардуино уно (где есть кварц) чипы прошитые на 16 тоже никак не распознаются и не шьются. В общем заказал высоковольтный автономный программатор-доктор буду учиться дальше и уже не бояться проводить эксперементы. http://www.ebay.com/itm/150949213306?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 Спасибо Вам огромное за значительный толчок в нужном направлении. Вы меня неплохо сдвинули с места.
ОтветитьУдалитьp.s. не сочтите ссылку за рекламу, это больше ответ на вопрос КАК ВОССТАНОВИТЬ ФЬЮЗЫ и я думаю это устройство будет находкой для многих неуверенных новичков
> но как я понимаю при бутлоадере 8мгц кварц установленный в УНО не используется (что подтверждают часть атмега8, в которые зашился блинк)
ОтветитьУдалитьДа, верно, не используется.
> Шью бутлоадер 8мгц, а потом выбираю 16мгц и жму прошить бутлоадер (на тот же самый чип, на который минуту назад шил 8мгц) вот так чипы и заблокировались.
Я правильно понимаю, что в этот момент к Uno прицеплен внешний программатор?
Есть ли у вас статья, как дальше прошивать Atmega8(A) при помощи "Arduino со снятым контроллером"?
ОтветитьУдалитьЕсли на Arduino в качестве USB-чипа используется FT232 - вот статья про это.
УдалитьИлья немного не так понял ваш вопрос и ответил о том, как прошить "чистый" контроллер поставив его в DIP-колодку платы Arduino. Этот способ альтернативный описываемому в статье, это другой способ сделать из Arduino AVR ISP программатор.
УдалитьВы, судя по всему, спрашиваете "Как прошить контроллер на макетке, в который уже залит бутлоадер с помощью Arduino". В этом случае все проще. От Arduino-платы нам нужен только USB-UART преобразователь. Действуем так:
RX-pin Arduino --> TX pin контроллера на макетке
TX pin Arduino --> RX pin контроллера на макетке
GND Arduino --> GND контроллера на макетке
Контроллер из Arduino платы нужно вытащить или соединить его RESET с GND, чтобы он не выходил из ресета.
Картинки: http://www.zoobab.com/use-the-arduino-as-a-serial-adaptor
А какие установки использовать в Arduino IDE?
УдалитьСовпадающие с тем бутлоадером, который прошит в контроллер на макетке.
УдалитьДругими словами: какой бутлоадер прошили в микросхему на макетке -- такие настройки и используете для прошивания скетчей.
Я использовал бутлоадер из этой статьи. Просто не совсем понятно, что выбирать в arduino IDE в пунктах "board" и "programmer". И ещё... кого от чего запитывать? Есть источники 5В, 750мА и 12В, 3А.
УдалитьВы поймите меня правильно... Меня всегда можно отправить "учить матчасть", но если я добьюсь помигивания светодиода, то мне от этого только больше захочется этим заниматься. А сейчас я в ступоре. С вами можно как-то связаться? (Почта, скайп..?)
УдалитьОк, тогда давайте попробуем так.
УдалитьБерем в руки плату Arduino (дальше буду называть просто "Arduino"), макетку и целевой контроллер (дальше "контроллер на макетке"), все блоки питания пока откладываем в сторону. Представим, что у нас Atmega8A без кварца (все как на рисунке в статье).
1. Кладем файлы из статьи куда нужно.
2. Выбираем в пункте Board модель нашей Arduino (именно нашей Arduino-платы!), прошиваем скетч ArduinoISP
3. Подключаем контроллер на макетке как показано в статье, питается он от Arduino, которая питается от того, к чему вы её подключили (USB или БП).
4. Теперь закрываем глаза и представляем, что Arduino у нас уже не Arduino, а ISP-программатор для контроллера на макетке.
5. В меню Board выбираем ту плату, в которую мы хотим превратить контроллер на макетке (ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)).
6. Выбираем пункт Burn Bootloader -> w/ Arduino as ISP (понимать как "прошить бутлоадер куда-то используя Arduino как программатор", собственно наш случай)
7. Если все прошло без ошибок, можно идти дальше. Если есть ошибки, ищем где неправильно подключили.
8. Теперь снова закрываем глаза и представляем, что контроллер на макетке это уже контроллер от нашей Arduino, а не просто контроллер на макетке. Для того, чтобы по USB в него залить скетч нужно задействовать только USB-TTL переходник с Arduino (такая мелкая микросхема с кучей ног возле USB-разъема).
9. Отключаем все провода от макетки и подключаем заново.
RX-pin Arduino --> TX pin контроллера на макетке
TX pin Arduino --> RX pin контроллера на макетке
GND Arduino --> GND контроллера на макетке
Vcc 5V Arduino --> VCC контроллер на макетке
Дополнительно на Arduino проводом соединяем GND и RESET.
Контроллер на макетке продожает питаться от того, к чему подключена Arduino.
10. Что теперь получилось:
10.1 В меню Board у нас по прежнему ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate), т.е. тот контроллер, который на макетке
10.2 На плате Arduino мы временно отключили контроллер, положив его в вечный RESET и из всей платы используем только USB-TTL переходник
11. Заливаем в контроллер на макетке скетч Blink, подключаем светодиод на макетке "1 светодиод и токоограничительный резистор на 220-500 Ом (подключается к пину №19 (PB5), это тот же выход Digital pin 13, к которому на большинстве Arduino-совместимых плат подключен светодиод L);", должно мигать.
По поводу БП:
- От 5В можно питать контроллер на макетке, в этом случае соединять VCC Arduino и VCC контроллера на макетке ненужно (нельзя)
- От 12В можно питать Arduino через разъем для БП или через LM7805 контроллер на макетке (напрямую нельзя)
Мигает. Спасибо огромное автору статьи, низкий поклон!
УдалитьТаки да, если вовремя замкнуть reset внешнего контроллера (который на макетке) на землю, то он будет отлично прошиваться программками. В качестве альтернативы можно использовать reset-разъём arduino-совместимой платы, но в таком случае её родной контроллер придётся вытащить. Ещё раз огромное спасибо за подробную инструкцию, побольше бы таких статей..)
УдалитьНу и отлично, что все заработало :)
УдалитьУв. автор статьи! Читал я читал...
ОтветитьУдалитьА перед этим курил всякие иные форумы.
Ну все вроде сделал по написанному (хочу прошить atmega8L)... И все файлы залил. Но на п.6. Вашего письма от 9 февраля все затыкается... Avrdude из 1.0.5 r2 поменян на VinAVRовский. той же версии 20100110
Но не работает! Пишет
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
И до замены то же самое писал.
Где баг искать?
Заранее спасибо
В прошлый раз случайно не туда поставил резистор: после загрузки arduinoIDE закорачивал резистором на землю ресет ардуино, вместо прошиваемого контроллера. После закорачивания atmega8L теперь прога пишет следующее:
ОтветитьУдалитьavrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
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=0x51
Что можно сделать дальше?
Если вы закорачиваете на землю ресет целевого контроллера, то он (контроллер) находится в ресете и программатору не отвечает. Если есть возможность -- покажи как что подключили (фото прямо сюда можно).
Удалитьа если надо atmega8a с кварцем на 8 мГц для работы на пониженном напряжении что тогда делать?
ОтветитьУдалитьПоменять FUSE-bits, этого должно быть достаточно. Калькулятор тут: http://www.engbedded.com/fusecalc
Удалить(лишний раз напомню, что нужно быть внимательным с FUSE-битами)
в общем так попытки ничего не дали
ОтветитьУдалить1 берём файл из :ArduinoIDE\arduino-1.0.5-r2\hardware\arduino\bootloaders\atmega8\ATmegaBOOT-prod-firmware-2009-11-07.hex
любым программатором (у меня avr ips mkll-клон)прошиваем мегу8(кварц на 16 мГц)
ставим FUSES внимание - их надо ставить правильно
cksel3 -снят
cksel2 -снят
cksel1 -снят
cksel0 -снят(можно установлен)
- как хотите -можете включать схему слежения напряжения ,можно не включать
B0DEN -установить
BODLEVEL - снят 4,5 V -установлен -2,7V
sut0- установлен
sut1-снят - это комбинация задержек при старте тактового (не важно)
далее
boоdrst -установлен
boоdsz0-установлен
boоdsz1-установлен
остальное не трогать
подключаемся к ком порту через переходник USB-RS232(FT232RL) ВЫВОД DTR на сброс через конденсатор 0,1 мкФ
запускаем ARLUINO IDE(15)
ищем Arduino NG or older w/ ATmega8
в BOARDS.TXTдолжно быть
##############################################################
atmega8.name=Arduino NG or older w/ ATmega8
atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard
выставляем номер порта
грузим набранную программку (например -блинк)
заливаем в мегу - всё работает
2 тоже самое но файл загрузчика я взял от
http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/
поместил в папку bootloadrs
вставил в boards.txt
##############################################################
atmega8noxtal.name=ATmega8-noxtal @8MHz
atmega8noxtal.upload.protocol=stk500(заменил на arduino)
atmega8noxtal.upload.maximum_size=7168
atmega8noxtal.upload.speed=38400
atmega8noxtal.bootloader.low_fuses=0xe4
atmega8noxtal.bootloader.high_fuses=0xc4
atmega8noxtal.bootloader.path=atmega8_noxtal
atmega8noxtal.bootloader.file=ATmegaBOOT.hex
atmega8noxtal.bootloader.unlock_bits=0x3F
atmega8noxtal.bootloader.lock_bits=0x0F
atmega8noxtal.build.mcu=atmega8
atmega8noxtal.build.f_cpu=8000000L
atmega8noxtal.build.core=arduino
добавил
atmega8noxtal.build.variant=standard
прошил мегу через SPI УСТАНОВИЛ fuses как и в прошлой попытке
пишем из ARDUINO IDE - программка работает это ГУД
НО загружаю из ARDUINO IDE следующую программку -всё ARDUINO IDE пишет
averdude:stk500_getsync(): not sync: resp=0x00
только перепрошивкой загрузчика спасается ,каждый раз
в чём может быть дело ?
Навскидку: внешний кварц у вас на 16МГц, первый бутлоадер собран тоже для 16МГц, поэтому он может подключиться по UART. Во втором случае вы заливаете бутлоадер который думает, что контроллер работает на 8МГц (а реально у вас кварц на 16) --> по UART Arduino IDE подключиться не может.
ОтветитьУдалитьПопробуйте:
1. Поставить сразу внешний кварц на 8Мгц
2. Поменять значения здесь на нужные вам:
atmega8noxtal.bootloader.low_fuses=0xe4
atmega8noxtal.bootloader.high_fuses=0xc4
3. Прошить бутлоадер (не вашу программу, а бутлоадер, там есть отдельный пункт) с помощью вашего программатора в плату с помощью Arduino IDE
во втором случае я подставлял кварц на 8 мГц
ОтветитьУдалитьArduino IDE не видит мой программатор (из за драйверов)
hex файл после записи загрузчика , и после записи программки я просматривал
загрузчик на своём месте , в конце памяти и не изменённый
но после заливки программ с Arduino IDE загрузчик перестаёт работать
такого в версии на 16мГц нет
где то что-то не так
1 сам загрузчик ??? ему без разницы кварц или внутренний генератор - только фузы мтемега
2 метод заливки - но что там spi что у меня spi ,,, не правильно воспринимается формат файла загрузчика - не 16 мгц работает
может всё же в фюзах проблема всё совпадает только EESAVE но Ардуино ied туда не лезет-только посылка по порту для загрузчика
вот именно для атмега8 на 8 мГц (даже с внутренним генератором )после первой загрузки скейча - загрузчик перестаёт откликаться совсем
Ещё глупый вопрос: чтобы бутлоадер стартанул нужно, чтобы контроллер сбросился. До загрузки первого скетча программы нет и бутлоадер стартует постоянно, после загрузки скетча запускается уже ваша программа. Можно попробовать сбросить контроллер вручную в нужный момент перед заливкой скетча, а можно проще, если есть в наличии любая из плат Arduino:
ОтветитьУдалить1. Выдернуть из платы "родной" контроллер
2. Подключить UART и Reset с платы к своему контроллеру (у вас ATmega8A)
Попробовать прошить из Arduino IDE.
ответ нашёлся экспериментально
ОтветитьУдалитья всё время работал на AVR согласно стандартной схемы
- цепь сброса как в муму : 10к на питание и кондёр 10мкф на землю(это рекомендованная дешёвая цепь для гарантированного запуска при любых ситуациях ).
Братья по разуму -которые придумали ARDUINO- решили по своему (это ведь студенты )
- на кой ляд нам этот кондёр - причём он должен быть качественным - да и загрузку автоматом от ком порта без лишних телодвижений и бабла не получеш -
это говорит о том что нынешние разработчики часто пропускают такие важные мелочи в работе погоней за прибылью ,и вообще как игрушка среда Ардуино -красивая но на сам деле только для ногодрыганья
итог
если правильно - надо перерабатывать схему сброса
стандартная прошивка на 16 мгц работает
остальные нет
У Вас не хватает строчки в boards.txt
ОтветитьУдалитьatmega8noxtalfast.upload.tool=avrdude
из за этого не грузятся скейтчи
для всех версий ардуино IDE при работе ском портом нужно указывать инструмент работы - в данном случае avrdude так как ардуино завязана на него
ОтветитьУдалить##############################################################
atmega8noxtalfast.name=ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
atmega8noxtalfast.upload.tool=avrdude
atmega8noxtalfast.upload.protocol=arduino
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino
atmega8noxtalfast.build.variant=standard
##############################################################
atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot)
atmega8optiboot.upload.tool=avrdude
atmega8optiboot.upload.protocol=arduino
atmega8optiboot.upload.maximum_size=7680
atmega8optiboot.upload.speed=115200
atmega8optiboot.bootloader.low_fuses=0xBF
atmega8optiboot.bootloader.high_fuses=0xCC
atmega8optiboot.bootloader.path=optiboot
atmega8optiboot.bootloader.file=optiboot_atmega8.hex
atmega8optiboot.bootloader.unlock_bits=0x3F
atmega8optiboot.bootloader.lock_bits=0x0F
atmega8optiboot.build.mcu=atmega8
atmega8optiboot.build.f_cpu=16000000L
atmega8optiboot.build.core=arduino
atmega8optiboot.build.variant=arduino
Я последний раз обновлял файлы для Arduino IDE 1.0, возможно, с того времени добавились новые параметры. Постараюсь проверить в скором времени на новых версиях и обновить, если будет нужно.
ОтветитьУдалитьтеперь по поводу optiboot для мега8 на 8 мгц
ОтветитьУдалитьна сайте http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
есть конструктор загрузчика , и он построен на этой версии (size=7680
при работе от внутреннего генератора всё как бы нормально
но стоит переключить на кварц (8 мгц) загрузка не происходит (в отличии от стандартной большой, там переключение на кварц не влияет на работу загрузчика )
видимо причина в настроенных задержек старта загрузчика
при работе от внутреннего генератора , время старта ядра 18 тактов , а при работе на кварце минимум 258 а если включить схему слежения за напряжением то все 16000.
обойти это ,я так думаю, можно только переделав заново, с другими параметрами , сам загрузчик .
Увы в языках высокого уровня я не мастак , мой любимый и более понятный язык - ассемблер
проблему с optiboot для мега8 на 8 мгц тоже решил
ОтветитьУдалитьКак оказалось загрузчик ( http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik) формируется ,но косяк в настройках
пришлось самому это сделать
в папке optiboot (как и в atmega ) есть файл Мakefile
в него нужно внести изменения (добавить новый процессор)
и запустить из командной строки "omake --------" где ----- имя выводимого файла внесённого заранее в файл Мakefile
я переработал кусок кода для 16 МГц , уменьшил скорость в два раза , ввёл частоту 8000000L и новое имя файла для вывода
На есть проблемка это для версии 1.0.1
В новых версиях добавлены директория(avr)
и нужно редактировать Мakefile (пока не разобрался)
полученный файл успешно работает как на кварце так и на внутреннем генераторе
о, класс, работает!
ОтветитьУдалитьтолько помучаться пришлось, конечно, чтоб впепячить это в ардуино-иде. в новой, кстати, есть boards manager, вот было бы круто, чтоб одной строчкой можно было скачать и установить ваше ядро/бутлоадер https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification