Как установить новую прошивку ATmega через контакты ISP?

При загрузке прошивки .hex непосредственно на платы, которые позволяют это делать через CURA, это не всегда возможно для всех машин (например, из-за отсутствия функционирующего порта, подключаемого через USB).

Как на моей плате TronXY X1 (Melzi 2.0 V5 с ATMEGA1284P), так и на Creality Ender 3 (Creality 3D v.1.1. 2 с Δ ATMEL ATMEGA1284P AU 1726) Я заметил эти 6 контактов с надписью ISP, которые должны позволять подключать Arduino или аналогичную прошивку для флэш-памяти. Согласно вики-сайту RepRap, Melzi является производным от Sanguinololu, и оба они совместимы с Sanguino.

После создания новой прошивки в Arduino IDE и проверки ее компиляции для правильного чипа на плате, как я могу использовать Arduino Uno или другой микроконтроллер для прошивки новой прошивки через ISP на мой принтер?

Это касается конкретно плат контроллеров на базе ATmega, использующих набор инструментов Arduino.

, 👍4

Обсуждение

Не все принтеры созданы одинаковыми. Процесс будет сильно отличаться для платы, основанной, скажем, на ATmega2560, чем для платы, основанной на Cortex M3. Это также зависит от того, какой (если таковой имеется) загрузчик присутствует на плате. Я думаю, что вопрос слишком широк в его нынешнем состоянии., @Tom van der Zanden

@TomvanderZanden верно, это подразумевается как общий "У меня есть принтер, и мне удалось скомпилировать встроенное ПО - как я могу загрузить его на принтер? У меня есть этот другой микроконтроллер". Если вы можете добавить что - то к вопросу или повторить его в лучшей форме, не стесняйтесь это делать-нам в значительной степени нужно ответить на эти основные вопросы, чтобы быстрее ответить на более сложные ответы, связав их., @Trish

На этот вопрос не существует универсального ответа. Было бы гораздо лучше иметь отдельные вопросы для отдельных типов досок, потому что один ответ не может охватить все возможные сценарии, которые вы себе представляете. Имейте в виду, что [вы должны задавать только практические, отвечающие на вопросы вопросы, основанные на *реальных проблемах, с которыми вы сталкиваетесь*](https://3dprinting.stackexchange.com/help/dont-ask). На самом деле вы не сталкиваетесь с проблемой наличия платы, которую вы не можете загрузить с помощью Cura., @Tom van der Zanden

@TomvanderZanden Я знаю, что это должно работать, но я не понимаю, почему это должно быть лучше, чем, например, прямая загрузка через CURA или другой метод отправки скомпилированного .hex на плату... В конце концов, вам нужно *открыть свою машину*... Но это довольно универсальное решение и будет работать практически для любой машины - даже для тех, у которых нет возможности подключить ее к ПК, например, если USB-порт был сломан., @Trish

@TomvanderZanden - ATmega на контроллере Ender-3 не имеет загрузчика, по-видимому, в соответствии с [Унифицированным пакетом прошивки TH3D](https://www.th3dstudio.com/knowledge-base/th3d-unified-firmware/): *Принтерам CR-10, Ender 2 и Ender 3 требуется загрузчик. Вам нужно будет следовать руководству по загрузчику CR-10, чтобы прошить его, прежде чем вы сможете загрузить встроенное ПО. Вы можете использовать наш [комплект Uno](https://www.th3dstudio.com/product/arduino-uno-bootloader-flashing-kit/) чтобы запустить загрузчик на вашей плате.* Комплект Uno - это интернет-провайдер., @Greenonline


1 ответ


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

7

Учитывая платы контроллеров на основе AVR...

Возможно, вам не понадобится дополнительный Arduino, чтобы выполнять функции ISP. Это действительно зависит от правления. В основном существует три сценария:

  1. Плата контроллера на базе Arduino - Arduino Mega 2560 с рампой 1.4 - с загрузчиком
  2. Плата контроллера на базе Arduino - Arduino Mega 2560 с рампой 1.4 - без загрузчика
  3. Плата контроллера, которая является платой на основе AVR (без отдельной платы Arduino) - как в случае с Ender-3 и платой TronXY1 - без загрузчика

Вариант 1 самый простой, и вы просто загружаете его с помощью USB-кабеля непосредственно из среды Arduino IDE.

Варианты 2 и 3-это то, где вам потребуется встроенный последовательный программатор (ISP). Например, USBasp: USBasp - USB-программатор для контроллеров Atmel AVR

USBasp

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

Устройство ISP в основном преобразует сигналы USB в TTL (вместе с последовательным протоколом (JTAG или производным)) который затем подключается к интерфейсу ICSP2 на плате контроллера:

ICSP connector

Сценарий 1

Как указано выше, вы просто подключаете плату к ПК/Mac с помощью USB - кабеля и в среде IDE Arduino нажимаете "Загрузить", гарантируя, что у вас есть правильная плата (т. е. Mega2560) и порт, выбранный в меню "Сервис".

Сценарий 2

Для Mega2560 выводами, на которые выводятся MOSI, MISO и SCK, являются:

Arduino / Genuino Board    MOSI            MISO             SCK       Level
Mega1280 or Mega2560    51 or ICSP-4    50 or ICSP-1    52 or ICSP-3    5V

Чтобы запрограммировать Mega2560 с помощью Uno, подключитесь следующим образом:

Uno as ISP programming Mega

или с помощью разъема ISP (на этой схеме электролитический конденсатор3 не показан):

Uno as ISP programming Mega via ICSP connector

Обратите внимание на электролитический конденсатор3 на программирующем устройстве:

Электролитический конденсатор емкостью 10 мкФ, подключенный для СБРОСА и GND платы программирования необходим только для плат, которые имеют интерфейс между микроконтроллером и USB компьютера, например Мега, Уно, Мини, Нано. Таким платам, как Leonardo, Esplora и Micro, с USB-интерфейсом, напрямую управляемым микроконтроллером, конденсатор не нужен .

или с помощью разъема ICSP Mega от программатора загрузчика Atmega (см. исходное изображение):

Uno programming a Mega

Примечание Используется D10, а не СБРОС4

Сценарий 3

Итак, чтобы использовать Arduino Uno на вашей плате контроллера, что соответствует сценарию 3 (плата на основе AVR, но не плата Arduino как таковая), вам нужно будет подключить Uno к ICSP платы контроллера следующим образом:

ICSP     Uno

MOSI     D11
MISO     D12
SCK      D13
GND      GND
5V       5V
RESET    D10

или, как это, из Chaos Drucker - CREALITY ENDER3 MIT MARLIN AUSSTATTEN (см. Оригинальное изображение):

На изображении есть ошибка, и красная линия должна идти к D10, а не к D9, как показано на рисунке

Uno to controller board connections

Еще раз обратите внимание, что сброс на разъеме ISP Arduino Uno не используется (и вместо этого для подключения к выводу СБРОСА ICSP контроллера используется вывод 10)4.

Настройка среды разработки Arduino IDE

Затем в среде IDE Arduino вам нужно будет выбрать программатор, который будет использоваться, в данном случае Uno в качестве ISP, например:

Uno as an ISP

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


Сноски

1, Которые оба используют одну и ту же плату - см. Этот ответ, при каком напряжении работает устройство Creality Ender-3?

2 В случае, если вам интересно, посмотрите, в чем разница между ICSP и ISP?:

Разница между ISP и ICSP заключается в дефисе.

ISP означает Последовательное программирование в цепи, а ICSP - последовательное программирование в цепи.

Любая схема, позволяющая программировать микроконтроллер, пока он находится в цепи, используя последовательный протокол, может называться ISP или ICSP.

См. также Википедию - Внутрисистемное программирование.

3 См. При использовании Arduino в качестве ISP требуется конденсатор или нет?

4 Почему? Из Может ли Arduino Uno стать программатором AVR и использовать заголовок ICSP для программирования целевой платы:

Во-первых, как указано в конфигурации, вывод СБРОСА не может использоваться в качестве выходного вывода. Чтобы использовать его в качестве вывода ввода-вывода, вам придется запрограммировать предохранитель RSTDISBL. Но как только вы это сделаете, как сказала Джиппи, перепрограммировать ваш Arduino станет практически невозможно (если у вас есть множество встроенных микроконтроллеров с отверстиями, вы можете вытащить его и вставить в программатор высокого напряжения; во всех остальных случаях это практически невозможно).

Таким образом, теоретически вы можете использовать заголовок ICSP так, как вы предлагаете. На практике это почти при любых мыслимых обстоятельствах ужасная идея.


,

большое спасибо - также я предлагаю повесить записку с напоминанием ПРОВЕРИТЬ ВАШИ СОЕДИНИТЕЛЬНЫЕ ПРОВОДА на случай, если возникнет какая-то странная ошибка., @Trish