09.01.11

Минимальный клон Arduino за $3 на ATmega8A с модифицированным bootloader'ом

Сразу признаюсь, что заголовок призван привлекать внимание — конечно, за $3 полноценную Arduino-плату не собрать, но минимальное решение вполне можно.

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

Дополнение от 25.11.2011: По последним сообщениям свежие версии bootloader'а Optiboot работают и на ATmega8, этот бутлоадер занимает всего 512байт и обеспечивает ещё большую скорость загрузки прошивки.

В качестве отправной точки использовались статьи Minimal Arduino with ATmega8 (внимание: в этой статье есть ошибка, значения fuse-битов неверны) и страница об ArduinoISP из официальной wiki. К сожалению, ни одна из этих статей в своё время не ответила на все мои вопросы, кроме того появилось желание немного «подкрутить» стандартный bootloader, но об этом ниже.


Внимание! Автор не несёт никакой ответственности за возможные последствия следования инструкциям в этой статье.

Что будет нужно:
  • 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-названий:


Выбор именно ATmega8(A) объясняется очень просто: в местных магазинах радиотоваров не было никаких других контроллеров, поддерживаемых средой Arduino. С одной стороны, это сильно ограничило меня в объёме кода, с другой — именно благодаря тому, что код моего проекта на Arduino не поместился в память контроллера, я был вынужден разобраться с WinAVR и переписать проект под AVR-GCC. Времени на вспоминание C и чтение datasheet'ов ушло довольно много, но код получился раз в пять компактнее и, пожалуй, к программированию в среде Arduino я врядли вернусь :).
Подготовка IDE

Скачайте архив с настройками и bootloader'ом и разархивировать его в папку Sketchbook (путь можно посмотреть в пункте меню File -> Preferences Arduino IDE). После перезапуска Arduino IDE в меню Tools -> Board должен появиться новый пункт ATmega8A (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-совместимой платы в программатор

В 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 следующую плату: ATmega8A (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, если есть ArduinoISP?
  • использование bootloader'a обеспечивает совместимость и с Arduino IDE, и с AVR Studio;
  • меньше проводов для подключения (вместо линий ISP только UART). При этом UART часто используется для отладки, поэтому его все равно приходится подключать.
Скачать

Архив с bootloader'ом и настройками (9 Кб)

112 коммент.:

  1. в приложеном zip-архиве присутствует неоднозначность в вопросе "правильных" фузов. Так, в файле boards.txt указано:
    atmega8noxtalfast.bootloader.low_fuses=0xe4
    atmega8noxtalfast.bootloader.high_fuses=0xc2

    при этом в Makefile указаны
    FUSE_L = 0xdf
    FUSE_H = 0xca

    Вопрос к автору: какие значения fuse-битов правильные? (и в чём их неправильность в исходной статье)

    ОтветитьУдалить
  2. Фьюзы из 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/

    ОтветитьУдалить
  3. -> Bootloader занимает ~900Кб
    наверное 900б... а то 1Мб это круто.

    ОтветитьУдалить
  4. Неправильно указаны параметры avrdude (нужны пробелы).

    ОтветитьУдалить
  5. Прошил таким образом Mega8L.
    Почему-то прошивка загрузчика прошла очень быстро (секунд 5-10). Но не ясно что дальше делать: вставил прошитую микруху в arduino плату, но при попытке что-то залить в IDE пишется:

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

    Как посмотреть эту сигнатуру и какая она должна быть?

    ОтветитьУдалить
  6. Сообразил посмотреть в 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.

    Т.е. выходит у микрухи стерлась сигнатура и теперь я с ней ничего не смогу сделать?

    ОтветитьУдалить
  7. > наверное 900б... а то 1Мб это круто.
    Да, конечно, 900б, а не кб.

    > Неправильно указаны параметры avrdude (нужны пробелы).
    работает и так, кроме того среда Arduino запускает именно без пробелов (можно включить детальный вывод вот так:

    http://snippets.crisp-studio.com/view/109/vklyuchenie-detalnyx-soobshhenij-kompilyatora-i-avrdude-v-arduino-ide

    ОтветитьУдалить
  8. Разобрался почему не работала плата с прошитой микрухой.
    Оказывается avrdude который идет с Arduino IDE не просто старая версия, а патченная версия, которая игнорирует сигнатуру чипа.

    Т.е. не забудьте вернуть родной avrdude после того как будет зашит загрузчик.

    ОтветитьУдалить
  9. > Т.е. не забудьте вернуть родной avrdude после того как будет зашит загрузчик.
    Странно, я использую WinAVR с родным avrdude для прошивки через ардуиновский бутлоадер и через ArduinoISP -- работает нормально, сигнатуру говорит. Да, фьюзы будут показаны нулевыми, если прошивать через бутлоадер. А где можно почитать про то, что именно там пропатчено?

    Кстати, Mega8L на 8Mhz работает от встроенного RC-осциллятора?

    ОтветитьУдалить
  10. Что-то про reset function.

    Да, от внутреннего осциллятора, все по инструкции с этой страницы.

    ОтветитьУдалить
  11. На Windows использую avrdude 5.10 из WinAVR 20100110 -- ресетит вроде бы нормально, если указать "-c arduino" нужно будет как-нибудь покопаться...

    ОтветитьУдалить
  12. Собрал, попробовал - все отлично работает.
    Есть пара проблем.
    Шью через RS232-TTL преобразователь на MAX232.
    1. Если использовать RX, TX, GND, то момент для "старта" загрузки скетча выбрать крайне тяжело - приходится давить ресет и БЫСТРО нажимать кнопку загрузки
    2.Если подать еще сигнал DTR на Reset через емкость - все шьется, но для старта скетча нужно пнуть Reset (вроде как на Freeduino все само стартовало) - может так и должно быть ? Ресет дернуть не трудно, но хотелось бы разъяснений =)

    И еще - раз уж такое устройство "позиционируется" как основа для реальной "железки", не могли бы Вы опубликовать статью, как шить Arduino-скетчи без бутлоадера. Чтобы не было задержки после подачи питания - в случае с минимальным ардуино задержка маленькая, но все равно.
    Заранее спасибо!

    ОтветитьУдалить
  13. Adruino-скетчи без bootloader-а? Тут потребуется программатор... Какой программатор Вы предпочитаете? ;)

    ОтветитьУдалить
  14. > 1. Если использовать RX, TX, GND, то момент для "старта" загрузки скетча выбрать крайне тяжело - приходится давить ресет и БЫСТРО нажимать кнопку загрузки
    В моём случае я подключал RESET целевой ATmega8 к RESET'у на Arduino Duemilanove с вытащенным контроллером, таким образом за RESET в нужный момент отвечал конденсатор на одной из линий FT232 (как на обычной Duemilanove). Всего соединялось 4-мя проводами: RESET, GND, RX, TX.

    > И еще - раз уж такое устройство "позиционируется" как основа для реальной "железки", не могли бы Вы опубликовать статью, как шить Arduino-скетчи без бутлоадера. Чтобы не было задержки после подачи питания - в случае с минимальным ардуино задержка маленькая, но все равно.
    Без программатора тут не получится. В качестве программатора можно использовать ArduinoISP (который в этой статье использовался для прошивки бутлоадера). Скомилированный скетч (hex для прошивки) придётся выковыривать откуда-то из временных файлов (зависит от версии IDE).

    ОтветитьУдалить
  15. Скомпилированный скетч обычно лежит hex-файлом в подкаталоге applet, в папке скетча.

    ОтветитьУдалить
  16. > Скомпилированный скетч обычно лежит hex-файлом в подкаталоге applet, в папке скетча.

    На Windows насколько помню ничего не создаётся в папке скетча, точно на 0022?

    ОтветитьУдалить
  17. Да понятно, что придется использовать программатор. Скетчи, кстати, складываются на Linux/MacOS в /tmp. Тут весь вопрос с fuses (нужно ли их менять) и командах avrdude правильных.
    Ведь, насколько я понимаю, fuse-бит еще и задает размер бутлоадера. А тут, если бутлоадера нет, то и fuse должен быть другой ? Вроде на arduino.cc была статья, но я лично мало что понял из нее.

    ОтветитьУдалить
  18. > Ведь, насколько я понимаю, 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

    ОтветитьУдалить
  19. Коллеги! Я правильно понимаю, что алгоритм такой примерно:
    1. Выковыриваем hex
    2. Даем программатору команду "стирать флеш" - фузы не трогаем
    3. Даем программатору команду "писать флеш" - фузы не трогаем.
    4. В идеале, после подачи питания, стартовать должна прошивка сразу.

    ОтветитьУдалить
  20. Если размер прошивки для ATmega8 меньше чем 7168 байт (или сколько там получается), то всё вроде бы верно.

    п.2 и 3. делаются одновременно обычно (вернее, avrdude сам выполнит стирание перед прошивкой, если не указано обратное).

    ОтветитьУдалить
  21. Спасибо, буду пробовать в скором времени...

    ОтветитьУдалить
  22. Все получилось!
    Спасибо за поддержку...
    Еще бы ликбез по fuses бы =)

    ОтветитьУдалить
  23. Классно, что получилось :)

    По фьюзам у DI HALT'а есть:
    http://easyelectronics.ru/avr-uchebnyj-kurs-konfiguraciya-fuse-bit.html

    Для конкретного контроллера можно проверить этим калькулятором:
    http://www.engbedded.com/fusecalc/

    ОтветитьУдалить
  24. Ну вот, собственно финальное (почти) описание устройства. 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/

    Фотки готового изделия будут позднее - допиливаю.

    ОтветитьУдалить
  25. Привет!

    Дай знать, когда фотки будут :) Я правильно помню, что у Dingoo есть ТВ-выход и в итоге проекта может получиться полноценный аркадный автомат? :)

    ОтветитьУдалить
  26. Да, и многие так и делают, но я сделал нано-вариант - используется сам экран, а тв-аут выведен на тюльпаны сзади, впрочем покажу

    ОтветитьУдалить
  27. Если бы не эта статья, ничего бы не получилось.
    http://a320.emulate.su/2011/02/27/fallout-mod/

    ОтветитьУдалить
  28. Да, штука зачётная и стильная получилась :)

    ОтветитьУдалить
  29. Уважаемые, а можно чайнику небольшое пояснение?
    Выковырили HEX, а как будет выглядеть команда заливки оного в атмегу8 через ArduinoISP?

    ОтветитьУдалить
  30. Максим, правильно ли я понял, имеется в виду как использовать ArduinoISP чтобы залить произвольный HEX-файл в произвольный контроллер подключенный ISP-проводаками?

    Если я всё понял правильно, то чтобы прошить, например attiny45, подключенный к ArduinoISP нужно следующее

    avrdude -v -p attiny45 -c stk500v1 -P COM10 -b19200 -U flash:w:my_hex_file_here.hex

    Целевым контроллером в данном случае является то, что подключено к ArduinoISP.

    ОтветитьУдалить
  31. Спасибо, Артем!
    В принципе уже дошло, но я лучше переспрошу :)

    ОтветитьУдалить
  32. Все получилось! Спасибо автору статьи и за развернутые комментарии.
    blink.hex прекрасно залился и сразу заработал.

    ОтветитьУдалить
  33. Классно, что всё получилось, а какой был целевой контроллер?

    ОтветитьУдалить
  34. Я в небольшом сметении...
    Подскажите, а что никакой особой обвязки ненужно??? Ну разве что кроме двух резистора и двух перемычек? (я смотрю по схеме товарища ZNO http://a320.emulate.su/wp-content/uploads/2011/02/board.png)
    Зачем тогда так много всего на самой ардуине?
    Я так понимаю это остальное все USB, и внутрисхемный программатор.
    Если все так, то получается отличный девайс - так сказать простой старт.

    ОтветитьУдалить
  35. И еще вопрос: можно ли так прошивать те же atmega168, atmega328?

    ОтветитьУдалить
  36. Подскажите, а что никакой особой обвязки ненужно???
    > Ну разве что кроме двух резистора и двух перемычек?
    По хорошему нужно поставить пару конденсаторов на питание, чтобы сгладить помехи, но по минимуму запустится и так. Подробнее тут: 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с :)).

    ОтветитьУдалить
  37. Подскажите в чем проблема:

    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 ""

    ОтветитьУдалить
  38. Спасибо! Все отлично получилось! В команде не хватает пробелов:
    avrdude -v -p atmega8 -c stk500v1 -P COM4 -b 19200

    ОтветитьУдалить
  39. Странно, должно и так понимать, правда я использовал avrdude из WinAVR, а вы судя по этому "Version 5.4-arduino" из Arduino?

    ОтветитьУдалить
  40. у меня версия из ардуино не работала совсем :-(.
    забыл написать, что для этого я заменил из winavr.
    И то даже она почему-то обнаружила со второго запуска той же самой комманды

    ОтветитьУдалить
  41. Этот комментарий был удален автором.

    ОтветитьУдалить
  42. Все оказалось на много проще и не понятнее. Достаточно из во фридуино воткнуть USB в два этапа, т.е. сначала немного, потом еще чуть дальше и все скетча нет.
    На макетке собрал девайс. Когда питаю всю схему от Freduino - работает хорошо. Как только запитал от зарядки с мобильного (5.2В, 0,7А) - все скетч пропал.
    Исходя из этих двух наблюдений я так понимаю налицо проблемы с питанием, как решать?

    И самый главный вопрос - как может питание (может действительно не правильное...) лишать меня залитого скетча????

    ОтветитьУдалить
  43. > у меня версия из ардуино не работала совсем :-(.
    Судя по куску вывода запускается именно Arduino'воская версия. Не напутал с путями?

    > И то даже она почему-то обнаружила со второго запуска той же самой комманды
    Это глюк ArduinoISP, о нём на форумах писали и я его пару раз ловил. Обычно ничего страшного, вторая прошивка или ресет Arduino-программатора помогает.

    > Теперь дело дошло до сбора уже прошитой Atmega8A-PU на макетной плате. Собираю - не работает,
    >вставляю в FreeDuino - работает. Заново собираю схему - не работает.
    Как сконфигурированы фьюзы на этой ATmega8? Возможно, сконфигурировано на работу с внешним кварцем, на макетке его нет, а на FreeDuino -- есть?

    > Повторная заливка скеча - опять работает. Пока не поместишь на макетную плату.
    > С чем связаны такие приключения? как решать?
    Можно глянуть на фотку макетки и на фьюзы меги (они выводятся при прошивке).

    И ещё: почему бы не оставить мегу на макетке и там же её и шить, не вынимая?

    ОтветитьУдалить
  44. >Судя по куску вывода запускается именно Arduino'воская версия. Не напутал с путями?

    Нет это я после комментария пробовал

    Как выяснилось проблема вовсе не в моей макетной плате.
    Проблема вот в чем. Скетчь теряется даже в самой Freeduino если не правильно вставить USB. А именно: вставлять в два этапа сначала немного без усилия, потом до конца. В результате скетч потерян. На сколько я помню такого небыло 328 чипом. Может я над ним не так издевался..

    ОтветитьУдалить
  45. Возможно, дело в маленькой задержке у модифицированного бутлоадера -- он успевает "схавать" какой-то мусор во время инициализации USB-TTL и запрограммировать его в себя.

    На Freeduino какой USB-TTL чип?

    ОтветитьУдалить
  46. Во фридуино FT232RL
    В том то и дело если вставить до конца сразу резким движением, то такого сброса не происходит.

    Тоже самое наблюдалось когда подключал питание не от платы а от зарядного с мобилки. Но когда обвесил конденсаторами - на макетке баг пропал.

    ОтветитьУдалить
  47. Если баг пропадает в том случае, если к TX\RX ничего не подключено -- скорее всего бутлоадер. Эта версия по описанию не так устойчива к мусору во время загрузки.

    ОтветитьУдалить
  48. Тут у меня еще один неудобный момент обнаружился. А можно ли как-то сделать так, чтобы скетч в atmega8 заливать без постоянного перемещения в саму arduino. Может можно вывести какие пины и соеденить непосредственно с платой. Может ещ какие варианты. т.е. что-то вроде внутрисхемног опрограмматора

    ОтветитьУдалить
  49. > А можно ли как-то сделать так, чтобы скетч в atmega8 заливать без постоянного перемещения в саму arduino.

    1. Нужно выдернуть чип из Arduino

    2. Соединить GND, RESET, TX, RX от Arduino с соотв. пинами на ATmega8.

    3. Заливаться будет так, как будто Atmega8 вставлена в ардуину.

    P.S. Питание ATmega8 желательно, чтобы совпадало с ардуино, т.е. 5В и там и там.

    ОтветитьУдалить
  50. > 1. Нужно выдернуть чип из Arduino
    Уточнени:
    Имеется в виду вытащить штатный для твоей Arduino контроллер (ATmega328 скорее всего) и отложить в сторону, чтобы в раъёме DIP-28 ничего не было. После этого Arduino-плата превращается в переходник USB-TTL с автоматическим передёргиванием линии RESET при заливке скетча.

    ОтветитьУдалить
  51. по уарту сам не работает.. не заливает..
    подскажите про кварц. у меня на 8мгц. не хочет работать... а на програматоре на 12 мгц от него работает нормально... вывод. поставить на 12

    ОтветитьУдалить
  52. А что именно не работает и как собрано\подключено? Если цель сделать как в статье -- то кварц не нужен (вообще на 8 заработает, но если фьюзы поменять, а для 12 нужно как минимум бутлоадер пересобирать).

    ОтветитьУдалить
  53. Коллеги, в чем может быть проблема?
    Имею:
    - 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.

    ОтветитьУдалить
  54. Alex.

    Эта ошибка означает, что программатору не удалось перевести прошиваемый мк в режим программирования. Тут может быть что угодно - неправильное соединение прошиваемого мк к программатору, неисправность мк или неисправность выводов программатора.

    У меня часто бывает, что устройства не могут подключиться друг к другу, если питание на прошиваемый контроллер идет от другого источника. Тогда я перед прошивкой отключают программатор и питание, потом подключаю программатор и питание и запускаю прошивку. Т.е. нужно чтоб и программатор и питание были "свежевключенными". Почему так происходит - я так и не понял.

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

    ОтветитьУдалить
  55. build_your_web,

    Разводка по схеме - ОК
    Скетч/проц пины - ОК
    Работоспособность выводов на Arduino - ОК
    Пробовал с тестить ATmega88, та же ситуация.

    Ума не приложу в чем дело, как-то можно проверить микруху?

    ОтветитьУдалить
  56. Попробуйте использовать avrdude напрямую.

    Avrdude есть в одной из подпапок Program Files/arduino.
    Если не заработает, скачайте свежую версию с официального сайта, установите в отдельную папку, попробуйте подключится используя новую версию.

    ОтветитьУдалить
  57. Судя по ответу на команду:
    avrdude -v -patmega8 -cstk500v1 -PCOM3 -b19200

    Программатор из Ардуины отзывается, целевой контроллер -- нет. Наиболее частая причина -- неправильное подключение. Можно фотографию подключения? Кстати, земли программатора и целевого контроллера соединены? От чего питается целевой контроллер?

    ОтветитьУдалить
  58. Автору респект!
    Сделал все как описано в статье, FUSE не менял, оставил как в прошивке.
    Все работает.

    ОтветитьУдалить
  59. 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, а результат остался старый. Очевидно делаю что-то не так...(

    ОтветитьУдалить
  60. Смотри, для программирования используется 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

    Отпиши плз, получится или нет.

    ОтветитьУдалить
  61. 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

    ОтветитьУдалить
  62. Спасибо, добавил примечание в статью выше.

    ОтветитьУдалить
  63. При попытке запустить загрузчик на Atmege8 выдает ошибку

    arduino-0023\hardware/tools/avr/etc/avrdude.conf:383 unrecognized character: "u"

    ОтветитьУдалить
  64. > При попытке запустить загрузчик на Atmege8 выдает ошибку

    В ответ на какую команду такое отвечает?

    ОтветитьУдалить
  65. Arduino Uno не поддерживается скетчем ArduinoISP, нажаль у меня Arduino Uno. Не заметил этот момент в статье сразу.

    ОтветитьУдалить
  66. Установите ArduinoIDE 0023
    Arduino Uno поддерживается скетчем ArduinoISP
    не вводите читателей в заблуждение.
    Экспериментировал с 8A-PU и 8L-8PU, "reset" вручную. Использовал Arduino Uno

    ОтветитьУдалить
  67. isaak, спасибо за информацию! Автор никого специально не вводит в заблуждение, просто статье уже скоро как год, а arduino 0023 вышла всего-то неделю назад ;)

    ОтветитьУдалить
  68. Автор даже отмазался на этот счёт "на момент написания заметки новая Arduino Uno не поддерживается скетчем ArduinoISP".

    Если серьезно, то добавил в статью примечание + упомянул о том, что новый optiboot можно тоже попробовать.

    ОтветитьУдалить
  69. Приношу свои извинения автору, но я имел ввиду комментарий Rodot

    ОтветитьУдалить
  70. Автор не обижается и даже рад, что кто-то проверил на Arduino Uno! :)

    ОтветитьУдалить
  71. Для того чтобы создать hex файл Arduino IDE во время Upload скетча, зажмите Shift, файл в Windows 7 находится путь c:\Users\rodot\AppData\Local\Temp\....
    Взято с http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1287332515

    ОтветитьУдалить
  72. простите я совсем новичок, расскажите как можно подробнее как сделать чтобы скетчи можно было заливать с первой попытки не подгадывая каких-то особых моментов? я так понимаю подключить к компьютеру не 3-мя проводами а 4-мя включая DTS? Я пытаюсь сделать автономное устройство, так чтобы его можно было использовать отдельно от "настоящей" arduino.

    ОтветитьУдалить
  73. Если есть "настощая" Arduino плата и отдельно контроллер с бутлоадером (дальше буду называть "цель"), то достаточно сделать следующее:

    1. Вытащить (физически, пальцами) контроллер из настоящей Arduino.

    2. Подключить от Arduino к цели следующее:

    Arduino <-> Цель
    GND <-> GND
    RX <-> TX
    TX <-> RX
    RESET <-> RESET

    Подключение RESET'а цели к выводу RESET на Arduino задействует механизм сброса.

    Позразумеваю, что:
    - У цели есть своё питание 5В (если цель питается от 3.3В (например, пары АА батареек), нужно согласование уровней).
    - В цель уже прошит бутлоадер с помощью программатора или описанного в этой статье способа

    ОтветитьУдалить
  74. ардуино то у меня есть но МЕГА, и контроллер в нее впаян ) я использую преобразователь уровней ST232BN, но с резетом как-то не все понятно из 10 попыток удалось залить скетч только один раз.

    ОтветитьУдалить
  75. Можешь кинуть ссылку -- какая именно Мега у тебя, чтобы я чего-попало не насоветовал.

    ОтветитьУдалить
  76. я, конечно, не совсем мега-нуб, но кто мне объяснит: почему такое простое дело - прошить бут-лоадер в атмега8 - это такая огромная проблема для начинающего???

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

    ОтветитьУдалить
  77. хе-хе вроде как разобрался сам)
    нужно сигнал DTR из COM порта компьютера завести на ножку RESET, НО только не напрямую конечно же, а вначале через преобразователь уровней ST232BN (например нога 8 -> нога 9) а потом через конденсатор 0,1 мкф. И все заработало как часики!!!!!

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

    ОтветитьУдалить
  79. установил в программатор USBasp читую Atmega8a;
    запустил оболочку Ардуино;
    указал, что буду работать с Atmega8 в разделе Board;
    указал, что программировать буду через USBasp;
    нажал "прошить бутлоадер";

    прошило!

    закрыл оболочку Ардуино;
    открыл программу USBASP_AVRDUDE_PROG;
    решил её там прочесть, прощупать;
    откликалось и читалось "на ура";

    потом решил поумничать и выставить с её помощью фьюзы;
    всё! после этого Atmega8 перестала откликаться;...

    ОтветитьУдалить
  80. Все и есть просто для тех конфигураций, которые идут в стандартной поставке (например, ATmega8 + внешний кварц на 16МГц). Если нужно что-то нестандартное (например, как в этой статье), то нужно добавлять записи в boards.txt и все сразу опять становится просто -- все можно делать из среды arduino.

    ОтветитьУдалить
  81. > потом решил поумничать и выставить с её помощью фьюзы;
    > всё! после этого Atmega8 перестала откликаться;...
    А причём тут среда Arduino, если фьюзы были выставлены вручную в неправильные значения? :)

    ОтветитьУдалить
  82. т.е. не нужно было умничать, а только прошить бутлоадер из среды Ардуино?
    не трогая фьюзы вообще?

    ОтветитьУдалить
  83. ArduinoIDE в процессе прошивки бутлоадера шьет и фьюзы тоже.

    ОтветитьУдалить
  84. > А причём тут среда Arduino, если фьюзы были выставлены вручную в неправильные значения? :)

    если всё сама грамотно ставит среда Ардуино при прошивке бутлоадер, откуда тогда в Сети так много шума и болтовни по поводу грамотной установки фьюзов???

    ОтветитьУдалить
  85. Отдельно шить фьюзы не нужно, если бутлоадер шьется из среды Arduino. При прошивке из среды снача снимаются лок-биты, затем шьются фьюзы, потом прошивка с бутлоадером, потом опять прошиваются лок-биты, насколько помню.

    ОтветитьУдалить
  86. а будут тут добрые подсказки: как теперь Атмегу оживить обратно?..

    ОтветитьУдалить
  87. А кто-нибудь знает как теперь залить скетч из новой 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.

    ОтветитьУдалить
  88. > а будут тут добрые подсказки: как теперь Атмегу оживить обратно?..
    Проблемы с неправильными фьюзами могут быть двух видов :

    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. >1) Заперещено программирование по SPI, тогда нужен высоковольтный (HV) программатор, чтобы заново прошить фьюзы с такими значениями, при которых прошивка по SPI включена.

      > 2) Установлен "неправильный" источник тактовой частоты -- например, внешний генератор.

      спасибо за подсказки; надеюсь на 2-й пункт :)

      хороший у вас форум

      Удалить
    2. Да, разумеется обновлю! ;)

      А по поводу запрещения программирования SPI: фьюз SPIEN можно переключать только в высоковольтном режиме, т.е. дело не в нем. Чаще всего люди попадаются на RSTDISBL - разрешение использования пина, назначенного RESET в качестве обычного DIO. Увы, программирование в режиме ISP начинается именно со сброса :(. Чтобы его восстановить, нужен программатор с поддержкой режима параллельного программирования (в случае с ATmega8).

      Ну и по факту - лезть без особого понимания во фьюзы не очень разумно, но если уж пришлось - сначала их надо прочесть, выписать на бумажку, сравнить с новыми значениями и ТРИ раза подумать о правильности изменений (я сам всегда так делаю ;)

      Удалить
  89. К сожалению стало еще хуже - теперь даже не компилируется и в старой и в новой 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

    ОтветитьУдалить
    Ответы
    1. - Какая выбрана плата в настройках?
      - Куда положен boards.txt из архива?

      Удалить
    2. Плата выбрана: ATmega8A (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
      Файл лежит в C:\Users\Например Андрей\Documents\Arduino\hardware\arduino-addons\ но только не из архива с содержанием как в Вашем посте выше.

      Удалить
    3. Если выбрать любую другую плату, скетч собирается?

      Удалить
  90. Если убрать всё из "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


    собирается?

    ОтветитьУдалить
    Ответы
    1. Компилируется, но все равно не заливается:
      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.

      Удалить
    2. Ок, значит это уже другая (следующая) проблема. Судя по сообшению -- либо неправильно подключена целевая плата, либо бутлоадера в ней нет. Начнём с подключения. Что и как подключено?

      Удалить
    3. Этаже плата прекрасно работает с версией 0.22, в неё даже залит скетч и прекрасно работает! А скетч общается через COM1 с встроенным сериал монитором. У меня одновременно на комьютере лежат две папки с IDE версии 0.22 и 1.0 и в из старой заливается скетч а из новой - нет (

      Удалить
    4. А попробуй вот такие настройки в 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

      Удалить
    5. Этот последний вариант хорошо заработал и компилируется и заливается, но ТОЛЬКО если эта конфигурация записана в ОСНОВНОМ файле ардуины.

      Удалить
    6. Как вариант:

      - "C:\Users\Например Андрей\Documents\Arduino\" -- имя пользователя тут на русском? Если указать File -> Preferences Arduino IDE -> Sketchbook на какую-то другую папку, поближе к корню диска и без русских символов в названии.

      - Какая структура папок внутри папки Sketchbook?

      Удалить
  91. тут ещё вопрос назрел по ходу моих изысканий;
    дело в том, что решил быстро сам спать Ардуино-совместимую плату;
    если прошить и установить Atmega8L, то можно без кварца? т.е. на 8 Мгц?
    будет работать сама и с Ардуино?

    ОтветитьУдалить
    Ответы
    1. Судя по этому: http://www.atmel.com/Images/doc2486.pdf
      без кварца на 8МГц работают и оригинальные 8 и 8L, смысл ATmega8L в том, что она может работать при более низком напряжении питания, а обычная ATmega8 -- нет. Более новая ATmega8A является заменой обоих в "модельном ряду". У нас (Украина) продаются только ATmega8A, остальных уже давно нет.

      Удалить
  92. тоже из Украины;
    купил тут Atmega8a, но запорол, похоже; писал про это выше;
    Atmega8L-8UI вытянул из платы сигнализации; стояла там без кварца;
    потестил её на живучесть в программаторе; прошил в неё штатный бутлоадер;

    мой вопрос был больше про 8 Мгц и работу без кварца в моей самодельной Ардуино;
    в оригинальной же стоит 16 Мгц;
    в моём варианте 8 и без кварца тоже всё будет фурычить?

    ОтветитьУдалить
    Ответы
    1. Штатные бутлоадеры, насколько помню все на 16Мгц, т.е. их прошить можно и они прошьются, но работать не будут. Собственно по этой же причине и писал этот пост -- ATmega8A на 8МГц.

      Ещё неплохой вариант -- поставить таки кварц на 16МГц, тогда можно будет прошить новый optiboot, который всего 512 байт занимает и поддерживает высокий битрейт при заливке. Все необходимое уже есть в комплекте Arduino IDE, нужно только boards.txt подправить, вот тут я писал: http://snippets.crisp-studio.com/view/160/nastrojki-arduino-ide-dlya-atmega8a-s-optiboot

      Удалить
  93. привет!
    отличная подсказка таки на 16Мгц его!

    собрал Ардуино своими руками на Атмега8;
    подключил его через КОМ-порт (обычная схема на 2-х транзисторах)

    а теперь не могу понять как Ардуино настроить;
    установка КОМ-порта есть; а какой программатор выбрать чтобы Ардуино заливала откомпилированные скетчи?...

    ОтветитьУдалить
    Ответы
    1. Если у тебя схема согласования уровней RS232 -> TTL, то скорее всего тебе нужно будет ещё подтянуть ресет к DTR (не уверен, нужно по схеме проверить). Либо выбрать бутлоадер с большей задержкой при старте и ресетить вручную.

      Удалить
  94. ну вот такую я собрал на макетной плате
    автосброс не подпаял
    это важно?

    при попытке UPLOAD, в самом конце выдаёт "avrdude: stk500_getsync(): not in sync: resp=0x00"

    ОтветитьУдалить
    Ответы
    1. Если ресет ни к чему не подключен, то нужно ресетить вручную в нужный момент.

      Удалить