Прошивка atmega8a-au через spi с помощью Arduino
- Войдите на сайт для отправки комментариев
Пнд, 04/11/2013 - 14:29
Здравствуйте!
У меня имеется в наличии вышеуказанный чип. Я попытался залить бутлоадер через SPI Arduino Nano по следующей схеме:
Всё вроде подключено верно, выбран COM порт, выбрана плата Arduino NG or older w/Atmega8. программатор Arduino as SPI.
Но вот компилятор (Arduino 1.0.5) не знает такой микросхемы и при потытке записать загрузчик выдает следующее:
avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.
В гуглопоиск говорит что это совместимая микросхема, и прошиться не дает простая защита.
Я понимаю что очевидным решением является запустить avrdude с флагом, но сделать это правильно - сам я не в силах.
Поэтому прошу помощи у опытных людей в прошивке данной микросхемы, т.к. боюсь по незнанию убить микросхему.
Поставьте в настройках галочку Подробный вывод при: загрузке и посмотрите какую сигнатуру читает avrdude.
Поставьте в настройках галочку Подробный вывод при: загрузке и посмотрите какую сигнатуру читает avrdude.
Полный вывод http://rusfolder.com/38671152
PS.
Вставьте лог как код.
Ничего не прошьется. Проверяйте соединение.
На ресет дуины конденсатор ставили или ресет подтягивали к +5V ?
На ресет дуины конденсатор ставили или ресет подтягивали к +5V ?
Наоборот убрал. А ненужно было?
Вот, Вы были правы, проверил соединения, теперь сигнатура другая.
UPD сигнатура снова с нулями.
ресет подтяните к питанию резистором 10кОм
10 кОм мало, да и он и так уже таким номиналом подтянут, надо 100 Ом. Это необходимо что бы при загрузке не сбрасывался программатор - дуина.
Так же обязательно к меге8 подключите кварц.
Так же обязательно к меге8 подключите кварц.
Поставил родной резистор меджу Reset и 5В. - то же самое.
Подключил к другой такой же микросхеме - то же самое.
С кварцем на 16МГц пробовал шить в первый разы, но потом снял (на схеме его небыло).
Сейчас подпаяю его.
Прогресс!
Премного Вам благодарен, без Вас бы ничего не вышло :)
Подскажите пожалуйста, а каким образом можно в коде менять частоту кварца или переключаться на внутренний ? Или это возможно только с "прямой загрузкой" без бутлоадера?
Только при прошивании - называется это фьюз-битами.
Только при прошивании - называется это фьюз-битами.
Нашёл в файлике boards.txt
Полагаю что отсюда фьюз-биты и вытягиваются.
Если это так, то запись atmega8.build.f_cpu=16000000L указывает на частоту кварца 16МГц. А как понять установка это на внутренний или внешний кварц?
http://www.engbedded.com/fusecalc/
http://www.engbedded.com/fusecalc/
Спасибо, я понял.
Они кодируются и прописываются в качестве параметра avrdude.
Столкнулся со следующей проблемой:
МК прекрасно чувствует себя после прошивки бутлоалера.После первой заливки скетча все так же хорошо работает.
А вот после начинается ужас. При перезаписывании уже имеющегося скетча все светодиоды весело мигают, но в конце на этапе проверки выбивает ошибку.
Самое интересное - если изменить в тексте скетча хоть один символ, то ошибка уже другая -
После заливки компилятор пишет "Загрузка выполнена", и сразу под ним текст ошибки.
Я думал что тут дело в reset меги8 - подтянул его резистором на 10кОм к 5В - ошибка всё та же.
В случае если залить бутлоадер заново, а затем залить скетч - то все прекрасно работает.
Полный код, который выдает при попытке загрузки скетча
вы каким железом заливаете скетч в эту новообращённую в дуино мегу - программатором или чем другим?
вы каким железом заливаете скетч в эту новообращённую в дуино мегу - программатором или чем другим?
Заливаю тем, что у меня описано в первом сообщении темы. А можно ли смело назвать это программатором я не знаю. Но вся схема выглядит вот так(+ кварц на меге8):
если так, то лоадер вам был не нужен - для заливки скетчей у вас есть программатор, фьюзы конфигурировать для кварца 16 мегагерц, с отключенным загрузчиком, скопт можно включить
*стереть камень и перешить фьюзы
В дальнейшем я расчитывал шить микросхему через UART с помощью той же ардвинки(чтоб при надобности не заливать на нее SPI скетч, а просто использовать её как переходник).
С МК я неочень хорошо знаком - первым шагом была ардвинка, вот вторым - мега8. Думаю мне пока рановато лезть в фьюзы. Со временем я обязательно до этого дойду.
В дальнейшем я расчитывал шить микросхему через UART с помощью той же ардвинки(чтоб при надобности не заливать на нее SPI скетч, а просто использовать её как переходник).
тогда шейте через UART - оно ж две большие разницы
С МК я неочень хорошо знаком - первым шагом была ардвинка, вот вторым - мега8. Думаю мне пока рановато лезть в фьюзы. Со временем я обязательно до этого дойду.
дуино и есть ваша мега8-я - хотите с загрузчиком, хотите - без
тогда шейте через UART - оно ж две большие разницы
Считаете что при заливке через UART проблема пропадет? Если так, то обязательно завтра переделаю все соединения, прошью чистый загрузчик, а потом через UART попробую зашить скетч.
дуино и есть ваша мега8-я - хотите с загрузчиком, хотите - без
Да, но прелесть загрузчика в том, что оно делает всю работу за меня. Мне можно не думать что я что-то успорчу.
Считаете что при заливке через UART проблема пропадет? Если так, то обязательно завтра переделаю все соединения, прошью чистый загрузчик, а потом через UART попробую зашить скетч.
попробуйте - или программатром без загрузчика, или с загрузчиком через UART.
Да, но прелесть загрузчика в том, что оно делает всю работу за меня. Мне можно не думать что я что-то успорчу.
превратить контроллер к кирпич можно, ошибочно сконфигурировав фьюзы - прошивка флеша любыми способами безопасна.
попробуйте - или программатром без загрузчика, или с загрузчиком через UART.
А как можно убрать этот самый загрузчик?
А как можно убрать этот самый загрузчик?
сконфигурировать фьюзы "не стартовать загрузчик" и что то прошить - старое сотрётся, новое запишется.
родственная тема http://arduino.ru/forum/obshchii/programirovanie-atmega8-ot-arduino-uno-r3
А как можно убрать этот самый загрузчик?
сконфигурировать фьюзы "не стартовать загрузчик" и что то прошить - старое сотрётся, новое запишется.
родственная тема http://arduino.ru/forum/obshchii/programirovanie-atmega8-ot-arduino-uno-r3
Вроде всё понятно и не такое колючее, как кажется.
Фьюзы выставил так же как и было, только без загрузчика (BOOTRST).
*http://arduino.ru/forum/obshchii/zapretit-skachivanie-programmy-iz-arduino#comment-27493
Почитал как затирать память- все фьюзы считались кроме eFuse - пустое поле, это нормально?
>Почитал как затирать память- все фьюзы считались кроме eFuse - пустое поле, это нормально?
да - нормально, их просто нет в этом камне
*полезное - перед прошивкой чего либо, пробуем считать что-либо с процессора, чисто для проверки связи и обозначения крайнего момента, где мы внезапно потеряли контроллер по ошибке.
Сделал всё по инструкции - первый скетч записался, а вот перепрошить уже не получается - опять проклятая ошибка на проверке появляется. Если стереть чип, а потом попробовать записать скетч - тогда работает.
вы шьёте "Загрузить с помошью программатора" или "Загрузить"?
"Загрузить с помошью программатора" - без загрузчика чистый контроллер.
"Загрузить" - по UART с загрузчиком.
*попытаться понять, что для чего делаем и не путать кнопки
1.Через avrdude провел все действия как было написано. (отключил BOOTRST, стер МК,прошил фюзы,прошил МК hex файлом )
2.Через компилятор Arduino залил скетч кнопкой "Загрузить".
3.Попытался во второй раз перезаписать скетч нажатием той же кнопки "Загрузить" - выбило ошибку.
4.Повторил первый пункт. (Компилятор Arduino больше не трогал.)
5.Повторно попытался залить hex файл в МК через avrdude - выбило ошибку.
Я тут почитал о МК и кажется понял свою ошибку. При прошивании МК его нужно сначала стереть.
После записи загрузчика - первый раз прошивка успешно заливается, потому как память МК разделена на область загрузчика и основной программы и фактически скетч прошивался в свободную память. А на второй попытке писать скетч уже было некуда.
UPD Нашёл пункт "Загрузить с помощью программатора" - всё шьется без проблем. Видимо МК сначала стирается.
считайте фьюзы и опубликуйте сюда - я пока не понимаю, включен или выключен у вас загрузчик
UPD Нашёл пункт "Загрузить с помощью программатора" - всё шьется без проблем. Видимо МК сначала стирается.
UPD Нашёл пункт "Загрузить с помощью программатора" - всё шьется без проблем. Видимо МК сначала стирается.
ну, а я о чём пытаюсь рассказать?
UPD Нашёл пункт "Загрузить с помощью программатора" - всё шьется без проблем. Видимо МК сначала стирается.
ну, а я о чём пытаюсь рассказать?
Ну так я нашел его только после того как Вы упомянули его.
МК не стерается.
Я предположил, что в первом случае он сначала стирается, а потом в него записывается прошивка. В этом случае я не пойму, почему "Загрузить с помощью программатора" оно шьется, а через чистый avrdude оно не хочет, ведь по сути это одно и то же.
UPD. может дело в программаторах, которые выбраны в компиляторе Arduino(AVR ISP) и avrdude(Atmel STK500)?
Хотя да все верно - стирается, причем именно только flash.
Забыл вчера написать. Мега8 успешно шьется через UART.
Спасибо вам, ребята, за помощь и терпение.
Ну она и должна шиться,если загрузчик установлен :)
А резистор этот, или конденсатор нужно к ардуине-программатору цеплять, или у той, где пустой МК стоит?
У меня ничерта не выходит - сигнатуры на нескольких нули, на нескольких ffffffff
Пытаюсь 328 шить - запасные для ардуины uno. купил на dx
Может дело в том, что пустые 20PU вместо просто PU? В чем вообще отличие?