Одноразовость загрузчика на ATMEGA328
- Войдите на сайт для отправки комментариев
Втр, 23/02/2016 - 12:43
Сжёг плату arduino, заменил на ней ATMEGA328, прошил загрузчик, и всё было бы хорошо, но
Заливаю скет, он там прекрасно работает, но повторно залить уже не получается, плата ведёт себя так, как буд-то замкнуто RESET на GND, нужно снова шить загрузчик.
Разбираясь в вопросе пришёл к выводу, что возможно не работает autoreset, но так не понял до конца что это такое и как он реализуется, как его можно сэмулировать, подать как-то землю/напряжение на RESET atmega?
Какие есть идеи по диагностике проблемы?
Лью скетч вставив атмегу в ардуину или по схеме https://www.arduino.cc/en/uploads/Tutorial/ArduinoUSBSerial.png
Так же игралcя с fuse флагами, с ними всё ок, пробовал версии IDE 1.0.1 и 1.6.7
Так все таки скетч заливается первый раз в плате через USB или через проводки? Вангую, что неверно выбрана плата или неработающий загрузчик.
Первый раз прекрасно заливается(через usb и проводки), после прекрасно работает, но при попытке залить повторно пишет что программатор не отвечает, ественно пытался вынимать/втсалять кабель, даже запускался на windows, там тоже самое.
При этом есть ещё похожая плата, она прекрасно работает, но в ней atmeta не съёмная, и проверить не получистя через неё.
Загрузчики и платы опять же, пробовал разные, но в основном пытаюсь Duimilanova/ATMEGA328, как в ин струкциях, и плата/контроллер как раз именно такие
Боюсь, что reset здесь не при чем. FUSE дергать не надо, при заливке загрузчика они берутся из board.txt, те которые нужны. Вы загрузчик как заливаете?
собираю схему https://www.arduino.cc/en/uploads/Tutorial/BreadboardAVR.png
на ардуине прошито Arduino as ISP, пограмматор Arduino as ISP, плата Duemilanove, ATmega328
Далее Tools > Burn Bootloader(Инструменты -> прошить загрузчик)
Все верно, мигают три светика, докладывает, что все ОК. Я их себе так и шью, только UNOвские. Если устанавливается в плату и первый раз нормально прошивается скетч, тогда не знаю.
Кстати, при прошивке через ISP, у меня при первом нажатии стабильно выдает ошибку, при втором все шьется.
Через Arduino as ISP можно заливать загрузчик, но может можно как-то и скетчи шить?
Подозреваю что может быть плата не исправна, хотелось бы её полностью исключить из процесса заливки скетча
Neschur, если внимательно посмотреть, то можно найти в меню пункт "Загрузить через программатор".
Спасибо!
Через программатор загружается много раз, но я так понял оно стирает загрузчик?
Прошить в обход загрузчика - upload using programmer. Только по-идее где-то в фузах ставится размер, т. о. длина загрузчика и адрес запуска, по-умненькому - надо вернуть в них нули на место, тогда и максимальный объём флеша будет полностью 32768 а не как в boards.txt 30720. Но лично я не трогаю (да и не знаю, где) потому что мне никогда не бывал нужен полный объём флеша, и работает.
Чтобы USB2Serial переходник сбрасывал плату перед заливкой программы (в варианте с загрузчиком), надо ставить между DTR переходника и Reset платы конденсатор 1 мкФ последовательно. Он сразу виден, например, в схеме подключения BT-Serial удлиннителя (32й вывод HC05):
Возможно такое м.б. если прошивать загрузчик к примеру с помощью AVRISP . В IDE выбрать что шить им . прошить. А потом при заливке скетчей через rx tx dtr , случайно забыть в IDE поменять тип программатора на обычный.
std, спасибо, я сам склонялся к тому что не работает автосброс, точнее что он сломался, проверить конденсатор который имеется пока неполулось, муьтиметра под рукой нет. Нодо будет копать в эту сторону.
Тем более таки удалось прошивать, если зажать кнопку ресет и отпустить перед самой прошивкой. Хотя я это точно, делал раньше, и тогда не получалось.
Спасибо!
Через программатор загружается много раз, но я так понял оно стирает загрузчик?
Если объем скетча меньший, то загрузчику ничего не сделается. Только, если шьем через ISP, зачем он вообще нужен?
Сам правда, пока не достиг просветления, как дуиноISP прошить требуемые fuse и не лить загрузчик.((((
Сам правда, пока не достиг просветления, как дуиноISP прошить требуемые fuse и не лить загрузчик.((((
Если я верно понял, то как написали выше, можно "Загрузить через программатор" скетч, тогда будет без загрузчика
Насчёт fuse есть полезный каклькулятор http://www.engbedded.com/fusecalc/
UPD: Видно я понял, что не верно понял
Сам правда, пока не достиг просветления, как дуиноISP прошить требуемые fuse и не лить загрузчик.((((
Если я верно понял, то как написали выше, можно "Загрузить через программатор" скетч, тогда будет без загрузчика
Насчёт fuse есть полезный каклькулятор http://www.engbedded.com/fusecalc/
UPD: Видно я понял, что не верно понял
Все верно, только когда нажимаю "Прошить загрузчик" он прошивает и требуемые fuse, а как им просто их прошить без загрузчика, велика тайна, по крайней мере для меня.((((
Подозревая что тут надо шить через консоль
Из одной инструкции
прошивка загрузчика
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Прошивка скетча
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
позодревая что можно сделать что-то типа
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:sketch.hex -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Также думаю может помочь в этом AVR Studio
Подозревая что тут надо шить через консоль
Из одной инструкции
прошивка загрузчика
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Прошивка скетча
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
позодревая что можно сделать что-то типа
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Эт можно, но не спортивно, да и мотивации для изучения пока нет.)))) Все и так помещается.
bwn, через Arduino IDE фьюзы без загрузчика нельзя прошить. Отдельно фьюзы шьются либо через консоль, либо через любую GUI-оболочку для avrdude (коих огромное множество). Ничего сложного в этом нет, главное правильно их выставить ;-)
bwn, через Arduino IDE фьюзы без загрузчика нельзя прошить. Отдельно фьюзы шьются либо через консоль, либо через любую GUI-оболочку для avrdude (коих огромное множество). Ничего сложного в этом нет, главное правильно их выставить ;-)
Спасибо, утешил. Думал, может тупой. Появится причина, буду копать.)))