Перейти к содержанию

Avrdude Target Doesn't Answer


vis-vetal

Рекомендуемые сообщения

Здравствуйте уважаемые форумчане. Столкнулся со следующей проблемой: захотелось мне прошить ATmega640 через AVRdude(программатор USBasp). Подключил и прочитал память, всё считалось, dude мне написал :

avrdude: safemode: lfuse changed! Was 62, and is now 0
Would you like this fuse to be changed back? [y/n]

я подтвердил, а после этого контроллер не находится и ни на что не реагирует. Теперь пишет:

avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
		 Double check connections and try again, or use -F to override
		 this check.

а если добавить -F:

avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes! Invalid device signature.
avrdude.exe: Expected signature for ATMEGA640 is 1E 96 08

Два раз прозвонил макетку, проверил напряжение. Подскажите, пожалуйста, что ещё проверить, что попробовать.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Оно написало что lfuse сбросился до 0. Либо во время программирования произошел сбой, либо еще что. И предложило это исправить. Если там и вправду 0, то микросхема перешла на внешнее тактирование. Тут можно либо на фуздокторе/параллельном программаторе, либо подать на XTAL1 меандр 1-10 МГц.

Другой вариант - сбой в программаторе, может где контакт отошел или МК не запускается как надо. Это хуже, но пляски с бубном могут помочь.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

И в чем было дело, неужели тактирование сбросилось?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Да, AVRdude перевёл контроллер в режим тактирования от внешнего генератора, и конечно же потерял его. Так что теперь впредь подобного не случилось, я перешел на eXtreme Burner.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Товарищи, у меня, кажется, такая же ситуация. Пытался перепрошить аппаратуру Turnigy 9x (atmega64a) с помощью программатора USBAsp и программы eePe.

Прошивка записалась в устройство, а после чтения (проверки того, что записано) вышла ошибка:

436982_help.jpg

Теперь аппаратура не подает признаков жизни и перепрошиваться тоже не хочет:

436984_help2.jpg

Несмотря на то, что решение проблемы вроде как уже было озвучено в теме, мне (как полному дилетанту, случайно оказавшемуся в этих страшных дебрях) трудно понять, что и как непосредственно нужно сделать, дабы оживить устройство. Если не затруднит - пожалуйста, объясните мне как можно доступнее, как запустить/восстановить это тактирование, чтобы девайс хотя бы начал определяться программой eePe (или чем-то другим, более безопасным).

Спасибо заранее!

PS Вот нашел pdf-инструкцию по реанимации моей аппаратуры в такой же (или похожей) ситуации - буду рад, если кто-нибудь поможет перевести ключевые моменты с англо-технического на доступный простому смертному язык.

Изменено пользователем UFO747
Ссылка на комментарий
Поделиться на другие сайты

Сделайте простейший генератор на TTL логике (4МГц) или возьмите кварцевый генератор (как указан в pdf-ке). Подключите его в плату (точки подключения указаны) и пробуйте. Придется восстанавливать фьюзы

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

возьмите кварцевый генератор (как указан в pdf-ке). Подключите его в плату (точки подключения указаны) и пробуйте. Придется восстанавливать фьюзы

Кварцевый генератор подключил - теперь компьютер видит аппаратуру. А как задать фьюзы? Т.е. где их непосредственно вписать в eePe?

Ссылка на комментарий
Поделиться на другие сайты

avrdude <...> -U hfuse:r:hfuse.txt:m , где

avrdude - программа

<...> -описание контроллера, программатора, протокола, может чего еще

-U - команда общения с контроллером

hfuse - старший байт фузов. Если нужно читать младший или дополнительный - lfuse и efuse

r - чтение. Для записи - w, для проверки - v

hfuse.txt - файл, куда будет сохранено

m - формат представления просто числом; для прошивок (*.hex) используется i (intel hex)

: - разделитель аргументов

Сначала лучше считать фузы, которые оказались в контроллере, в основном чтобы проверить прямые они или обратные, по SPIen и RSTdisable (не смотрел есть ли они в данном контроллере). Потом аналогично прошить

avrdude <...> -U lfuse:w:0xXX:m, где 0хХХ - шестнадцатеричное представление желаемых фузов (см. даташит или калькулятор фузов)

Например я пользуюсь такой командой для прошивки ATtiny85, правда там флеш а не фузы

avrdude -c stk500v2 -P avrdoper -p t85 -U flash:w:firmware.hex:i

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

считывать лучше тем же чем и программировать, именно потому что в разных программах разное понятие об установленных битах (0 или 1)

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

В плане наглядности согласен, avrdude не идеальна, зато кроссплатформенная и поддерживает кучу программаторов (для меня критично avrdoper-hid и кроссплатформенность), для прошивки можно написать скрипт, даже удобнее будет а фузы не так часто меняются. Просто из картинок я понял что avrdude у автора есть а вот про другие не известно.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Бред какой. Они в ИИП  работают в аналоговом режиме, через ФНЧ. Ну и в даташит вам не мешает заглянуть.
    • Возможно, во входных блоках пропал контакт с общим проводом. Если гудения нет при нулевой громкости, то проблема до регулятора громкости.
    • я бы по первости, - присоединил (поменял ) блоки питания у разных аппаратов... проверил БП 2 - далее присоединил бы (поменял) усилители у разных аппаратов...проверил усилители - Ремонтировать аппарат не видя его,- то ещё удовольствие...
    • Может подключить что-нибудь надо. Может написать свою функцию преобразования шестнадцатеричной строки в инт.
    • Да ну нафиг! Это как "раз поехали на рыбалку, а водку забыли...."
    • Похоже вас угораздило на латералы попасть. Они сами себя стабилизируют и никакой дополнительной стабилизации им не нужно. У меня двухкиловаттные Крафты так на металлических Эксиконах работают даже без "эмиттерных" резисторов. Тупо впараллель.
    • @korsaj Попробовал записать код в разных вариантах предложенных тобой. Первый вариант вообще отказался работать. Заработал второй вариант на приём. Теперь уже хотя бы есть полноценный приём. char i = 0; if (rx_buf[i] == 'M'){ i++; if (rx_buf[i] == '1') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран номер текущего трека LED_1_ON(); LED_2_OFF(); send_UART('M'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == '2') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран количество треков LED_1_OFF(); LED_2_ON(); send_UART('M'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'T') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран общее время трека LED_1_ON(); LED_2_ON(); send_UART('M'); send_UART('T'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'K') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран текущее время трека LED_1_OFF(); LED_2_OFF(); send_UART('M'); send_UART('K'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } } Но однако есть ещё некоторые вещи которые нужно подкорректировать. Пока я просто разбираю UART поэтому на терминал вывожу так сказать ответ ну и просто видеть потому как индикатора к микре не подключено пока что. Однако такой вариант с ответкой нужен будет мне и для другого проекта где UART лучше всего подойдёт. Это я уже смотрю на будущее. Но тут тоже когда приходит комманда по  UART микроконтроллер отправляет ответ, но он начинает постоянно спамится. Нужно как то сделать чтоб этого не происходило. Я же в свою очередь пробовать сбросить flags = 0;, но это никак не помогло. Может чего подскажешь тут понятно что нужно как то будет обнулить данные чтобы выйти из этого условия программы. Есть вот такая проблемка. И ещё есть одна проблема с строкой  unsigned int n = getDecFromHexStr(rx_buf, i+2); Не спроста я её отключил в коде с помощью комментария. А тут проблема в том что студия не может опзнать этот код. Возможно нужно что подключить из встроенных библиотек самой студии.
×
×
  • Создать...