Выплескивание эмоций

Тема в разделе "Флудилка", создана пользователем alp69, 15 окт 2016.

  1. akl

    akl Гик

    хмм а может это потому что я не поставил галочку "программный уарт"? я думал в загрузчике по умолчанию должен какой-то уарт быть, иначе смысл [​IMG]
    нет опять туплю. там же есть аппаратный, значит должно работать. но не работает
     
    Последнее редактирование: 5 сен 2017
  2. Airbus

    Airbus Оракул

    Фьюзы какие?Лодыря где взяли?
     
  3. akl

    akl Гик

    я залил в атмегу8 загрузчик с внутренним генератором 8мгц вот оттуда http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik
    фьюзы тоже рекомендованные вставил, фьюзы там нормальные вроде, ничего сломаться не должно, загрузчик залился, но теперь ардуиновое ПО не видит эту плату, даже после многочисленных плясок с бубном - вставил все что надо в файл боардс (там оказывается теперь надо немного больше вписывать, чем раньше), вроде даже не ругается ни на что (при компиляции) - а через уарт не видит атмегу.

    у кого-то вообще получалось сделать ардуино из меги8 без внешнего кварца? есть четкий рецепт?

    на форумах пишут что у этих загрузчиков что-то со скоростью уарта не то, и что вообще там как-то кривовато.

    можно конечно по тупому сразу готовый скетч залить в виде хекса через ISP, но это может быть несколько более геморно, чем с бутлодером (т.к. его скорее всего придется несколько раз переделывать и перезаливать)
     
    Последнее редактирование: 5 сен 2017
  4. AlexU

    AlexU Гуру

    Вы вот качаете загрузчики от куда попало. А почему не хотите взять стандартный ардуиновский, который идёт в комплекте с Arduino IDE. Готовая прошивка (HEX-файл) правда скомпилирована для 16 МГц, но там же есть исходник с Makefile'ом -- поправьте частоту на 8 МГц (макрос F_CPU) и пересоберите загрузчик. И будет Вам счастье.
    Я так понимаю у Вас есть ISP-программатор и исходя из этого можно сделать вывод, что пытаясь залить загрузчик (да к тому же скачанный не понятно от куда), Вы создаёте себе больше проблем:
    1. уменьшаете доступную память микроконтроллера;
    2. уже потратили NN-ое количество времени на попытку заставить работать загрузчик.
     
  5. akl

    akl Гик

    :eek: а чо, так можно?

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

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

    akl Гик

    то есть это как? я тупо открываю этот мейк-файл текстовым редактором, вместо 16000000 пишу 8000000 (и фьюзы там же), и в ардуино делаю "загрузить загрузчик" выбрав нужный раздел (старые платы и мега8) ? или как?
     
  7. AlexU

    AlexU Гуру

    Да.
    Нужно произвести сборку. В системах типа Linux это делается простым вызовом команды 'make' в каталоге, где находится Makefile.
    В системах типа Windows может придётся указывать полный путь к утилите 'make' -- она где-то в недрах Arduino IDE должна быть. А так же В Makefile'е наверно нужно будет подправить путь к компилятору -- раскомментировать и изменить строчку #DIRAVR = /usr/local/avr (то же где-то в недрах Arduino IDE). В общем головная боль ещё та...

    UPD: хотя может в Arduino IDE это уже предусмотрели. Попробуйте просто изменить частоту в Makefile и временно переместить все *.hex файлы из каталога. Может Arduino IDE увидит, что нет прошивки и соберёт её. Да и не забудьте поправить boards.txt -- фьюзы, частоту и т.п.
     
  8. akl

    akl Гик

    а компилятор этот как называется? есть какой-то C:\Program Files\Arduino\arduino-builder.exe , который что-то делает при компиляции скетчей. это не он случайно?

    еще что-то делает Arduino\hardware\tools\avr/bin/avr-g++
     
  9. akl

    akl Гик

    чет непонятно. есть omake.bat и omake в каталоге бутлодеров оптибут и еще есть какой-то make.sh
     
  10. akl

    akl Гик

    в оптибут папке есть и свой мейкфайл в нем в том числе есть про мегу8

    Код (Text):
    # ATmega8
    #
    atmega8: TARGET = atmega8
    atmega8: MCU_TARGET = atmega8
    atmega8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
    atmega8: AVR_FREQ = 16000000L
    atmega8: LDSECTIONS  = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe
    atmega8: $(PROGRAM)_atmega8.hex
    atmega8: $(PROGRAM)_atmega8.lst

    atmega8_isp: atmega8
    atmega8_isp: TARGET = atmega8
    atmega8_isp: MCU_TARGET = atmega8
    # SPIEN, CKOPT, Bootsize=512B
    atmega8_isp: HFUSE = CC
    # 2.7V brownout, Low power xtal (16MHz) 16KCK/14CK+65ms
    atmega8_isp: LFUSE = BF
    atmega8_isp: isp
     
     
  11. AlexU

    AlexU Гуру

    Ради интереса посмотрел как работает Arduino IDE. Так вот при компиляции скетча создаются два файла прошивки -- один обычный, а второй вместе с бутлоадером (такое же название как у обычного, только оканчивается на '.with_bootloader.hex'). Вижу есть определённые проблемы со сборкой. Поэтому как вариант можно собрать пустой скетч (только обязательно поправить 'boards.txt' перед сборкой) для ATmega8. А потом собранную прошивку залить при помощи 'avrdude'. Вместе с пустой прошивкой зальётся и бутлоадер.
    в нём указан путь к 'make', но в тестируемой версии Arduino IDE (1.6.11) по указанному пути ничего нет. Может в Вашей версии будет.
    Это для Linux.
    Какой именно загрузчик используется для микроконтроллера нужно смотреть в boards.txt. Для моей версии Arduino IDE -- это 'atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex' в подкаталоге 'bootloaders'.
     
  12. AlexU

    AlexU Гуру

    Кстати optiboot бутлоадер меньше по размеру, чем бутлоадер из atmega8. Но тут с фьюзами надо быть внимательным -- нужно правильно настроить размер секции бутлоадера.
     
  13. akl

    akl Гик

    у меня тоже такой используется с платами NG.
    то есть я правильно понял - тупо беру, в мейкфайле заменяю на нужнфе фьюзы и частоту, и выжимаю из ардуино ИДЕ хекс бутлодера (с каким-нибудь блинком или пустым скетчем) и всё?
    или еще придется редактировать боардс
     
  14. AlexU

    AlexU Гуру

    Если не хотите собирать буттлоадер через 'make', то можно получить прошивку с бутлоадером в комплекте. Для этого нужно правильно отредактировать файл boards.txt (задать частоту, фьюзы и т.п.) -- отредактировать секцию для соответствующего контроллера. В Arduino IDE выбрать соответствующий контроллер и произвести сборку пустого скетча (самая левая кнопка в виде галочки). Если в настройках Arduino IDE поставите галочки напротив "Показать подробный вывод: компиляция загрузка", то увидите в какой каталог среда компилирует прошивку. Переходите в этот каталог и наблюдаете два *.hex файла.
    Никаких Makefile'ов при этом править не надо.
     
  15. akl

    akl Гик

    то есть ардуино при компеляции возьмет фьюзы и частоту из боардс.тхт, и под них переделает соответствующий стандартный бутлодер (в данном случае ATmegaBOOT-prod-firmware-2009-11-07.hex )?
    выглядит слишком просто
     
  16. Airbus

    Airbus Оракул

  17. AlexU

    AlexU Гуру

    Может быть ни чего не получиться. Я советую отказаться от Arduino IDE и взять нормальную среду программирования. Что она там делает и как она собирает я не знаю. Может она просто копирует готовый hex в прошивку -- тогда ни чего не получится.
    Есть же нормальные среды, например та же Atmel Studio, зачем издеваться над собой?
     
  18. akl

    akl Гик

    я слишком тупой даже для ардуино, более сложные вещи на всяком там настоящем си не затащу
     
  19. akl

    akl Гик

  20. akl

    akl Гик

    кстати, в том способе для современных версий ИДЕ чтобы компилилось должно вот так выглядеть

    a8_8MHz.name=ATmega8-mini (8 MHz internal)
    a8_8MHz.upload.tool=avrdude
    a8_8MHz.upload.protocol=arduino
    a8_8MHz.upload.maximum_size=7680
    a8_8MHz.upload.speed=115200
    a8_8MHz.bootloader.low_fuses=0xa4
    a8_8MHz.bootloader.high_fuses=0xdc
    a8_8MHz.bootloader.path=optiboot
    a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex
    a8_8MHz.build.mcu=atmega8
    a8_8MHz.build.f_cpu=8000000L
    a8_8MHz.build.board=AVR_NG
    a8_8MHz.build.core=arduino
    a8_8MHz.build.variant=standard

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