Arduino не распознает внешний микроконтроллер

Я пытался следовать официальным инструкциям Arduino по программированию и питание внешнего макета, и я получил пакет ATmega328p, который может быть или не быть предварительно загруженным с загрузчиком (найдено здесь). Из названия я предположил, что они были на самом деле предварительно загружены, но я следовал инструкциям, чтобы «перезагрузить их». от работающего Arduino (с его оригинальным микроконтроллером), и я сделал это со следующей настройкой схемы (это лучшее изображение, которое у меня есть, к сожалению, я обещаю, что проверил, что проводка действительно эквивалентна исходной схеме , просто переставленный для удобства на макетной плате):

Я не уверен, стоило ли мне оставить исходный микроконтроллер, поскольку в руководстве неоднозначно показан пробел в той области, где должен быть контроллер на представленной схеме...

... но я думал, что Arduino в принципе ничего не представляет без подключенного к нему микроконтроллера, поэтому попытка "отправить" код загрузчика на отдельный микроконтроллер потребовал бы подключенного микроконтроллера, и это был единственный способ заставить его работать.

Со всей этой настройкой я попытался протестировать этот новый микроконтроллер, и он отлично работал, когда был установлен в предусмотренной области микроконтроллера. Однако, когда я попытался выполнить это с помощью шагов, подробно описанных в руководстве, arduino-board">найден здесь со следующей схемой (чуть лучше угол):

...Я столкнулся с ошибками, связанными с невозможностью подключения.

Насколько я понимаю, похоже, что Arduino должна автоматически обнаруживать, что микроконтроллер не подключен, что позволяет заявленному «чипу FTDI вместо этого взаимодействовать с микроконтроллером на макетной плате»; от гида. Однако ошибка, которую я получаю, кажется такой же, как ошибка, которую я получил, когда просто пытался отправить код или программу без подключенного микроконтроллера, поэтому я предполагаю, что это означает, что он не может найти ни один микроконтроллер. внутренний или автономный.

Погуглив эту ошибку, я понял, что у других эта проблема не была решена, и я совершенно не представляю, как это исправить. Если я что-то упустил, буду очень признателен за помощь.

примечание: когда я лениво тестировал программу с крошечной тестовой схемой, которая зажигает светодиод, после программирования ее с помощью программы, которая включает контакт GPIO, подключив этот контакт к светодиоду, он действительно загорелся вверх. Я пришел к выводу, что это означает, что установка фактического микроконтроллера работает, но в нее нельзя записать. это также произошло с исходным микроконтроллером, который я пытался просто запрограммировать извне.

любая помощь приветствуется, спасибо за чтение!

, 👍0

Обсуждение

Если вы смогли установить новый чип MCU в свой Uno, и он работает, скажем, вы можете загрузить скетч, то у него есть загрузчик. Понятно, что чип должен присутствовать в Uno, когда Uno используется для записи загрузчика на другой чип, потому что Uno должен запускать скетч ISP. Что касается второй части, то есть загрузки скетча в микросхему на макетной плате, тщательно проверьте проводку между TX, RX и Reset на Uno и макетной плате. Это выглядит неправильно, но это может быть качество изображения. Для этой части правильно, что Uno не имеет чипа MCU., @6v6gt

Просто чтобы исключить переменные, я бы не стал так откладывать кристалл от чипа. Вы можете наклонить этот кристалл примерно под 45 градусов, подключив кристалл непосредственно к тем же точкам связи макета, к которым идут контакты, связанные с кристаллом MCU. Затем ваши ограничения нагрузки могут соединить те же самые точки привязки с ближайшей наземной шиной. В конце концов, у вас есть перемычки, задействованные в чисто кварцевой части схемы. Меньше дерьма, чтобы пойти не так. Или, что еще хуже, время от времени ошибаться, пока вы устраняете неполадки., @timemage

Не могли бы вы посмотреть [мою страницу об обнаружении сигнатур чипов] (http://www.gammon.com.au/forum/?id=11633). Используя свой Uno и 6 проводов (MOSI, MISO, SCK, SS, 5V, Gnd) можно посмотреть, распознает ли он вообще чип, и если да, то есть ли на нем загрузчик, а также настройки фьюза. Пожалуйста, отредактируйте свой вопрос с результатами этого., @Nick Gammon

Также см. [мою страницу о макетных платах Arduinos] (http://www.gammon.com.au/breadboard), где описывается что-то очень похожее на то, что вы пытаетесь сделать., @Nick Gammon

извиняюсь за поздние ответы, добрались до этого! @ 6v6gt, я не включил сброс, так как решил, что мне не нужно использовать сброс (просто перезапустил код, если мне нужен сброс). постараюсь добавить это через некоторое время, я вполне уверен, что TX/RX правильный, но попробую это через некоторое время, @Daneolog

@timemage Понятно, я приму это во внимание, но на самом деле я не планирую монтировать его на макетную плату в течение длительного периода времени, просто в качестве среды тестирования, прежде чем я фактически монтирую его на перфорированную плату (perma-proto ), @Daneolog

@NickGammon проверит это, когда я вернусь к этому в следующий раз, очень признателен! Честно говоря, у меня возникли проблемы с поиском хороших ресурсов по макетной плате Arduino, так как я чувствую, что это должна быть действительно простая и хорошо задокументированная проблема, но все просто игнорируют ее, поэтому очень полезно увидеть руководство!, @Daneolog

Вторая ссылка NickGammon показывает расположение кристаллов, которое я описывал. И я предполагаю, что это, возможно, стоит сделать сейчас (независимо от того, насколько временна ваша установка) _потому что у вас возникли проблемы., @timemage

отлично, поэтому я только что перепроверил свою работу со схемой, и, как оказалось, проблема, похоже, заключалась только в том, что у меня не был подключен Reset, как упоминал @ 6v6gt. Я не понимал, что это могло все сломать, поэтому я буду очень осторожен при размещении этого на реальной перфоборде. если вы хотите написать ответ на это, я абсолютно согласен! высоко ценится :D, @Daneolog

Ты как-то не очень. Все, что имеет значение для optiboot, это то, что происходит внешний сброс. Достаточно мгновенно сбросить землю примерно за 1,3 секунды до того, как avrdude предпримет попытку программирования, что он делает неоднократно, что приводит к значительному сокращению времени. Механизм автоматического сброса последовательного DTR хорош, но вам не нужно его использовать. Нередко просто использовать перемычку на мгновение от земли для сброса или полностью удалить ее с платы после сброса, что делает ее отсутствие на картинке не особенно окончательным., @timemage


1 ответ


Лучший ответ:

1

В случае использования Arduino в качестве адаптера USB/UART (FTDI) для загрузки скетча на базовую версию Arduino (ATMEGA328P) через собственный загрузчик, сброс этого чипа MCU должен предшествовать загрузке скетча. Это связано с тем, что сразу после сброса загрузчик отслеживает последовательный трафик, чтобы увидеть, помечен ли он как загрузка скетча, и если да, то обрабатывает его. Если эта операция сброса завершится неудачно, например, из-за плохого или отсутствующего соединения, попытка загрузки скетча также не удастся. Хорошее описание процесса загрузки скетча можно найти здесь: https://www. .instructables.com/Overview-the-Arduino-sketch-uploading-process-and-/

,

это имеет большой смысл! спасибо за объяснение причины этого, было очень любопытно, почему он не мог просто отправить сигнал сброса через TX / RX, лол, @Daneolog