Конструктор Bootloader`а для Arduino

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

Да в статье у автора конструктора ведь всё понятно и просто описано и про фьюзы и про боард.тхт...

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

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

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

_EndWar_ пишет:
Понял я проблему парни... В ардуино иде когда загружаешь программу через ардуино исп в левый МК надо нажимать кнопку "загрузить с помощью программатора"...

Ну это как бы естественно... Во всех мануалах есть об этом.

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

_EndWar_ пишет:
http://download.gppsoft.com/other/Arduino/bootloaders/ вот... Отпишись как что...

Пробовал, этот совет ведёт на вашу ссылку

 

Не прокатило. Завтра вечером засяду заново, может что решу. А может старые файлы на винте найду.

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

"Как бы естественно" для нас с Вами... а парень же просил помочь... )) и по вопросу как бы естественно что только начинает...

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

 Ну подскажите мне, гуру микроконтроллерные, где я косячу.

Цель: сделать из микроконтроллера atmega328p-au ардуино совместимую плату, при этом atmega328p-au должен работать без кварца.

Действия: Беру чистенькую arduino-1.0.5-r2-windows. Распаковываю. Иду на сайтик: http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik и конструктором конструирую загрузчик, подробности на скрине:

Добавляю в boards.txt указанные строки, добавляю скачанный hex файл в указанные директории.

Подключаю Arduino mini Pro (5v, 16MHz) atmega328p, заливаю в неё скетч ArduinoISP. Скетч залит успешно.

Подключаю к Arduino mini Pro (5v, 16MHz) atmega328p микроконтроллер atmega328p-au,

+5v -> контакт №4 и №6 (также пробовал подключать контакт №18)

GND -> контакт №3, №5, №21

pin10[RST] -> контакт №29[RESET]

pin11[MOSI] -> контакт №15[MOSI]

pin12[MISO] -> контакт №16[MISO]

pin13[SCK] -> контакт №17[SCK]

Согласно данной иллюстрации:

Как выглядит мой стенд:

Не видно, но питание есть, стоит кварц(вытаскиваю когда не нужен), RST подтянут резистором на 10к к +5V. Данный стенд у меня около года, им прошито десятки микроконтроллеров(правда стандартным бутлоадером). Также я принял свой собственный цветовой стандарт для проводов RST, MOSI, MISO, VCC, GND, SCK, Rx, Tx. Эти провода у меня всегда у всех моих поделок имеют одинаковый цвет для каждого, наебаться с подключением при такой системе невозможно, учтено что Rx-Tx подключается перекрёстно.

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

Выбираю новую плату, это: atmega328p (8 MHz) 

Выбираю программатор - Arduino as ISP

Жму "Записать загручик" в меню Сервис

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

Всё, бутлоадер пролит. Выдёргиваем всё лишнее. Точнее выдёргиваем ВСЁ, оставив только подтягивающий RST резистор. Берём USB-UART переходник, от него подаём на микроконтроллер +5V, GND, DTR->RST, Rx и Tx. Выставляем в IDE arduino-1.0.5-r2-windows нужный ком порт, программатор AVRISP mkII и в качестве платы выбираем atmega328p (8 MHz). Берём стандартный скетч Blink. Пробуем залить. И нифига... Ок. Откидываю RST, пробую вручную стартовать контроллер, и тоже нифига. Меняю местами RxTx и тоже нифига. На UART адаптере лишь несколько раз мигает светодиод, означающий передачу. Приёма нет.

А теперь прошу помощи, например у тех, кто готов помочь, или у тех, кто развёл руками и ушел. 

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

axill
Offline
Зарегистрирован: 05.09.2011

Фигасе скорость новому бутлоадеру без кварца 115200

у стандартного загрузчика с кварцем на 16мгц 57600

а здесь мало того что скорость в два раза больше так еще и частота в два раза ниже к тому же менее стабильная

мне видится это перебор

попробуйте при создании бутлоадера включить делитель на 8. Чисто для эксперимента. Частота будет 1мгц, а скорость 9600. Я именно такие параметры тестировал. Если заработает то нужно просить автора конструктора снизить скорость для варианта 8мгц в два или даже 4 раза

MaksMS
Offline
Зарегистрирован: 11.03.2013

У стандартного загрузчика с кварцем на 16мгц как раз 115200... И для 8мгц выбрана та же скорость согласно настройкам бутлоадера.

axill
Offline
Зарегистрирован: 05.09.2011

Это проверялось? При работе без кварца снижается стабильность, а значит повышается вероятность ошибок при том же соотношении частоты и скорости

По памяти ошибся, сейчас посмотрел boards.txt, для UNO которую можно считать стандартом действительно 11520, но например доя нано и про мини - 57600

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да, проверял на паре м/к - на атмега328 и атмега32. Допускаю, что тут возможны проблемы на некоторых экземплярах..

axill
Offline
Зарегистрирован: 05.09.2011

Я бы понизил. Может даже от температуры частота упоыть и в одних условиях заработает, в других нет

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да, конечно можно добавить выбор скорости в конструктор, но как будет время - сложно с одного проекта на старый проект вникать снова :)

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

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

если scopt не программировать то все работает, иначе глухо

axill
Offline
Зарегистрирован: 05.09.2011

Skopt влияет на кварц, на RC не влияет

axill
Offline
Зарегистрирован: 05.09.2011

MaksMS пишет:

Да, конечно можно добавить выбор скорости в конструктор, но как будет время - сложно с одного проекта на старый проект вникать снова :)

ну пока можно проверить вариант с делителем на восемь при 9600, там соотношение гуманнее)

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

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

и еще. нафига с внутренним генератором вообще scopt? он же нафиг не нужен. нет кварца. усиливать не надо. глупо как то

axill
Offline
Зарегистрирован: 05.09.2011

Специально спросил на easyelectronic - советуют не более 9600 при работе от RC

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

Попробуй вот это  

atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)
atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard
 
 
просто добавь запись в board.txt
и прошивай...
 
_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

к стати у меня всё работает как писал Sirocco,

но MK ATmega328p-pu...

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

_EndWar_ пишет:

Попробуй вот это  

atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)
atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard
 
 
просто добавь запись в board.txt
и прошивай...
 

Да, вечером попробую. Также попробую вариант с 1 МГц, с делителем

В принципе сейчас задача - работают датчики DTH22, BMP180, DS18B20(4шт) ардуино ждёт сигнала с ком порта, слушая его, и при определённой команде пишет значения датчиков в UART. Как думаете, на такие задачи хватит 1МГц ?

axill
Offline
Зарегистрирован: 05.09.2011

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

1мгц хватит, при работе с вашими датчиками МК занят только обменом, основную работу делают датчики. Теже ds18b20 требуют почти секунду на одно измерение и эту секунду МК может или просто ждать или заниматься другими делами

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

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

по поводу 1Мгц - не уверен что все библиотеки будут работать корректно на этой частоте, но надо пробовать...

всё что пишу проверено в железе... 

P.S. Atmega328p-PU

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

_EndWar_ пишет:

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

Это о чём? Где стандартный?

_EndWar_ пишет:

всё что пишу проверено в железе... 

P.S. Atmega328p-PU

Atmega328p-PU отличается от Atmega328p-AU не только исполнением, а ещё чем-то внутри. Где-то писали, что для неё нужно по другому конфиг делать, так как там есть дополнительный режим энергосбережения. Или что-то там ещё, точно не помню, не вникал, так как не мой вариант. Так что железо однозначно разное.

Вот, вроде об этом:

Even though the ATmega328-PU in essence functions in the same way as the ATmega328P-PU, it has a different signature, and one that isn’t recognised by the Arduino IDE. (Behind the Scenes: The Arduino IDE actually uses a utility called AVRDUDE to programme the chips, so you’ll see error messages from avrdude. (Adafruit have a good tutorial on avrdude)

Отсюда: http://www.crash-bang.com/resource/bootload-atmega328/

axill
Offline
Зарегистрирован: 05.09.2011

вот мне дали интересную ссылку

если там посмотреть табличку для 8Мгц, то получим для 11520 ошибку 7.8%, что явно много, оптимально 38400. И для 1Мгц оптимально 4800, 9600 тоже многовато

http://www.wormfood.net/avrbaudcalc.php?postbitrate=9600&postclock=8&bit...

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

А чё такое UBRR ?

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

ATmega328-PU и ATmega328p-PU конечно отличаются "внутри"(разные сигнатуры), а вот Atmega328p-PU и Atmega328p-AU только снаружи...

Найдите три отличия:

ATmega328-PU

ATmega328p-PU

ATmega328p-AU

 

axill
Offline
Зарегистрирован: 05.09.2011

Sirocco пишет:

А чё такое UBRR ?

вам нужно это знать если вы захотите настраивать Serial на уровне регистров МК))

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

axill пишет:

Sirocco пишет:

А чё такое UBRR ?

вам нужно это знать если вы захотите настраивать Serial на уровне регистров МК))

Не, упаси Господь, не нужно мне этого.

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

вот стандартный бут... 

нужно добавить только эту запись, остальное в IDE уже есть...

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

проверил optiboot для atmega8 при разных фьюзах. работает и так и так. наверно до этого плохой контакт был

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

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

ide фьюзы прошивает во время загрузки бут...

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

да. но без предварительной так и не заработало. раза 3 пробовал

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

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

интересный факт...

это только с AU такое..?

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

_EndWar_ пишет:

вот стандартный бут... 

нужно добавить только эту запись, остальное в IDE уже есть...

Где есть? У меня в IDE нет такого файла ATmegaBOOT_168_atmega328_pro_8MHz.hex

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

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

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

Так. Времени уже мало остаётся, пора что-то решать. Подведу итоги: на данный момент нет способа прошить бут для работы atmega328p-AU без кварца с помощью ардуино ISP и ардуино IDE и получить таким образом рабочую ардуино. Я правильно понимаю?

Ok. Заказал десяток кварцев и кондёры. Придётся эту лабуду припаивать. Всяко надёжнее чем геморы с прошивками а потом ещё и ошибки на высоких скоростях. 

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

хз какие ошибки. у меня и мега8 и 328 обе на 115200 прошиваются и данные в uart на 115200 без проблем

но я прошивал черзе usbasp

axill
Offline
Зарегистрирован: 05.09.2011

usbasp не использует настройки скорости из boards.txt и шьет совсем по другому протоколу. А то что у вас данные в Serial сыпятся это еще не факт, что они там без ошибок. Просто одно дело текст посылать (причем получается в одну сторону), а другое дело с точностью до одного бита залить прошивку - эта операция куда более требовательная

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

usbasp. Есть у меня такая хрень, НО! Как-то давно я ей пробовал прошить атмегу, а не получилось. Что-то там с прошивкой самой usbasp, типа старая она, надо обновить. Так вот, какие есть способы обновить в usbasp прошивку? Как понимаю обязательно нужен второй usbasp?

axill
Offline
Зарегистрирован: 05.09.2011

Sirocco главное не запутаться в том о чем речь. Прошивка бутлоадера у тебя и так сделана через ISP, только вместо usbasp использована вторая ардуина, это без разницы.

но потом у тебя не заливаются скетчи

я так понял jeka_tm что у он и скетчи заливает через usbasp, правда не уверен, что верно его понял

а чем закончился эксперимент с бутлоадером на 1МГц?

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

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

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

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

другое дело когда голый новый камень

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

axill пишет:

а чем закончился эксперимент с бутлоадером на 1МГц?

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

avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x00
avrdude: verification error; content mismatch
 
А теперь это:
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
         Double check chip, or use -F to override this check.
А вот попытка использовать вместо ардуины USBasp совместно с ардуино IDE
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

 

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

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

нужно 2 программы

eXtreme Burner - AVR

Khazama AVR

во второй можно настроить частоту clk

а в первой удобно шить бутлоадер и фьюзы

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

Наступил на грабли и я,

собрал ардуино на 1284р (проект MoteinoMega), но слишком тщательно :), даже впаял радиомодуль SPI.

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

А тут встал, шьется и проверяется нормально, но не работает, считываю - считывается каша :(

неужели радиомодуль   мешается? 

Батник стандартный:

@set MK=m1284p
@set PRG=usbasp
@set AVRDUDEPATH=C:\avrdude\
 
REM FLASH
%AVRDUDEPATH%avrdude -c usbasp -p m1284p -U flash:w:dump_m1284p.hex 
 
REM FUSES 
%AVRDUDEPATH%avrdude -c usbasp -p m1284p -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m

Как думаете, выпаивать модуль или как?

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

))) а висят на то они на одном spi

или я нет?

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

Sirocco пишет:

axill пишет:

а чем закончился эксперимент с бутлоадером на 1МГц?

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

avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x00
avrdude: verification error; content mismatch
 
А теперь это:
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
         Double check chip, or use -F to override this check.
А вот попытка использовать вместо ардуины USBasp совместно с ардуино IDE
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

 

 

плохой контакт... 

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

jeka_tm пишет:

))) а висят на то они на одном spi

или я нет?

Вы ,  да :) на одном

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

)))) я пролезло. не мог не вставить

ну вот собственно в чем проблема. я про spi

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

)))))

попробую выпаять, отпишусь потом.

axill
Offline
Зарегистрирован: 05.09.2011

радиомодуль какой? NRF24? он не мешает прошивке

вообще-то по спецификации SPI slave устройство которое не имеет сигнал выбора должно держать все свои линии в третьем состоянии, то есть в высоомном (так называемое Z) то есть по сути как бы "оборванные провода"

у NRF24 со спецификацией все хорошо

это есть некоторые устройства (один из примеров - wiznet5100) у которых косяки в самом чипе, вот они без дополнительных устройств мешают.

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