Как прошить загрузчик Arduino (ATmega8A)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

есть. и не только com портом

http://habrahabr.ru/post/208470/

Sirocco
Offline
Зарегистрирован: 28.09.2013

trembo пишет:

Запомните навсегда!  usbasp НИКОГДА не был и не будет КомПортом!!!!!!!

Это SPI  программатор.

http://arduino.ru/forum/programmirovanie/kak-ozhivit-arduino-atmega8a?pa...

И прошейте его последним фирмварем с  http://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz

Тогда не будет ругаться на то, что он не может регулировать частоту.

Не помню в каком программаторе, можно эту частоту менять (крайне необходимо для тех, кто от часового кварца тактуется)

Чтоб прошить один программатор, нужен второй программатор, как я понял, а у меня его нет.  И потом, как-то странно, покупал прогрмамматор в 2014 году, но прошивку нужно ОБНОВИТЬ на 2011год. Я конечно понимаю, долго мог валяться на складах, но всё же...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да нет. просто старую шьют. приходится обновлять.  а 2011 это последняя версия. новее нет. 

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

jeka_tm пишет:

есть. и не только com портом

http://habrahabr.ru/post/208470/

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Клапауций пишет:

trembo пишет:

Запомните навсегда!  usbasp НИКОГДА не был и не будет КомПортом!!!!!!!

может, есть хоть какая-то надежда, что станет компортом в будущем?

Клапауций пишет:

jeka_tm пишет:

есть. и не только com портом

http://habrahabr.ru/post/208470/

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

вроде о том

Клапауций
Offline
Зарегистрирован: 10.02.2013

jeka_tm пишет:

вроде о том

не о том - народ желает юсбаспа с компортом.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

и программатор и одновременно переходник?

Sirocco
Offline
Зарегистрирован: 28.09.2013

Получилось таки прошить и залить скетч. Проблема в том, что ресет нужно было резистором 10К подтягивать к VCC, и никто тут, не один не сказал этого. И нигде этого я не нашёл, один ремонтник посоветовал, я там программатор покупал(кстати не китайский, а оригинал,с новой прошивкой уже и в заводской упаковке). Зато некоторые спорили, что у всех получается, а я типа лох, и не так что-то делаю, отступаю от схемы... Пять раз перепроверил, нет резистора - нихрена не работает. И с кварцем, и без. Вот так-то.

Но всёравно счастья не вышло, ибо прицепив Ethernet, скетчи которого не компилировались, узнал, что он на этой меге работать не будет, так как памяти мало... Абидна, аднака. Не ожидал такого подвоха. Ну была не была, из китая уже едут 328-мые меги. На такой мои скетчи вполне работают в составе Ethernet. 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

leshak
Offline
Зарегистрирован: 29.09.2011

jeka_tm пишет:

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

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

А вот почему "нигде об этом не сказанно" - я поняния не имею. И первая же ссылка из гугла по поиску "минимальная ардуина" дает:Минимальная схема подключения ATmega328 (Arduino.Минимальная схема подключения ATmega328) - XWiki

Да и, в самой этой ветке, в первом же посте, в первом же пункте "Подключите ваш камень как показано на рисунки ниже", на первой же картинке четко видно резистор подтягивающий первую ногу к питанию.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

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

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

Клапауций
Offline
Зарегистрирован: 10.02.2013

jeka_tm пишет:

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

у меня ресет на программаторе подтянут - видимо, это неправильно.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ресет подтянут внутри, и видимо мне этого хватает

подтянуть это правильно, я не спорю, но я пока обхожусь

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Зашил в мегу 8 загрузчик который работает без кварцевого резонатора аля 8 мГц. Раньше был загрузчик на 16 мГц.

Зашил в мини про скетч isp потом подключился к меге как на офсайте рекомендуют, с кварцевым резонатором на 16 мГц и кондёрами на 20 пФ, выбрал из списка ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate) и нажал зашить загрузчик. Потом выбрал "записать при помощи загрузчика" и мой скетч залился, АЦП работает медленней что означает что частота уменьшилась. Вынул мегу, вставил в плату вроде как завелось. 

boards.txt:

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

atmega8noxtalfast.name=ATmega8(A) (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:arduino
atmega8noxtalfast.build.variant=arduino:standard

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

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

А вот прошить загрузчик в atmega328P-AU не получается, arduino IDE выдаёт 

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.
Что не так? В качестве програматора IPS Arduino mini pro на 328 атмеге. Какую плату выбирать в меню, для прошивки загрузчика? Там их много с 328 атмегами.
HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Уно выбирай.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Может что не так подключили? 

 

Sirocco
Offline
Зарегистрирован: 28.09.2013
Всё по схеме, кроме конденсаторов, у меня они только на кварце.
Иногда выкидывает такую ошибку:
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
         Double check chip, or use -F to override this check.
Ведь всё работает с восьмой мегой, а с этой не хочет...
Sirocco
Offline
Зарегистрирован: 28.09.2013

Купил ещё пару atmega328P-AU, пришла колодка к ней. Установил, новую, пытаюсь залить загрузчик, таже ошибка. В интернетах пишут, типа сигнатуры разные, потому проверку не проходит и не заливается. Но нормальной инструкции, рабочей, пока не нашёл. 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

Купил ещё пару atmega328P-AU, пришла колодка к ней. Установил, новую, пытаюсь залить загрузчик, таже ошибка. В интернетах пишут, типа сигнатуры разные, потому проверку не проходит и не заливается. Но нормальной инструкции, рабочей, пока не нашёл. 

не нужно никой инструкции для чтения сигнатуры - она или читается, или не читается.

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Это надо же как Вам не повезло...

А ну-ка опишите весь процесс прошивки, от начала до конца, возможно что-то пропустили или не так делаете?

Sirocco
Offline
Зарегистрирован: 28.09.2013

Клапауций пишет:

не нужно никой инструкции для чтения сигнатуры - она или читается, или не читается.

Она читается, но не совпадает с той, которая должна быть, и поэтому не шьётся. Это я так понял. Как на самом деле, не знаю. 

Sirocco
Offline
Зарегистрирован: 28.09.2013

HWman пишет:

Это надо же как Вам не повезло...

А ну-ка опишите весь процесс прошивки, от начала до конца, возможно что-то пропустили или не так делаете?

Многим на самом деле не повезло, стоит только пояндексить http://yandex.ru/yandsearch?text=atmega328p-au%20bootloader%20%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE&lr=213 и станет видно, что проблема почти у всех, только решения не нешёл. А что, у кого-то именно эта микруха без проблем прошилась?

1. Запускаю Arduino IDE v.1.0.5, выбираю нужный ком порт, выбираю плату, выбираю программатор AVRISP mkII.

2. Заливаю в Arduino mini Pro (Atmega328P-AU) скетч ArduinoISP. 

3. Собираю схему:

D10(RST) -   29 вывод PC6

D11(MOSI) - 15 вывод PB3

D12(MISO) - 16 вывод PB4

D13(SCK) -   17 вывод PB5

Питание соответственно GND, +5Вольт VCC. Кварц и кондёры кварца (27пф) присутствуют, резистор на ресет на 7КОм.

В IDE выбираю плату Уно(или любую другую с атмегой 328, на результат не влияет) ком порт - тотже, программатор Arduino as ISP, и "Записать загрузчик". На прошивальщике пару раз вспыхивают RX TX, потом вылетает ошибка.

Втыкаю атмегу8 в тоже место, шьёт на ура и без проблем.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

Она читается, но не совпадает с той, которая должна быть, и поэтому не шьётся. Это я так понял. Как на самом деле, не знаю. 

не нужно думать - нужно считать сигнатуру.

пример:

считываем сигнатуру МК ATtiny2313 программатором usbasp в файл signature.txt

avrdude -p ATtiny2313 -c usbasp -U signature:r:signature.txt:h

результат можно смотреть в файле signature.txt или непосредсвенно в CMD:

d:\Program Files mini\avrdude-5.11-Patch7610>avrdude -p ATtiny2313 -c usbasp -U signature:r:signature.txt:h

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.10s

avrdude: Device signature = 0x1e910a
avrdude: reading signature memory:

Reading | ################################################## | 100% 0.11s

avrdude: writing output file "signature.txt"

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

*если не получается считать сигнатуру, то энто ваши аппаратно/программные проблемы.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Sirocco пишет:

Кварц и кондёры кварца (27пф) присутствуют, резистор на ресет на 7КОм.

У меня резистор на 10 кОм и керамические кондёры на 22 пФ.

ЗЫ правда впервые шил юсбаспом, потом уже перешивал при помощи мини про(не по юарту).

Sirocco
Offline
Зарегистрирован: 28.09.2013
Microsoft Windows [Version 6.2.9200]
(c) Корпорация Майкрософт, 2012. Все права защищены.

C:\avrdudeGUI>avrdude -p ATtiny2313 -c usbasp -U signature:r:signature.txt:h

avrdude: warning: cannot set sck period. please check for usbasp firmware update
.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.


C:\avrdudeGUI>

Вот что... Всё нормально? Или что не так? Ну кроме обновления программатора и названия микрухи, которое ничё не меняет.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

Вот что... Всё нормально? Или что не так? Ну кроме обновления программатора и названия микрухи, которое ничё не меняет.

ответ находится в файле C:\avrdudeGUI\signature.txt

 

возможно риторический вопрос, а зачем просить программатор работать с тину2313, но подсовывать ему не то?

Sirocco
Offline
Зарегистрирован: 28.09.2013

Не создаётся там файл C:\avrdudeGUI\signature.txt

А программа знает такую микросхему как atmega 328? В eXtreme Burner - AVR, например, её нет.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Теперь новая ошибка лезет

avrdude: Expected signature for ATMEGA328P is 1E 95 14
         Double check chip, or use -F to override this check.
Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

Не создаётся там файл C:\avrdudeGUI\signature.txt

А программа знает такую микросхему как atmega 328? В eXtreme Burner - AVR, например, её нет.

дудка знает.

#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------

part
    id			= "m328p";
    desc		= "ATMEGA328P";
    has_debugwire	= yes;
    flash_instr		= 0xB6, 0x01, 0x11;
    eeprom_instr	= 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
			  0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
			  0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode	= 0x86;
    # avr910_devcode	= 0x;
    signature		= 0x1e 0x95 0x0F;

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

Теперь новая ошибка лезет

avrdude: Expected signature for ATMEGA328P is 1E 95 14
         Double check chip, or use -F to override this check.

видимо, потому, что суёте непонятно что дудке, а потом удивляетесь.

1E 95 14 сигнатура ATMEGA328

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

Блин... Вот даже не знаю как это объяснить. Всё дело в кварце было. Почему восьмая атмега с ним работала, а 328 нет? Перепроверил, так и есть. Заменил кварц, стало всё работать. Задрали такие подвохи. Кварц на 16 мегагерц. Видимо, надо сразу, параллельно, несколько стендов собирать. И, если вдруг что-то заработало, это ещё не означает, что конфигурация рабочая, продублировав тоже самое но с другими такими же компанентами вполне может не работать.

А почему кварц одинаковый, на 16 мегагерц, для столь разного железа? и на восьмую, и на 1280?

Клапауций
Offline
Зарегистрирован: 10.02.2013

Sirocco пишет:

А почему кварц одинаковый, на 16 мегагерц, для столь разного железа? и на восьмую, и на 1280?

почему в шапке?(анекдот)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

пришли десяток atmega8a

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

9 нормально, а 1 не хочет ни в какую программировать по uart, хотя по ISP все четко, тот же блинк залился и моргает светодиод

как вы думаете это брак или как то исправляется

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Заливаем блинк на  нулевую а потом  на первую ногу ( сооответственно светодиод с резисторм на неё). Если не моргает- в морг.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

дел.

NikitosZs
NikitosZs аватар
Offline
Зарегистрирован: 26.09.2013

Я знаю правила о том, что статьи не редактируются и прочее, но это же полный бред в первом сообщении! Дважды прошивать загрузчик, 4 раза прошивать фьюзы, 4 полных стирания МК. Аврдуд не нужен, по нажатию пункта "Записать загрузчик" сначала записываются нужные фьюзы, а уже затем заливается бутлоадер, т.к размер бутлоадера определяется в самих фьюзах. Собственно, на этом статью нужно закончить, а не прописывать фьюзы, а потом загрузчик ещё раз. 

 Настройки аврдуда "В нижней строчки, пишем тоже самое." За параметр -e можно просто руки оторвать, т.к аврдуд с этим параметром будет всегда перед выполнением операции производить ПОЛНОЕ СТИРАНИЕ ЧИПА! Жмём считать флеш, аврдуд сперва его стирает, затем считывает пустой флеш. Так я потерял очень важную прошивку, которую писал неделю. 

Как уже говорил, я знаю правила, но из поиска по запросом на прошивку бутлоадера можно попасть сюда и увижеть те советы. Может, стоит делать иногда исключения, когда тема действительно важная?

jeka_tm пишет:

к или как то исправляется

Была похожая проблема. У меня не работал UART то ли на частоте 8МГц, то ли от внутреннего тактового. По SPI прошивка заливалась, работала, а в порт выходили в общем случае крокозябры, лишь процентов 5 символов были верными. Запустил от внешнего кварца и всё заработало. Компилировался скетч под нужную частоту и фьюзы были верными, просто такой вот брачёк. Я написал, что в порт сыпались ошибки при передаче String в скетче для теста UARTа, но, как понимаете, шиться он не хотел и по давно. В общем, попробуйте сменить частоту и/или источник тактирования.

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

NikitosZs
NikitosZs аватар
Offline
Зарегистрирован: 26.09.2013

А я всунул в готовое устройство. Если бракованная, то не так жалко =) 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не та цена чтобы голову ломать потом что не работает. может это не единственный брак вней был

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

NikitosZs пишет:

У меня не работал UART то ли на частоте 8МГц, то ли от внутреннего тактового.......... В общем, попробуйте сменить частоту и/или источник тактирования.

http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR053.htm

Mega8 : Если необходимо использовать другой генератор (не 1MHz), то в программе необходимо предусмотреть загрузку регистра OSCCAL соответствующим калибровочным байтом.

 

http://mainloop.ru/avr-atmega/avr-usart-setting.html#comment-2236

NikitosZs
NikitosZs аватар
Offline
Зарегистрирован: 26.09.2013

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

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Моё видео по загрузке бутлоадера в мегу:

https://www.youtube.com/watch?v=KTr9RbIwy0I

Хух, на создание этого видео у меня пошло 2 дня.

sasa999
Offline
Зарегистрирован: 21.03.2014

Есть Arduino Nano V3.0 ATmega328 16M 5V Micro-controller CH340G board For Arduino. Куплен на  EBay  в Китае.  Заливаю скетч - ошибка avrdude: stk500_getsync() : not in sync: resp=0x00   , больше ни на что не ругается. Схемка не работает..  Раньше работала без проблем. Что в ней слетело, как вернуть в раб.сост.? что то похожее тут на форуме встречалось, но для др.серий.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

как обычно замкни пины 0 и 1. открой терминал и отправь что нибудь. должно тоже самое прийти

Zahar
Zahar аватар
Offline
Зарегистрирован: 16.11.2013
Здравствуйте.
Я прошил Atmega8 bootloader на 8MHz без резонатора.
Также для прверки я прошил Blink, все работает без проблем.
Однако когда я пытаюсь прошить вот этот скечь
//---Программа управления светодиодной лентой WS2812
#include "FastLED.h"
#include "IRremote.h"
#define NUM_LEDS 60 // How many leds in your strip?
#define DATA_PIN 2
#define RECV_PIN  3
CRGB leds[NUM_LEDS];
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() { 
  Serial.begin(9600);
  irrecv.enableIRIn();
  FastLED.addLeds<NEOPIXEL, DATA_PIN, GRB>(leds, NUM_LEDS);
  LEDS.showColor(CRGB(0, 0, 0));
}
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value,HEX);
    //---white--- 
    if (results.value == 0x885B30D5){
      LEDS.showColor(CRGB(255, 255, 255));
    } 
  }
}

выходит вот такая ошибка.

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: sketch_feb12a.cpp.elf section .text will not fit in region text

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 1864 bytes
 
Методом научного тыка я нашол что проблема в 17 строчке. хотя если я прошиваю Arduino pro mini всё нормально.
Подскажите почему так происходит?
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

оперативки вроде не хватает. в меге8 ее всего 1кбайт, а в про мини 2кбайта

Zahar
Zahar аватар
Offline
Зарегистрирован: 16.11.2013

jeka_tm пишет:

оперативки вроде не хватает. в меге8 ее всего 1кбайт, а в про мини 2кбайта

ОК спасибо. Уже заказал atmega328 надеюсь с ним что то получится.

AlexBorn
Offline
Зарегистрирован: 20.02.2015

Возможно ли прошить мегу 8 в smd исполнении с помощью arduino isp?! Если да, то подскажите пожалуйста.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Задайте самому себе вот такой вопрос: что мы будем шить исполнение или Мегу8? Да шейте если подключили программатор.

Почитайте

http://arduino.ru/forum/apparatnye-voprosy/proshivka-atmega8a-au-v-korpu...