Не прошивается атмега328 по воздуху
- Войдите на сайт для отправки комментариев
Здравствуте. Делаю устройство, отладил на ардуине, теперь вытравил плату, впаял атмегу328р-au, кварц 16мгц + обвязка для стабильности. Залил бут от ардуино уно, к сериал подключен hc-05, скорость выставлена 115200. Ресет подтянут через 10к на +5, и идет к коллектору 3904. Эмитер на землю, база на управляющий пин. Работает все как надо, дисплей, блютуз принимает и отсылает данные как надо, сброс через транзистор работает. Не работает прошивка через блютуз - не синхронизируется. Реализовано следующим образом: шлю кодовое слово в сериал, вся программа основная перестает работать, начинается постоянная проверка на входящие данные и отвечает, код как в примере.
for( int i=0; i<100; i++ ) // повторить проверку
{
if( Serial.read()=='0' && Serial.read()==' ' )
{
Serial.write(0x14); // ответить avrdude.exe
Serial.write(0x10); // для синхронизации
digitalWrite(uploadpin,HIGH); // подтянуть ресет к земле
}
delay(10);
}
После попытки прошивки, устройство перезагружается, но не шьется. Таким методом у меня прекрасно шьется оригинальная ардуина, китайская ардуина с кварцем на 12мгц. Этим конкретно модулем hc-05и этим же транзистором для сброса(снял с рабочей платы ардуино чтобы сузить круг подозреваемых). Бут залит от уно, фьюзы проверил, как в уно. В чем может быть дело?
Этот же скетч лью в нормальную ардуину - все прошивается. То есть проблема не в скетче, не в модуле блютуз, не в управляющем транзисторе. Чем существенным отличается ардуина от просто обвязанного контроллера в плане прошивки?
А вы как заливали скетч для проверку блютуса? Программатором по SPI?
Есть у вас TTL USB переходник? Вместо блютуса его подключить и прошить получится?
Сдается мне, что что-то намудрено с ресетом. Не слишком долго он прижат к земле? Можно ли так как Вы
программно эмулировать DTR - я не уверен.
В целом, надо сначала добиться нормальной загрузки через TTL USB, пусть даже с ручным тыканием ресета, а дальше разбираться с эмуляцией DTR на ресете, как мне кажется
Програматор китайский usbasp зашивает через SPI. Насчет усб-ттл интересная идея, есть ардуины же, ща попробую смонстрячить переходник и зашить силами переходника.
Сдается мне, что что-то намудрено с ресетом. Не слишком долго он прижат к земле?
А сколько он должен быть прижат к земле? Ровно чтобы хватило на перезагрузку а там бутлоадер должен подхватить данные с уарта и прошить?
Подключил юсб-уарт из ардуины к моему устройству, пробовал шить - не получается. Ресет в ручную тыкал, так ни разу и не прошил. Делал так: нажимаю залить в ардуино иде, пока идет компиляция прижимаю ресет на землю, начинается загрузка - отпускаю. Когда начинается загрузка, тх юсб-уарт, если держать ресет прижатым, моргает 3 раза. Если за эти 3 моргания не отпустить ресет, иде призадумывается, а потом говорит что програматор занят. Если ресет отпустить после первого моргания, еще дважды с той же частотой вспыхнет и рх и тх переходника и иде быстро выдает ошибку синхронизации. Если отпустить ресет после второго моргания, и рх и тх вспыхнет вместе только 1 раз и иде так же быстро скажет ошибка синхронизации. Если успеть отпустить ресет до того, как тх успеет вспыхнуть хоть раз, то видимо бут отрабатывает, а данные еще не успевают поступить и начинается основная программа. Что может быть не так?
Методом исключения приходим:
1) неправильно работает бутлоадер или не работает вовсе
2) проблема в интерфейсе
3) все работает, просто я не вовремя отпускаю сброс(не верю)
Возьмите другую ардуину, шьющуюся через USB нормально и попробуйте прошить своим эмулятором через RX-TX и ручной ресет.
Если надо - я могу посмотреть осциллографом что на DTR у промышленного USB TTL
Возьмите другую ардуину, шьющуюся через USB нормально и попробуйте прошить своим эмулятором через RX-TX и ручной ресет.
Если надо - я могу посмотреть осциллографом что на DTR у промышленного USB TTL
Вот в помощь - как жать резет
Методом исключения определил проблему. Интерфейс в норме, ресет в норме. Просто бутлоадера не было. Только сейчас догадался, что программатор не разбирается где там бут а где там основная программа, он просто льет хекс. Я зашил сначала загрузчик. Потом основную программу. Угадайте, куда делся загрузчик? Правильно, нет его там больше.
Надо было зашить загрузчик, а потом уже через сериал шить. Что я и сделал сейчас - работает изумительно :)