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

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

Как это понимать? Как пользоваться программный юартом?

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

Поставить галкочку у программного уарта и выбрать выводы м/к для rx и tx

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

А как тогда обращаться к аппаратному? Имею ввиду в коде.

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

В каком коде ? Это загрузчик же - тут в код не надо лезть..

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

То есть получается что если я буду юзать мегу 8-ю то аппаратный юарт отключится а программный активируется?
И что значит галочка светодиод загрузчика?

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

Можно для загрузчика одни выводы использовать для UART (программный) ,а для прошивки - другие(аппаратный).Можно наоборот. Для адруино иде есть библиотеки софт уарт.

Светодиод загрузчика - это на 13 ноге ардуина мигает при запуске м/к

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

MaksMS, добавь пожалуйста возможность включения и отключения BOD'а.

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

Можно конечно , но смысл ? Это просто делается на фьюзах , можно вбить текущие фьюзы в калькулятор и выбрать нужные параметры

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

Сделай пожалуйста, твой сайт ведь будут читать новички.

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

И в имени профиля чтобы писало к примеру "no BOD" или " 4.7 V BOD".

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

Вот заснял видео по зашивке загрузчика, постарался рассказать все что знаю.

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

_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013
Важно!!! С помощью данного конструктора с генерировал вот этот бутлоадер:
 
Размер прошивки: 500 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 32 kHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_32kHz_63_de_5.hex
 
Блок файла boards.txt для Arduino IDE: 
 
a328p_32kHz.name=atmega328p (32 kHz) 
a328p_32kHz.upload.protocol=arduino 
a328p_32kHz.upload.maximum_size=32256 
a328p_32kHz.upload.speed=1200 
a328p_32kHz.bootloader.low_fuses=0x63 
a328p_32kHz.bootloader.high_fuses=0xde 
a328p_32kHz.bootloader.extended_fuses=0x5 
a328p_32kHz.bootloader.path=optiboot 
a328p_32kHz.bootloader.file=a328p_32kHz_63_de_5.hex 
a328p_32kHz.build.mcu=atmega328p 
a328p_32kHz.build.f_cpu=32000L 
a328p_32kHz.build.core=arduino 
a328p_32kHz.build.variant=standard 
 
Прошивка через Arduino: avrdude -c avrisp -P COM1 -b 19200 -p atmega328p -U flash:w:a328p_32kHz_63_de_5.hex -U lfuse:w:0x63:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
Прошивка через USBasp: avrdude -c usbasp -p atmega328p -U flash:w:a328p_32kHz_63_de_5.hex -U lfuse:w:0x63:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
 
После прошивки им кристалла atmega328p через arduinoISP получил - "avrdude: Yikes!  Invalid device signature. Double check connections and try again, or use -F to override this check."
 
Тот-же результат даёт и прошивка:
 
Размер прошивки: 500 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 256 kHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_256kHz_e3_de_5.hex
 
Блок файла boards.txt для Arduino IDE: 
 
a328p_256kHz.name=atmega328p (256 kHz) 
a328p_256kHz.upload.protocol=arduino 
a328p_256kHz.upload.maximum_size=32256 
a328p_256kHz.upload.speed=4800 
a328p_256kHz.bootloader.low_fuses=0xe3 
a328p_256kHz.bootloader.high_fuses=0xde 
a328p_256kHz.bootloader.extended_fuses=0x5 
a328p_256kHz.bootloader.path=optiboot 
a328p_256kHz.bootloader.file=a328p_256kHz_e3_de_5.hex 
a328p_256kHz.build.mcu=atmega328p 
a328p_256kHz.build.f_cpu=256000L 
a328p_256kHz.build.core=arduino 
a328p_256kHz.build.variant=standard 
 
Прошивка через Arduino: avrdude -c avrisp -P COM1 -b 19200 -p atmega328p -U flash:w:a328p_256kHz_e3_de_5.hex -U lfuse:w:0xe3:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
Прошивка через USBasp: avrdude -c usbasp -p atmega328p -U flash:w:a328p_256kHz_e3_de_5.hex -U lfuse:w:0xe3:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
 
два кристалла полумёртвые - больше не прошиваются, при попытке обращения через SinaProg выдаёт: "avrdude: Device signature = 0x000000"
 
Прошивка бутлоадера: 
 
Размер прошивки: 502 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 8 MHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_8MHz_e2_de_5.hex
 
Блок файла boards.txt для Arduino IDE: 
 
a328p_8MHz.name=atmega328p (8 MHz) 
a328p_8MHz.upload.protocol=arduino 
a328p_8MHz.upload.maximum_size=32256 
a328p_8MHz.upload.speed=115200 
a328p_8MHz.bootloader.low_fuses=0xe2 
a328p_8MHz.bootloader.high_fuses=0xde 
a328p_8MHz.bootloader.extended_fuses=0x5 
a328p_8MHz.bootloader.path=optiboot 
a328p_8MHz.bootloader.file=a328p_8MHz_e2_de_5.hex 
a328p_8MHz.build.mcu=atmega328p 
a328p_8MHz.build.f_cpu=8000000L 
a328p_8MHz.build.core=arduino 
a328p_8MHz.build.variant=standard 
 
Прошивка через Arduino: avrdude -c avrisp -P COM1 -b 19200 -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
Прошивка через USBasp: avrdude -c usbasp -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m
 
при попытке залить "Blink": "avrdude: stk500_getsync(): not in sync: resp=0x00", но кристалл живой и другие буты шьются и работают...
 
Кроме этих трёх пробовал:
 
Размер прошивки: 502 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 1 MHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_1MHz_62_de_5.hex
 
Размер прошивки: 502 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 12 MHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_12MHz_ff_de_5.hex
 
Размер прошивки: 502 байт.
Микроконтроллер: atmega328p
Частота микроконтроллера: 16 MHz
Скачать файл hex или через консоль Linux: wget http://designer.homes-smart.ru/boot/out/a328p_16MHz_ff_de_5.hex
 
полёт нормальный - "Blink" мигает исправно, на глаз частота моргания верная...
 
Внимание вопрос!!! Что делать с теми двумя микроконтроллерами которые: "avrdude: Yikes!  Invalid device signature. Device signature = 0x000000".?! Ответ хотелось бы получить не теоретический, а от человека кто сталкивался с таким и справился на практике... но это в ИДЕАЛЕ, а вообще буду рад любой помощи...
 
MaksMS
Offline
Зарегистрирован: 11.03.2013

Логично, что на очень низкой частоте микроконтроллера программатор не будет прошивать его, необходимо программатор заставить снизить частоту прошивания . у avrdude это делается путем добавления параметра -B20 и выше

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

avrdude -c avrisp -P COM1 -b 19200 -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m     Ткни пож пальцем куда -В20 ставить

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

Все очень просто



avrdude -c avrisp -P COM1 -b 19200 -p atmega328p -U flash:w:a328p_8MHz_e2_de_5.hex -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0x5:m -B20

-B20 возможно и больше надо поставить, где нибудь до 100-200 можно увеличить.

Хотя и теоретически очень низкая частота поддерживается загрузчиком ,но не проверялась. Тем более 32кгц, Даже точно не помню реальна ли она, возможно 256 кгц идет в обход делителя на 8 и не получить 32кгц никак.

А вот загрузчик на 8мгц проверялся и проблем не было. Странно, проверю все..

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

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

USBasp под рукой нет ? Просто не пробовал прошивать на низкой скорости прошивку используя ардуину.

И опцию -F нет смысла использовать, тут проблема с конектом микроконтроллера..

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

без F сразу даёт ошибку...

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

_EndWar_ пишет:

без F сразу даёт ошибку...

Логично , тут надо замедлять программатор- т.к. м/к замедленн до упора ,а не игнорировать ошибки через F.

И на скрине не вижу использования параметра  -B...

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

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

А если все же увеличить число вместо 20 до 100..200 ??

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

думаю проблема вот в чём...

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

пробовал 2... 200... 300... 1200... 2400... 9600...

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

Он не может считать сигнатуру устройства, логично!

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

Может кто поможет разобраться со схемой что бы самому такой сваять для 28 dip

http://mightyohm.com/blog/products/hv-rescue-shield-2-x/

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

Да не нужен тут HVP ,надо просто найти правельный программатор.. HVP актуален только когда фьзы выставлены так,что через SPI не программирует..

ПС: тут кнопка редактировать есть у сообщений..

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

Да нужен нужен... SPI его уже не увидит если с фьюзами генератора накасячино...))) проц не запустится без определённого такт сигнала.... а сигнал тот тю тю... Нету... чем искать "правильный" програматор проще

Соброть

http://mightyohm.com/blog/2008/09/arduino-based-avr-high-voltage-program...

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

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

Да, действительно , этот простой вариант HV P , я встречал схемы посложнее и там надо м/к лечущий прошивать программатором ,т.к. использовались все ноги

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

ща пробовать буду...

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

Всё готово парни!!! Вот мой HVP - высоковольтный программатор... 

точнее тут два - HVP из Arduino (слева) и SPI из самодельного arduino (справа)...

было так:

avrdude: Yikes!  Invalid device signature. 

avrdude: Device signature = 0x000000

Double check connections and try again, or use -F to override this check.

стало так:

avrdude: AVR device initialized and ready to accept instructions
 
avrdude: Device signature = 0x1e950f
 
avrdude: safemode: Fuses OK
 
avrdude done.  Thank you.
 
_EndWar_
_EndWar_ аватар
Offline
Зарегистрирован: 05.08.2013

Бут:

soft uart. Порт D , RX-6 ,TX-7.

Размер прошивки: 508 байт.

Микроконтроллер: atmega328p

Частота микроконтроллера: 1 MHz

не работает...

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

Вот никто мне ещё не отписался на счет софт уарт .. я его толком не тестил , надо проверять на разных частотах и могут быть ошибки типа перепутаны RX с TX

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

конечно пробовал менять местами RX-TX...

этот тоже не работает...

soft uart. Порт C , RX-5 ,TX-4.

Размер прошивки: 508 байт.

Микроконтроллер: atmega328p

Частота микроконтроллера: 8 MHz

кстати и хардовый уарт с этими бутами непашут

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

ща попробую с внешними кварцами

soft uart. Порт D , RX-6 ,TX-7.

Размер прошивки: 508 байт.

Микроконтроллер: atmega328p

Частота микроконтроллера: 16 MHz

неа... не пашет...

 

Ты друг убрал бы не работающие (soft uart) и явно вредные функции (Watchdog) из конструктора... а то сколько ещё людей пострадает...

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

Ну на счет soft uart -там написано что функция тестовая, хотя разобратся ещё надо чего с ней не так..

А вот насчет Watchdog да, возможно и смысла нет в нем, даже не потому что можно "убить" м/к - это исправляется нормальным программатором ,который поддерживает разную скорость прошивки. Кстати , на низкой скорости используется тоже soft uart, который получается не работает и в ручном режиме.

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

Какие действия нужно сделать чтоб заставить atmega328p заработать без кварца? Из прошивальщика только второй ардуино.

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

Интересный вопрос... ))

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

да вот только давали в ветке про мегу8 бутлоадеры на 8 168 и 328 мега на внутреннем кварце

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

Ну сделал так:

Залил получившийся бутлоадер в атмега328р через ардуино. Сказал что бут успешно загружен.

Пробую залить скетч в эту новоиспеченную ардуинку, а она ошибку выдаёт: avrdude: stk500_getsync(): not in sync: resp=0x00.

Ни с кварцем ни без него не работает. В настройках выбираю новую плату.

Что не так?

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

Reset... Во время компиляции кнопка ресет должна быть нажата... Перед загрузкой отпускаем

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

 

_EndWar_ пишет:
Reset... Во время компиляции кнопка ресет должна быть нажата... Перед загрузкой отпускаем

Пробовал. Не прокатывают эти бутлоадеры. Со стандартными всё норм. Есть ещё варианты где взять без кварца, но рабочие?
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что то у меня сильные сомнения что дело не в бутлоадерах, а в том кто их неизвестно как использует

 

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

_EndWar_ пишет:
Reset... Во время компиляции кнопка ресет должна быть нажата... Перед загрузкой отпускаем

если Reset подключен на DTR то ничего вручную делать не нужно

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

Sirocco пишет:

Пробовал. Не прокатывают эти бутлоадеры. Со стандартными всё норм. Есть ещё варианты где взять без кварца, но рабочие?

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

вы или фьюзы не те прошили или провода не верно подключили к МК

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

axill пишет:

Sirocco пишет:

Пробовал. Не прокатывают эти бутлоадеры. Со стандартными всё норм. Есть ещё варианты где взять без кварца, но рабочие?

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

вы или фьюзы не те прошили или провода не верно подключили к МК

Какие нафиг фьюзы..?

Я ж ясно спросил:

Sirocco пишет:

Какие действия нужно сделать чтоб заставить atmega328p заработать без кварца? Из прошивальщика только второй ардуино.

Нет у меня программаторов. Я ардуиной шью. И сам не сочиняю ничего, какие есть настройки в приведённых примерах, такие и ставлю. 

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

Вообще шил я давно как-то бутлоадер для атмега328P, всё работало. Только никак не могу найти тот ресурс.

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

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

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

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

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

это только прошивки. нужно еще фьюзы и запись в boards.txt

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

Ну да...