Как вернуть прошивку через SPI после прошивки загрузчика

Тема в разделе "Микроконтроллеры AVR", создана пользователем Digital Fox, 8 апр 2019.

  1. Digital Fox

    Digital Fox Нуб

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

    Подключил обвязку (кварц, кондюки), прошил avrdude фьюзы от Uno. Использовал Uno в качестве ISP программатора.
    Загрузил свой скетч, потестировал, все ок.
    Дальше решил прошить загрузчик, для последующей прошивки через USB-TTL программатор через пины rx/tx, так как на SPI пинах будет висеть периферия, которую отключать от платы каждый раз для прошивки не вариант.
    Выбрал в Arduino studio "Записать Загрузчик" - выдал ошибку efuse 0xFD!=0x05.
    В boards.txt заменил на 0x05, так как с точки зрения efuse это равнозначные значения.
    Снова шью загрузчик - фьюзы прошились, начал шиться загрузчик, дошло до 100% после этого "ошибка прошивки загрузчика avrdude: verification error, first mismatch at byte 0x2dcc 0xff != 0xe6"

    Дальше любые попытки что-то записать по ISP выдавали ошибку сигнатуры 0x000000.
    Из командной строки:
    avrdude -patmega328p -carduino -PCOM6 -b19200
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.

    Но если сменить скорость:
    avrdude -patmega328p -carduino -PCOM6 -b115200
    avrdude: Device signature = 0x1e950f
    avrdude: safemode: Fuses OK

    Прошивка через USB-TTL выдает:
    avrdude: stk500_getsync(): not in sync: resp=0x30

    Светодиод на 13 пине постоянно горит (а вроде как должен моргать, потому что с загрузчиком грузится blink)

    Два вопроса:
    1. Что значит ошибка прошивки загрузчика verification error, first mismatch at byte 0x2dcc 0xff != 0xe6?
    2. Как вернуть контроллер на скорость 19200 и возможность шиться по SPI?

    Спасибо
     
  2. проводка паршивая
     
  3. AlexU

    AlexU Гуру

    Это не равнозначные значения. Не надо прошивать фьюзы, которые не используются.
    Эта ошибка говорит о проблемах прошивки памяти контроллера. Скорее всего память контроллера битая (хотя может Вы шьёте не правильно).

    Вы конечно много понаписали как шили, но по факту это мешанина обрывочных фраз с непонятным смыслом.
    Для начала необходимо разобраться с SPI -- что и как подключаете и какой командой шьёте?
     
  4. Digital Fox

    Digital Fox Нуб

    Подключаю по схеме
    [​IMG]
    Только у меня 328p-au.
    Питание разведено на все соответствующие контакты, включая avcc и aref

    Прошиваю из Arduino studio, программатор Arduino as ISP, пункт меню "Записать загрузчик"
     
  5. parovoZZ

    parovoZZ Гуру

    @Digital Fox - не надо мудрить. Абдурина IDE создает два файла - один с загрузчиком, другой без. Надо внимательно смотреть за ходом компиляции - там будут сообщения о месте хранения этих прошивок. Находишь прошивку с загрузчиком и шьёшь её. Всё. И прошивка, и загрузчик в МК. Фьюзы можно и отдельно выстаить - не надо ковыряться в каких-то неопнятных боардс бла бла бла и выставлять кривые параметры. Так можно и МК залочить, что без высоковольтного программатора его только выкинуть.
     
  6. AlexU

    AlexU Гуру

    И какая команда используется для прошивки загрузчика?
     
  7. Digital Fox

    Digital Fox Нуб

    Не могу ответить на этот вопрос, потому что сейчас до прошивки загрузчика не доходит, потому что Arduino studio выставляет скорость 19200, а камень сейчас читается на 115200.
    Собственно вопрос и был, как вернуть его на 19200, а не как прошить загрузчик
     
  8. AlexU

    AlexU Гуру

    Что это за штука?
    Если речь про Arduino IDE, то
    поставьте в настройках галочки "Показывать подробный вывод"...
     
  9. Digital Fox

    Digital Fox Нуб

    Это у меня стоит с самого начала. При прошивке сначала идет команда прошивки фьюзов и только потом загрузчика. Сейчас ломается на первой команде и команда прошивки загрузчика просто даже не запускается
     
  10. AlexU

    AlexU Гуру

    Ну так какая команда?
     
  11. Kamikadze

    Kamikadze Гик

    зачем вообще трогать фьюзы если не шариш в этом.
    И из кучи текста который вы написали в самом начале я не догнал возможно что-то, но на всякий случай. Выполняя команду "Записать загрузчик" Вы загружаете в прошиваемый МК(как раз таки и происходит установка фьюзов, т.е выбирая плату например ардуино Уно, и Нажимая "Записать загрузчик" IDE Сама конфигурирует вашь МК (например atmega328) Под обвязку плату ардуино Уно и Устанавливая частоту 16мгц (внешний резонатор).
    От самой платы (с помощью которой вы прошиваете МК), требуется одно, в нее нужно записать скетч из примеров arduino SPI и после у этого в инструментах Программатор выбрать Arduino SPI,
     
  12. b707

    b707 Гуру

    так в чем проблема? - шейте камень на 115200. раз он шьется. Откуда вообще вы взяли, что нужна скорость 19200 - это что-то очень медленно
     
  13. AlexU

    AlexU Гуру

    Проблема в том, что есть два одинаковых камня. Один с бутлоадером и прошивкой ArduinoISP, второй типа "голый". И вот, при помощи первого нужно прошить второй. И если не аккуратно пользоваться программой avrdude, то ни чего не получиться. Т.к. будут попытки прошить первый камень, а не второй. И вот первый камень-то как раз и шьётся на скорости 115200 (но его шить не нужно), а второй должен на 19200... Но вот не шьётся зараза...

    А т.к. автор, как партизанин, молчит какой командой он шьёт свои камни, то что-то конкретное подсказать пока нет возможности.