Загрузка бутлоадера в ATmega328p

Quasar
Offline
Зарегистрирован: 14.02.2019

Приветствую

Проблема в следующем. Есть Arduino UNO, мк погиб в опытах. Прикупил 5 мк ATmega328p. Все оказались пустыми. Имеется дуина Нано. Решил залить загрузчик. Залил в Нану ArduinoISP, сделал все как велели гуру ютуба и форумов. Подключил Nano к UNO, програматор поставил в IDE "Arduiono as ISP". Результат ошибка:  "avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10"

Закрались подозрения что МК просто дохлые, попробовал залить скеч blink, переконвертировав его в НЕХ и записав програматором ChipProg-40, сунул в плату, работает но медленно, 1МГц. 

Затем пробова залить через програматор нарытый файл ATmegaBOOT_168_atmega328.hex, оказалось это не то(вычитал что нужен другой файл), optiboot_atmega328.hex один из авторов утверждает что это прошивка. Повторил попытку, результата ноль. Может я что-то не то делаю при записи, хотя там настроек не так много.

Нарыл програму SinaProg 2.1.1, повторил попытку через нее. програматор указан как AVRISP, скорость 19200, фьюзы взял из boards.txt (high_fuses=0xDE, low_fuses=0xFF, extended_fuses=0xFD, unlock_bits=0x3F). Результат тот же.

Есть подозрение не дружится из-за того что Нано работает на 10Мгц и имеет старый загрузчик ATmega328p.

Может кто подскажет что-то дельное.

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Может в ней фьюзы под внешний кварц ?

b707
Offline
Зарегистрирован: 26.05.2017

Quasar пишет:

Может кто подскажет что-то дельное.

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

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

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. Нужно правильно собрать программатор из твоей Нано. То есть подключить светодиоды. как написано в скетче "ArduinoISP"

// Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
//

Эти огонечки помогут тебе разобраться - какая-никакая - а диагностика!

Потом нужно обязательно подготовить электролит на 10мкФ и подключать его между +5 и Reset Наны во время программирования другого контроллера. При открытии соединения по COM порту дергается DTR, который ресетит Нану, чтобы этого избежать, перед програмированием другого контроллера защищаем Ресет. Само-собо, когда прошиваем саму Нану - конденсатор убираем.

Не забыть про правильные соединения: MOSI MISO SCK GND +5 - эти все один в один, и пин 10 от Наны на Ресет нового МК.

2. в строке:


#define SPI_CLOCK 		(1000000/6)

пишем не 1000000/6, а поменьше... можно 128000/6.

Это потому, что с завода МК идут настроенными на 1 МГц (внутр 8МГц с делителем на 8), и программатор может не успеть... чаще - успевает, но может и не успеть. Тебе спешить некуда - пусть шьет медленнее. ;))

===========================

Вот всё это сделай и расскажи. Сделай всё, что я написал и больше НИЧЕГО, плз. Никакой самодеятельности и ютубничества.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Мне, в свое время, получилось проще купить плату USB-ASP и шить бутлоадер через нее: через ардуину - что-то не пошло, разбираться не стал.

Quasar
Offline
Зарегистрирован: 14.02.2019

Ваш совет мне помог. Благодарю.

Напишу по пунктам, что делал, мб кому-нибудь пригодится.

1. залил в Нану ArduinoASP (последовав совету поменял на 128000/6)

2. подружил нану с уно. (сперва пин наны, потом пин уно) 10 - reset, 11 - 11, 12 - 12, 13 - 13. Можно так "Не забыть про правильные соединения: MOSI MISO SCK GND +5 - эти все один в один, и пин 10 от Наны на Ресет нового МК." - принципиального значения не имеет, электрически они связаны, но распиновывать менее удобно

3. подключил кондер 10мкФ  на +5 и на пин Наны reset.

4. подключил светодиоды индикации.

5. В ArduinoIDE поставил Arduino/Genuino UNO, порт указал тот на котором висела Нано.

6. Програматор Arduino as ISP

7. Записать загручик.

Для экспиремента попробовал на макетке, прилепил к микросхеме внешний генератор 16Мгц + 2 кондера 22пФ, распиновал согласно даташиту на ATmega328p и сделал все по предыдущим 7 пунктам (номера пинов УНО не совпадаю по номерам МК, будте внимательны). Так тоже работает.