Почему я не могу загрузить скетч, подключившись напрямую к последовательным контактам?

У меня есть несколько поддельных Arduino Nano. Работают нормально, но в качестве эксперимента я попытался запрограммировать их с помощью последовательного USB-адаптера (настоящего FTDI). Это не работает, но также, как ни странно, кажется, что загрузчик тоже не работает должным образом, или просто переводит arduino в режим, в котором устройство /dev/ttyUSB* не отображается, и снова появляется только когда я снова записываю загрузчик

Когда я пытаюсь загрузить скетч с помощью последовательного USB-адаптера, я получаю следующее:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Failed uploading: uploading error: exit status 1

Затем, когда я снова пытаюсь загрузить скетч через USB, /dev/ttyUSB* больше не появляется при подключении кабеля USB к обычному разъему USB.

Однако, когда я все еще могу поставить скетч с помощью встроенного программатора, и когда я использую встроенный программатор для повторной записи загрузчика, появляется /dev/ttyUSB* снова, и я снова могу загружать скетчи через USB.

Возможно ли это? Что я могу сделать не так?

Вот как я подключил USB-адаптер к последовательному порту к поддельной Arduino:

адаптер подключен к поддельной Arduino

(оформить заказ на https://i.stack.imgur.com/nh3d6.jpg, чтобы получить более полное представление )

По сути, я подключил Arduino (левый столбец) к адаптеру USB-последовательному порту в правом столбце:

TX - RX
RX - TX
VIN - VCC
GND - GND
RST - 0.1uF capacitor - DTR

Я пробовал с контактом сброса и без нее.

Адаптер USB-последовательный порт настроен на 5 В.


Еще одна подсказка:

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


Кто-нибудь знает, почему это может происходить?


ОБНОВЛЕНИЕ:

После того, как это было указано, я начал использовать контакт 5v вместо контакта VCC на поддельной Arduino, но то же самое продолжает происходить:

  • записать загрузчик
  • нормальная загрузка через USB работает
  • попробуйте загрузить через последовательный адаптер
  • не работает
  • обычная загрузка через usb больше не работает, пока я снова не запишу загрузчик

, 👍1

Обсуждение

Спасибо. Я соединил два адаптера вместе, чтобы убедиться, что они оба работают, и отправил сообщения в обоих направлениях. Я должен был упомянуть в, @Alex028502

Vin предназначен для входа от 7 до 12 В. подать 5 В через контакт 5 В. DTR может не работать, поэтому попробуйте выполнить сброс вручную, пока avrdude пытается загрузить, @Juraj

Похоже, вы подключили выход 5 В адаптера FTDI к контакту Vin Nano. Вместо этого вы должны использовать контакт 5 В Nano, чтобы избежать прохождения через внутренний регулятор напряжения. Вы также знаете, что если вы используете контакты ICSP для загрузки скетча в Nano, это перезаписывает загрузчик?, @6v6gt

Да, я изменил питание на контакт 5 В, так как @Juraj указал на это, и получил тот же результат. Да, я каждый раз прожигал загрузчик, используя контакты ICSP. Только так я смог исправить обычную загрузку. Как только я исправлю загрузчик, я могу загружать скетчи, пока не попытаюсь загрузить с помощью последовательного адаптера, и тогда загрузчик, похоже, перестанет работать., @Alex028502

Я заказал настоящую Arduino Nano, так что я попробую с ней, как только она будет здесь, чтобы попытаться сосредоточиться на проблеме., @Alex028502

Оказывается, у меня была такая проблема https://askubuntu.com/questions/1403705/dev-ttyusb0-not-present-in-ubuntu-22-04. если у кого-то есть подобная проблема (поддельный Arduino, который продолжает исчезать), попробуйте sudo apt-get Remove Brltty прежде всего. Я не уверен, было ли это основной проблемой или просто мешало разобраться в основной проблеме., @Alex028502


2 ответа


-1

Похоже, загрузчик не поддерживает последовательное программирование. Вам нужно будет изменить это в первую очередь. Скорость передачи такая же?

,

он работает через USB, а USB-чип подключается к тому же RX/TX, что и контакты заголовка RX/TX., @Juraj


1

Хорошо, это была комбинация как минимум двух вещей:


Основная проблема:

Подключение поддельного вывода RST Arduino к выводу DTR FTDI через конденсатор 0,1 мкФ, похоже, останавливает его загрузку при ручном сбросе. Кроме того, когда я удаляю его, похоже, он не сразу исправляется, если вы можете в это поверить.


Отвлекающий маневр

Это не было прямой причиной этой проблемы, но, вероятно, это большая проблема для многих других поддельных Arduino:

Когда я вернулся к встроенному USB, правила udev brltty требовали CH341, как описано здесь https://askubuntu.com/questions/1403705/dev-ttyusb0-not-present-in-ubuntu-22-04

Итак, если у вас есть более простая проблема: не появляется поддельный Arduino, это может решить проблему для вас:

sudo apt-get remove brltty

или, если вам нужен brltty, вы можете просто зайти в прилагаемые к нему правила udev и закомментировать это:

# Device: 1A86:7523
# Baum [NLS eReader Zoomax (20 cells)]
ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"

(если это не программа чтения с экрана, которую вы используете — возможно, вам просто придется купить настоящий Arduino или создать более совершенные правила udev, которые распознают вашу программу чтения с экрана по порту, к которому она подключена)

Причина, по которой меня это смутило, заключается в том, что когда я попытался подключиться к стандартному порту USB после того, как не смог использовать программатор, приведенные выше правила udev выгнали меня. Но потом я думаю, что когда я сжег новый загрузчик, потому что вам все равно придется запитывать плату от USB, пока подключена пололу, мне удалось подключить ее без того, чтобы указанное выше правило udev ее пинало - и затем, когда я снова попробовал внешний FTDI , а затем снова подключил внутренний CH341, правило brltty udev заявило об этом, и похоже, что попытка загрузки через FTDI и нарушила его.

,

не возникнет ли у вас такой же проблемы с загрузкой через встроенный FTDI? как это связано с использованием внешнего FTDI на выводе RX.TX?, @Juraj

да - это хороший момент. Я не совсем понял это. Я думаю, что либо это была единственная проблема, и я совершенно неверно ее истолковал, либо была еще одна проблема, но наличие этой проблемы в то же время затрудняло ее понимание., @Alex028502

Я обновил ответ @Juraj. Непосредственной причиной была попытка автоматического сброса, которую вы также предложили мне прекратить, а проблема с udev CH431 просто отвлекла меня от понимания сути, поскольку я не мог проверить, работает ли Arduino вообще., @Alex028502